warchron_app/src/warchron/model/round.py

50 lines
1.7 KiB
Python
Raw Normal View History

2026-01-30 10:52:19 +01:00
from __future__ import annotations
2026-01-21 07:43:04 +01:00
from uuid import uuid4
2026-01-19 18:55:07 +01:00
class Round:
2026-01-21 07:43:04 +01:00
def __init__(self):
self.id: str = str(uuid4())
2026-01-30 10:52:19 +01:00
self.choices: dict[str, RoundChoice] = {}
2026-01-19 18:55:07 +01:00
self.battles = {}
self.is_over: bool = False
2026-01-19 18:55:07 +01:00
def set_id(self, new_id: str):
2026-01-21 07:43:04 +01:00
self.id = new_id
2026-01-19 18:55:07 +01:00
def set_state(self, new_state: bool):
2026-01-19 18:55:07 +01:00
self.is_over = new_state
2026-01-30 10:52:19 +01:00
def set_choice(self, participant_id: str, priority_sector_id: str | None, secondary_sector_id: str | None):
self.choices[participant_id] = RoundChoice(participant_id, priority_sector_id, secondary_sector_id)
2026-01-19 18:55:07 +01:00
def toDict(self):
return {
2026-01-21 08:31:48 +01:00
"id": self.id,
# "sectors" : self.sectors,
# "choices" : self.choices,
# "battles" : self.battles,
2026-01-19 18:55:07 +01:00
"is_over": self.is_over
}
@staticmethod
2026-01-21 08:31:48 +01:00
def fromDict(data: dict):
rnd = Round()
rnd.set_id(data["id"])
# rnd.sectors = data.get("sectors", {})
# rnd.choices = data.get("choices", {})
# rnd.battles = data.get("battles", {})
rnd.set_state(data.get("is_over", False))
2026-01-30 10:52:19 +01:00
return rnd
# Choices methods
def get_choice(self, participant_id: str) -> RoundChoice | None:
return self.choices.get(participant_id)
class RoundChoice:
def __init__(self, participant_id: str, priority_sector_id: str | None = None, secondary_sector_id: str | None = None):
self.participant_id: str = participant_id # ref to Campaign.participants
self.priority_sector_id: str | None = priority_sector_id # ref to Campaign.sectors
self.secondary_sector_id: str | None = secondary_sector_id # ref to Campaign.sectors