Allowed more flexibility in the creation of expansions
This commit is contained in:
@ -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}},
|
||||
|
||||
@ -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:
|
||||
|
||||
Reference in New Issue
Block a user