diff --git a/data/example.json b/example.json similarity index 97% rename from data/example.json rename to example.json index c12a44a..e94efdd 100644 --- a/data/example.json +++ b/example.json @@ -30,7 +30,7 @@ "name": "Llael War 2025", "year": 2025, - "registered_players": { + "entrants": { "e7844fbb-8366-44e4-bb43-89b9eef6ef64": { "war_points": 0, "influence_tokens": 1 @@ -83,7 +83,7 @@ } ], - "completed": false + "is_completed": false } ] } diff --git a/src/warchron/model/campaign.py b/src/warchron/model/campaign.py new file mode 100644 index 0000000..ffe070b --- /dev/null +++ b/src/warchron/model/campaign.py @@ -0,0 +1,45 @@ +from uuid import uuid4 +from datetime import datetime + +from warchron.model.round import Round + +class Campaign: + def __init__(self, name): + self.id = str(uuid4()) + self.name = name + self.month = datetime.now().month + self.entrants = {} + self.rounds = {} + self.is_over = False + + def set_id(self, new_id): + self.id = new_id + + def set_name(self, new_name): + self.name = new_name + + def set_month(self, new_month): + self.month = new_month + + def set_state(self, new_state): + self.is_over = new_state + + def toDict(self): + return { + "id" : self.id, + "name" : self.name, + "month" : self.month, + "entrants" : self.entrants, + "rounds" : self.rounds, + "is_over": self.is_over + } + + @staticmethod + def fromDict(id, name, month, entrants, rounds, is_over): + tmp = Campaign(name=name) + tmp.set_id(id) + tmp.set_month(month) + ## entrants placeholder + ## rounds placeholder + tmp.set_state(is_over) + return tmp \ No newline at end of file diff --git a/src/warchron/model/model.py b/src/warchron/model/model.py index ff88508..5e97b44 100644 --- a/src/warchron/model/model.py +++ b/src/warchron/model/model.py @@ -3,19 +3,22 @@ import json import shutil from warchron.model.player import Player +from warchron.model.war import War class Model: def __init__(self): self.players = {} + self.wars = {} def new(self): self.players.clear() - # self.wars.clear() + self.wars.clear() # self.campaigns.clear() # self.rounds.clear() def load(self, path: Path): self.players.clear() + self.wars.clear() self._load_data(path) def save(self, path: Path): @@ -66,3 +69,13 @@ class Model: def get_all_players(self) -> list[Player]: return list(self.players.values()) + def add_war(self, name): + war = War(name) + self.wars[war.id] = war + return war + + def get_war(self, id): + return self.wars[id] + + def get_all_wars(self) -> list[War]: + return list(self.wars.values()) diff --git a/src/warchron/model/round.py b/src/warchron/model/round.py new file mode 100644 index 0000000..faceb0d --- /dev/null +++ b/src/warchron/model/round.py @@ -0,0 +1,31 @@ +class Round: + def __init__(self, number): + self.number = number + self.sectors = {} + self.choices = {} + self.battles = {} + self.is_over = False + + def set_number(self, new_number): + self.number = new_number + + def set_state(self, new_state): + self.is_over = new_state + + def toDict(self): + return { + "number" : self.number, + "sectors" : self.sectors, + "choices" : self.choices, + "battles" : self.battles, + "is_over": self.is_over + } + + @staticmethod + def fromDict(id, number, sectors, choices, battles, is_over): + tmp = Round(number=number) + ## sectors placeholder + ## choices placeholder + ## battles placeholder + tmp.set_state(is_over) + return tmp \ No newline at end of file diff --git a/src/warchron/model/war.py b/src/warchron/model/war.py new file mode 100644 index 0000000..308cec2 --- /dev/null +++ b/src/warchron/model/war.py @@ -0,0 +1,46 @@ +from uuid import uuid4 +from datetime import datetime + +from warchron.model.campaign import Campaign + +class War: + def __init__(self, name): + self.id = str(uuid4()) + self.name = name + self.year = datetime.now().year + self.entrants = {} + self.campaigns = {} + self.is_over = False + + + def set_id(self, new_id): + self.id = new_id + + def set_name(self, new_name): + self.name = new_name + + def set_year(self, new_year): + self.year = new_year + + def set_state(self, new_state): + self.is_over = new_state + + def toDict(self): + return { + "id" : self.id, + "name" : self.name, + "year" : self.year, + "entrants" : self.entrants, + "campaigns" : self.campaigns, + "is_over": self.is_over + } + + @staticmethod + def fromDict(id, name, year, entrants, campaigns, is_over): + tmp = War(name=name) + tmp.set_id(id) + tmp.set_year(year) + ## entrants placeholder + ## campaigns placeholder + tmp.set_state(is_over) + return tmp \ No newline at end of file