feat(core): добавление класса для хранения внутреннего состояния
This commit is contained in:
@@ -0,0 +1,5 @@
|
|||||||
|
from mind_reader.core.game_state import GameState
|
||||||
|
|
||||||
|
__all__ = [
|
||||||
|
"GameState",
|
||||||
|
]
|
||||||
@@ -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)
|
||||||
Reference in New Issue
Block a user