class MissionBonusAndPostBattleCondFormatter(ConditionsFormatter): def __init__(self): super(MissionBonusAndPostBattleCondFormatter, self).__init__() self.bonusCondFormatter = MissionsBonusConditionsFormatter() self.postBattleCondFormatter = postbattle.MissionsPostBattleConditionsFormatter( ) def format(self, event): result = [] bonusConditions = self.bonusCondFormatter.format( event.bonusCond, event) postBattleConditions = self.postBattleCondFormatter.format( event.postBattleCond, event) battleCountCondition = event.bonusCond.getConditions().find('battles') for pCondGroup in postBattleConditions: for bCondGroup in bonusConditions: if battleCountCondition is not None: conditions = [] conditions.extend(pCondGroup) conditions.extend(bCondGroup) conditions.extend( BattlesCountFormatter(bool(pCondGroup)).format( battleCountCondition, event)) else: conditions = pCondGroup + bCondGroup if not conditions: conditions.append(_packPlayBattleCondition()) result.append(conditions) return result @classmethod def _packSeparator(cls, key): raise NotImplementedError
class MissionBonusAndPostBattleCondFormatter(ConditionsFormatter): """ Formatter for 'bonus' and 'postbattle' conditions sections Expand and mix all battle pre formatted conditions data in rows All 'AND' conditions collected in one row 'OR' conditions expand in different rows. results represent 'OR' list of rows with 'AND' conditions for example: (damage vehicle and win) or (kill vehicle and survive) looks like [ [veh damage data, win data], [veh kill data , survive data] ] """ def __init__(self): super(MissionBonusAndPostBattleCondFormatter, self).__init__() self.bonusCondFormatter = MissionsBonusConditionsFormatter() self.postBattleCondFormatter = postbattle.MissionsPostBattleConditionsFormatter( ) def format(self, event): result = [] bonusConditions = self.bonusCondFormatter.format( event.bonusCond, event) postBattleConditions = self.postBattleCondFormatter.format( event.postBattleCond, event) battleCountCondition = event.bonusCond.getConditions().find('battles') for pCondGroup in postBattleConditions: for bCondGroup in bonusConditions: if battleCountCondition is not None: conditions = [] conditions.extend(pCondGroup) conditions.extend(bCondGroup) conditions.extend( BattlesCountFormatter(bool(pCondGroup)).format( battleCountCondition, event)) else: conditions = pCondGroup + bCondGroup if not conditions: conditions.append(_packPlayBattleCondition()) result.append(conditions) return result @classmethod def _packSeparator(cls, key): raise NotImplementedError
def __init__(self): super(MissionBonusAndPostBattleCondFormatter, self).__init__() self.bonusCondFormatter = MissionsBonusConditionsFormatter() self.postBattleCondFormatter = postbattle.MissionsPostBattleConditionsFormatter( )
def getDefaultMissionsBonusConditionsFormatter(): return MissionsBonusConditionsFormatter()