From e533acd9f1a629003f03cff7db192c8a2fba7595 Mon Sep 17 00:00:00 2001 From: Vladimir Date: Thu, 6 Aug 2026 03:28:07 +0300 Subject: [PATCH] =?UTF-8?q?feat(core):=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81?= =?UTF-8?q?=D0=B0=20=D0=B4=D0=BB=D1=8F=20=D1=85=D1=80=D0=B0=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=B2=D0=BD=D1=83=D1=82=D1=80=D0=B5=D0=BD?= =?UTF-8?q?=D0=BD=D0=B5=D0=B3=D0=BE=20=D1=81=D0=BE=D1=81=D1=82=D0=BE=D1=8F?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mind_reader/core/__init__.py | 5 +++++ src/mind_reader/core/game_state.py | 33 ++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 src/mind_reader/core/__init__.py create mode 100644 src/mind_reader/core/game_state.py 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)