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