save/load participants, objectives, sectors, choices & battles
This commit is contained in:
parent
7fbdacf97c
commit
6cd3a060c7
9 changed files with 152 additions and 11 deletions
|
|
@ -1,3 +1,7 @@
|
|||
from __future__ import annotations
|
||||
from typing import Any, Dict
|
||||
|
||||
|
||||
class Battle:
|
||||
def __init__(
|
||||
self,
|
||||
|
|
@ -33,3 +37,27 @@ class Battle:
|
|||
|
||||
def set_comment(self, new_comment: str | None) -> None:
|
||||
self.comment = new_comment
|
||||
|
||||
def toDict(self) -> Dict[str, Any]:
|
||||
return {
|
||||
"sector_id": self.sector_id,
|
||||
"player_1_id": self.player_1_id,
|
||||
"player_2_id": self.player_2_id,
|
||||
"winner_id": self.winner_id,
|
||||
"score": self.score,
|
||||
"victory_condition": self.victory_condition,
|
||||
"comment": self.comment,
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def fromDict(data: Dict[str, Any]) -> Battle:
|
||||
battle = Battle(
|
||||
data["sector_id"],
|
||||
data.get("player_1_id"),
|
||||
data.get("player_2_id"),
|
||||
)
|
||||
battle.winner_id = data.get("winner_id")
|
||||
battle.score = data.get("score")
|
||||
battle.victory_condition = data.get("victory_condition")
|
||||
battle.comment = data.get("comment")
|
||||
return battle
|
||||
|
|
|
|||
|
|
@ -40,7 +40,8 @@ class Campaign:
|
|||
"id": self.id,
|
||||
"name": self.name,
|
||||
"month": self.month,
|
||||
# "participants" : self.participants,
|
||||
"participants": [p.toDict() for p in self.participants.values()],
|
||||
"sectors": [s.toDict() for s in self.sectors.values()],
|
||||
"rounds": [rnd.toDict() for rnd in self.rounds],
|
||||
"is_over": self.is_over,
|
||||
}
|
||||
|
|
@ -49,7 +50,12 @@ class Campaign:
|
|||
def fromDict(data: Dict[str, Any]) -> Campaign:
|
||||
camp = Campaign(name=data["name"], month=data["month"])
|
||||
camp.set_id(data["id"])
|
||||
# camp.participants = data.get("participants", {})
|
||||
for p in data.get("participants", []):
|
||||
part = CampaignParticipant.fromDict(p)
|
||||
camp.participants[part.id] = part
|
||||
for s in data.get("sectors", []):
|
||||
sec = Sector.fromDict(s)
|
||||
camp.sectors[sec.id] = sec
|
||||
for rnd_data in data.get("rounds", []):
|
||||
camp.rounds.append(Round.fromDict(rnd_data))
|
||||
camp.set_state(data.get("is_over", False))
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
from __future__ import annotations
|
||||
from typing import Any, Dict
|
||||
from uuid import uuid4
|
||||
|
||||
|
||||
|
|
@ -22,3 +23,21 @@ class CampaignParticipant:
|
|||
|
||||
def set_theme(self, new_theme: str) -> None:
|
||||
self.theme = new_theme
|
||||
|
||||
def toDict(self) -> Dict[str, Any]:
|
||||
return {
|
||||
"id": self.id,
|
||||
"war_participant_id": self.war_participant_id,
|
||||
"leader": self.leader,
|
||||
"theme": self.theme,
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def fromDict(data: Dict[str, Any]) -> CampaignParticipant:
|
||||
part = CampaignParticipant(
|
||||
war_participant_id=data["war_participant_id"],
|
||||
leader=data.get("leader"),
|
||||
theme=data.get("theme"),
|
||||
)
|
||||
part.set_id(data["id"])
|
||||
return part
|
||||
|
|
|
|||
|
|
@ -1,3 +1,7 @@
|
|||
from __future__ import annotations
|
||||
from typing import Any, Dict
|
||||
|
||||
|
||||
class Choice:
|
||||
def __init__(
|
||||
self,
|
||||
|
|
@ -25,3 +29,21 @@ class Choice:
|
|||
|
||||
def set_comment(self, new_comment: str | None) -> None:
|
||||
self.comment = new_comment
|
||||
|
||||
def toDict(self) -> Dict[str, Any]:
|
||||
return {
|
||||
"participant_id": self.participant_id,
|
||||
"priority_sector_id": self.priority_sector_id,
|
||||
"secondary_sector_id": self.secondary_sector_id,
|
||||
"comment": self.comment,
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def fromDict(data: Dict[str, Any]) -> Choice:
|
||||
choice = Choice(
|
||||
data["participant_id"],
|
||||
data.get("priority_sector_id"),
|
||||
data.get("secondary_sector_id"),
|
||||
)
|
||||
choice.comment = data.get("comment")
|
||||
return choice
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
from __future__ import annotations
|
||||
from typing import Any, Dict
|
||||
from uuid import uuid4
|
||||
|
||||
|
||||
|
|
@ -16,3 +17,16 @@ class Objective:
|
|||
|
||||
def set_description(self, new_description: str) -> None:
|
||||
self.description = new_description
|
||||
|
||||
def toDict(self) -> Dict[str, Any]:
|
||||
return {
|
||||
"id": self.id,
|
||||
"name": self.name,
|
||||
"description": self.description,
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def fromDict(data: Dict[str, Any]) -> Objective:
|
||||
obj = Objective(data["name"], data["description"])
|
||||
obj.set_id(data["id"])
|
||||
return obj
|
||||
|
|
|
|||
|
|
@ -22,9 +22,8 @@ class Round:
|
|||
def toDict(self) -> Dict[str, Any]:
|
||||
return {
|
||||
"id": self.id,
|
||||
# "sectors" : self.sectors,
|
||||
# "choices" : self.choices,
|
||||
# "battles" : self.battles,
|
||||
"choices": [c.toDict() for c in self.choices.values()],
|
||||
"battles": [b.toDict() for b in self.battles.values()],
|
||||
"is_over": self.is_over,
|
||||
}
|
||||
|
||||
|
|
@ -32,9 +31,12 @@ class Round:
|
|||
def fromDict(data: Dict[str, Any]) -> Round:
|
||||
rnd = Round()
|
||||
rnd.set_id(data["id"])
|
||||
# rnd.sectors = data.get("sectors", {})
|
||||
# rnd.choices = data.get("choices", {})
|
||||
# rnd.battles = data.get("battles", {})
|
||||
for c in data.get("choices", []):
|
||||
choice = Choice.fromDict(c)
|
||||
rnd.choices[choice.participant_id] = choice
|
||||
for b in data.get("battles", []):
|
||||
battle = Battle.fromDict(b)
|
||||
rnd.battles[battle.sector_id] = battle
|
||||
rnd.set_state(data.get("is_over", False))
|
||||
return rnd
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
from __future__ import annotations
|
||||
from typing import Any, Dict
|
||||
from uuid import uuid4
|
||||
|
||||
|
||||
|
|
@ -37,3 +38,29 @@ class Sector:
|
|||
|
||||
def set_influence(self, new_influence_id: str) -> None:
|
||||
self.influence_objective_id = new_influence_id
|
||||
|
||||
def toDict(self) -> Dict[str, Any]:
|
||||
return {
|
||||
"id": self.id,
|
||||
"name": self.name,
|
||||
"round_id": self.round_id,
|
||||
"major_objective_id": self.major_objective_id,
|
||||
"minor_objective_id": self.minor_objective_id,
|
||||
"influence_objective_id": self.influence_objective_id,
|
||||
"mission": self.mission,
|
||||
"description": self.description,
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def fromDict(data: Dict[str, Any]) -> Sector:
|
||||
sec = Sector(
|
||||
data["name"],
|
||||
data["round_id"],
|
||||
data.get("major_objective_id"),
|
||||
data.get("minor_objective_id"),
|
||||
data.get("influence_objective_id"),
|
||||
)
|
||||
sec.set_id(data["id"])
|
||||
sec.mission = data.get("mission")
|
||||
sec.description = data.get("description")
|
||||
return sec
|
||||
|
|
|
|||
|
|
@ -41,7 +41,8 @@ class War:
|
|||
"id": self.id,
|
||||
"name": self.name,
|
||||
"year": self.year,
|
||||
# "participants" : self.participants,
|
||||
"participants": [part.toDict() for part in self.participants.values()],
|
||||
"objectives": [obj.toDict() for obj in self.objectives.values()],
|
||||
"campaigns": [camp.toDict() for camp in self.campaigns],
|
||||
"is_over": self.is_over,
|
||||
}
|
||||
|
|
@ -50,7 +51,12 @@ class War:
|
|||
def fromDict(data: Dict[str, Any]) -> War:
|
||||
war = War(name=data["name"], year=data["year"])
|
||||
war.set_id(data["id"])
|
||||
# war.participants = data.get("participants", {})
|
||||
for part_data in data.get("participants", []):
|
||||
part = WarParticipant.fromDict(part_data)
|
||||
war.participants[part.id] = part
|
||||
for obj_data in data.get("objectives", []):
|
||||
obj = Objective.fromDict(obj_data)
|
||||
war.objectives[obj.id] = obj
|
||||
for camp_data in data.get("campaigns", []):
|
||||
war.campaigns.append(Campaign.fromDict(camp_data))
|
||||
war.set_state(data.get("is_over", False))
|
||||
|
|
|
|||
|
|
@ -1,11 +1,12 @@
|
|||
from __future__ import annotations
|
||||
from typing import Any, Dict
|
||||
from uuid import uuid4
|
||||
|
||||
|
||||
class WarParticipant:
|
||||
def __init__(self, *, player_id: str, faction: str):
|
||||
self.id: str = str(uuid4())
|
||||
self.player_id: str = player_id # ref to WarModel.players
|
||||
self.player_id: str = player_id # ref to Model.players
|
||||
self.faction: str = faction
|
||||
|
||||
def set_id(self, new_id: str) -> None:
|
||||
|
|
@ -16,3 +17,19 @@ class WarParticipant:
|
|||
|
||||
def set_faction(self, new_faction: str) -> None:
|
||||
self.faction = new_faction
|
||||
|
||||
def toDict(self) -> Dict[str, Any]:
|
||||
return {
|
||||
"id": self.id,
|
||||
"player_id": self.player_id,
|
||||
"faction": self.faction,
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def fromDict(data: Dict[str, Any]) -> WarParticipant:
|
||||
part = WarParticipant(
|
||||
player_id=data["player_id"],
|
||||
faction=data["faction"],
|
||||
)
|
||||
part.set_id(data["id"])
|
||||
return part
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue