Allowed more flexibility in the creation of expansions
This commit is contained in:
@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"expansions":
|
"expansions":
|
||||||
{
|
{
|
||||||
"ShockColar1": {"players": ["Brosef"], "tags": ["shock"], "config": {"COM_port": "COM3", "shocker_ID": 24770}},
|
"ShockColar1": {"players": ["Brosef"], "tags": ["shock"], "class": "serialShocker", "config": {"COM_port": "COM3", "shocker_ID": 24770}},
|
||||||
"RobotBarman": {"players": ["Tango", "TRS_MML"], "tags": ["drink"], "config": {}},
|
"RobotBarman": {"players": ["Tango", "TRS_MML"], "class": "bar", "tags": ["drink"], "config": {}},
|
||||||
"ChallengeDB": {"players": ["TRS_MML"], "tags": ["challenge"], "config": {}},
|
"ChallengeDB": {"players": ["TRS_MML"], "class": "challenge", "tags": ["challenge"], "config": {}},
|
||||||
"SourCandy": {"players": [], "tags": ["food"], "config": {}}
|
"SourCandy": {"players": [], "tags": ["food"], "class": "candy", "config": {}}
|
||||||
},
|
},
|
||||||
"players": {
|
"players": {
|
||||||
"Brosef": {"flags": [], "expansions": {"exampleExpansion": {"playerOption": 5}}, "gamesSave": {"gameID0": 2}},
|
"Brosef": {"flags": [], "expansions": {"exampleExpansion": {"playerOption": 5}}, "gamesSave": {"gameID0": 2}},
|
||||||
|
|||||||
@ -309,6 +309,9 @@ class ExpansionsManager:
|
|||||||
def _getPlayersFillMissing(self, expansionID):
|
def _getPlayersFillMissing(self, expansionID):
|
||||||
return set(self._cfg["expansions"].get(expansionID, {}).get("players", []))
|
return set(self._cfg["expansions"].get(expansionID, {}).get("players", []))
|
||||||
|
|
||||||
|
def _getClassFillMissing(self, expansionID):
|
||||||
|
return self._cfg["expansions"].get(expansionID, {}).get("class", "")
|
||||||
|
|
||||||
def _listPossiblyValidExpansions(self):
|
def _listPossiblyValidExpansions(self):
|
||||||
"""
|
"""
|
||||||
List expansions that are: included, defined in expansionsLib and available
|
List expansions that are: included, defined in expansionsLib and available
|
||||||
@ -317,7 +320,7 @@ class ExpansionsManager:
|
|||||||
activePlayers = set(self.playersManager.keys())
|
activePlayers = set(self.playersManager.keys())
|
||||||
possiblyValidExpansions = [
|
possiblyValidExpansions = [
|
||||||
expansionID for expansionID in self._includedExpansions
|
expansionID for expansionID in self._includedExpansions
|
||||||
if hasattr(expansionsLib, expansionID) and
|
if hasattr(expansionsLib, self._getClassFillMissing(expansionID)) and
|
||||||
not self._getPlayersFillMissing(expansionID).isdisjoint(activePlayers)
|
not self._getPlayersFillMissing(expansionID).isdisjoint(activePlayers)
|
||||||
]
|
]
|
||||||
return possiblyValidExpansions
|
return possiblyValidExpansions
|
||||||
@ -325,7 +328,8 @@ class ExpansionsManager:
|
|||||||
def _createExpansion(self, expansionID):
|
def _createExpansion(self, expansionID):
|
||||||
try:
|
try:
|
||||||
# Create the expansion
|
# Create the expansion
|
||||||
expansion = getattr(expansionsLib, expansionID)(expansionID, self)
|
expansionClass = self._getClassFillMissing(expansionID)
|
||||||
|
expansion = getattr(expansionsLib, expansionClass)(expansionID, self)
|
||||||
# Update the lookup
|
# Update the lookup
|
||||||
for player in self._getPlayersFillMissing(expansionID):
|
for player in self._getPlayersFillMissing(expansionID):
|
||||||
self._playersLookUp[player].append(expansionID)
|
self._playersLookUp[player].append(expansionID)
|
||||||
@ -367,7 +371,7 @@ class ExpansionsManager:
|
|||||||
possibleAddition = set(self._includedExpansions).difference(self._activeExpansions)
|
possibleAddition = set(self._includedExpansions).difference(self._activeExpansions)
|
||||||
filteredAddition = [
|
filteredAddition = [
|
||||||
expansionID for expansionID in possibleAddition
|
expansionID for expansionID in possibleAddition
|
||||||
if hasattr(expansionsLib, expansionID) and
|
if hasattr(expansionsLib, self._getClassFillMissing(expansionID)) and
|
||||||
playerName in self._getPlayersFillMissing(expansionID)
|
playerName in self._getPlayersFillMissing(expansionID)
|
||||||
]
|
]
|
||||||
# Create the expansions
|
# Create the expansions
|
||||||
@ -406,7 +410,7 @@ class ExpansionsManager:
|
|||||||
expansionIsActive = expansionID in self._activeExpansions
|
expansionIsActive = expansionID in self._activeExpansions
|
||||||
activePlayers = set(self.playersManager.keys())
|
activePlayers = set(self.playersManager.keys())
|
||||||
expansionHasNoPlayers = self._getPlayersFillMissing(expansionID).isdisjoint(activePlayers)
|
expansionHasNoPlayers = self._getPlayersFillMissing(expansionID).isdisjoint(activePlayers)
|
||||||
expansionDefined = hasattr(expansionsLib, expansionID)
|
expansionDefined = hasattr(expansionsLib, self._getClassFillMissing(expansionID))
|
||||||
# Update the activation status
|
# Update the activation status
|
||||||
activeChanged = False
|
activeChanged = False
|
||||||
if expansionIsActive and expansionHasNoPlayers:
|
if expansionIsActive and expansionHasNoPlayers:
|
||||||
|
|||||||
Reference in New Issue
Block a user