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
Ejemplo n.º 2
0
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(
     )
Ejemplo n.º 4
0
def getDefaultMissionsBonusConditionsFormatter():
    return MissionsBonusConditionsFormatter()