Allowed more flexibility in the creation of expansions

This commit is contained in:
2025-07-08 14:41:14 -04:00
parent 81f38a8044
commit 919793df09
2 changed files with 12 additions and 8 deletions

View File

@ -1,10 +1,10 @@
{
"expansions":
{
"ShockColar1": {"players": ["Brosef"], "tags": ["shock"], "config": {"COM_port": "COM3", "shocker_ID": 24770}},
"RobotBarman": {"players": ["Tango", "TRS_MML"], "tags": ["drink"], "config": {}},
"ChallengeDB": {"players": ["TRS_MML"], "tags": ["challenge"], "config": {}},
"SourCandy": {"players": [], "tags": ["food"], "config": {}}
"ShockColar1": {"players": ["Brosef"], "tags": ["shock"], "class": "serialShocker", "config": {"COM_port": "COM3", "shocker_ID": 24770}},
"RobotBarman": {"players": ["Tango", "TRS_MML"], "class": "bar", "tags": ["drink"], "config": {}},
"ChallengeDB": {"players": ["TRS_MML"], "class": "challenge", "tags": ["challenge"], "config": {}},
"SourCandy": {"players": [], "tags": ["food"], "class": "candy", "config": {}}
},
"players": {
"Brosef": {"flags": [], "expansions": {"exampleExpansion": {"playerOption": 5}}, "gamesSave": {"gameID0": 2}},

View File

@ -309,6 +309,9 @@ class ExpansionsManager:
def _getPlayersFillMissing(self, expansionID):
return set(self._cfg["expansions"].get(expansionID, {}).get("players", []))
def _getClassFillMissing(self, expansionID):
return self._cfg["expansions"].get(expansionID, {}).get("class", "")
def _listPossiblyValidExpansions(self):
"""
List expansions that are: included, defined in expansionsLib and available
@ -317,7 +320,7 @@ class ExpansionsManager:
activePlayers = set(self.playersManager.keys())
possiblyValidExpansions = [
expansionID for expansionID in self._includedExpansions
if hasattr(expansionsLib, expansionID) and
if hasattr(expansionsLib, self._getClassFillMissing(expansionID)) and
not self._getPlayersFillMissing(expansionID).isdisjoint(activePlayers)
]
return possiblyValidExpansions
@ -325,7 +328,8 @@ class ExpansionsManager:
def _createExpansion(self, expansionID):
try:
# Create the expansion
expansion = getattr(expansionsLib, expansionID)(expansionID, self)
expansionClass = self._getClassFillMissing(expansionID)
expansion = getattr(expansionsLib, expansionClass)(expansionID, self)
# Update the lookup
for player in self._getPlayersFillMissing(expansionID):
self._playersLookUp[player].append(expansionID)
@ -367,7 +371,7 @@ class ExpansionsManager:
possibleAddition = set(self._includedExpansions).difference(self._activeExpansions)
filteredAddition = [
expansionID for expansionID in possibleAddition
if hasattr(expansionsLib, expansionID) and
if hasattr(expansionsLib, self._getClassFillMissing(expansionID)) and
playerName in self._getPlayersFillMissing(expansionID)
]
# Create the expansions
@ -406,7 +410,7 @@ class ExpansionsManager:
expansionIsActive = expansionID in self._activeExpansions
activePlayers = set(self.playersManager.keys())
expansionHasNoPlayers = self._getPlayersFillMissing(expansionID).isdisjoint(activePlayers)
expansionDefined = hasattr(expansionsLib, expansionID)
expansionDefined = hasattr(expansionsLib, self._getClassFillMissing(expansionID))
# Update the activation status
activeChanged = False
if expansionIsActive and expansionHasNoPlayers: