diff --git a/src/mind_reader/core/__init__.py b/src/mind_reader/core/__init__.py new file mode 100644 index 0000000..b5e32ec --- /dev/null +++ b/src/mind_reader/core/__init__.py @@ -0,0 +1,5 @@ +from mind_reader.core.game_state import GameState + +__all__ = [ + "GameState", +] diff --git a/src/mind_reader/core/game_state.py b/src/mind_reader/core/game_state.py new file mode 100644 index 0000000..566463e --- /dev/null +++ b/src/mind_reader/core/game_state.py @@ -0,0 +1,33 @@ +class GameState: + def __init__(self, local_player_name: str): + self.local_player_name: str = local_player_name + self.remote_player_name: str | None = None + self.lobby_players: dict[str, str] = {self.local_player_name: "NONE"} + + def add_remote_player(self, player_name: str): + self.remote_player_name = player_name + self.lobby_players[self.remote_player_name] = "NONE" + + def delete_remote_player(self): + if self.remote_player_name in self.lobby_players: + del self.lobby_players[self.remote_player_name] + self.remote_player_name = None + + def set_player_role(self, player_name: str, role: str) -> bool: + current_role = self.lobby_players.get(player_name) + if current_role == role: + return False + + if role in ["NONE", "SETTER", "GUESSER"]: + self.lobby_players[player_name] = role + return True + + return False + + @property + def local_player_role(self) -> str: + return self.lobby_players[self.local_player_name] + + def is_session_ready(self) -> bool: + roles = list(self.lobby_players.values()) + return ("SETTER" in roles) and ("GUESSER" in roles)