diff --git a/src/NoPELib/player_settings.py b/src/NoPELib/player_settings.py index bec5f21..5caea04 100644 --- a/src/NoPELib/player_settings.py +++ b/src/NoPELib/player_settings.py @@ -36,10 +36,14 @@ class PlayersManager: Methods: save: + + Signals: + onMadePlayerActive: + onMadePlayerInactive: """ defaultPlayerConfig = {"flags": [], "expansions": {}, "games": {}} - def __init__(self, gameID: str=None, activePlayers: list[str]=None, playersPath: str='../players.json', loggerID: str='PlayersManager', includedExpansions: tuple[str]=None): + def __init__(self, gameID: str=None, activePlayers: list[str]=None, playersPath: str='../players.json', loggerID: str='PlayersManager'): """ Initialises a list of players. @@ -103,6 +107,7 @@ class PlayersManager: def __delitem__(self, playerName): del self._player_data[playerName] + self.onMadePlayerInactive(playerName) self._log.debug(f"Removed {playerName} from active players") def __len__(self): @@ -218,6 +223,7 @@ class Player: "done": False } # NOTE Make a result class instead and an error class + # TODO Implement a way to choose between the available expansions additionalInfos = do_something(value) return additionalInfos @@ -232,6 +238,9 @@ class Expansion: step: reset: close: + + Signals: + onError: """ def __init__(self): @@ -241,6 +250,8 @@ class Expansion: Should NEVER use any kind of argument. Raise an error if not available. """ + self.onError = Hook() + self._specs pass @property @@ -373,10 +384,10 @@ class ExpansionsManager: self._createExpansion(expansionID) def _activePlayerRemoved(self, playerName): - # Find the expansions that are to be created + # Find the expansions that are to be removed filteredRemoval = [ expansionID for expansionID in self.activeExpansions - if playerName in self._cfg["players"] and len(self._cfg["players"]) + if playerName in self._cfg["players"] and len(self._cfg["players"]) == 1 ] # Close the expansions for expansionID in filteredRemoval: