コード例 #1
0
ファイル: bootcamp.py プロジェクト: kusaku/wot_scripts
    def setRecord(self, result, reusable):
        teamResult = reusable.getPersonalTeamResult()
        if teamResult != PLAYER_TEAM_RESULT.WIN:
            return
        lessonNum = g_bootcamp.getLessonNum()
        lessonSpecificExtras = g_bootcamp.getBattleResultsExtra(lessonNum - 1)
        for val in lessonSpecificExtras['unlocks']:
            self.addNextComponent(base.DirectStatsItem('', val))

        for val in lessonSpecificExtras['medals']:
            self.addNextComponent(base.DirectStatsItem('', val))

        bootcampController = dependency.instance(IBootcampController)
        lastLessonNum = g_bootcamp.getContextIntParameter('lastLessonNum')
        showPremium = lessonNum == lastLessonNum and bootcampController.needAwarding(
        )
        if showPremium:
            self.addNextComponent(
                base.DirectStatsItem(
                    '', {
                        'id':
                        'premium',
                        'label':
                        makeString(BOOTCAMP.RESULT_AWARD_PREMIUM_LABEL),
                        'description':
                        makeString(BOOTCAMP.RESULT_AWARD_PREMIUM_TEXT),
                        'icon':
                        RES_ICONS.MAPS_ICONS_BOOTCAMP_REWARDS_BCPREMIUM,
                        'iconTooltip':
                        RES_ICONS.
                        MAPS_ICONS_BOOTCAMP_REWARDS_TOOLTIPS_BCPREMIUM
                    }))
コード例 #2
0
 def setRecord(self, result, reusable):
     teamResult = reusable.getPersonalTeamResult()
     teamResultStr = backport.text(
         R.strings.maps_training.result.dyn('title' + teamResult.title())())
     self.addNextComponent(
         base.DirectStatsItem('win', teamResult == PLAYER_TEAM_RESULT.WIN))
     self.addNextComponent(base.DirectStatsItem('value', teamResult))
     self.addNextComponent(base.DirectStatsItem('str', teamResultStr))
コード例 #3
0
    def setRecord(self, result, reusable):
        questsProgress = reusable.personal.getQuestsProgress()
        if not questsProgress:
            return
        else:

            def _sortCommonQuestsFunc(aData, bData):
                aQuest, aCurProg, aPrevProg, _, _ = aData
                bQuest, bCurProg, bPrevProg, _, _ = bData
                res = cmp(aQuest.isCompleted(aCurProg), bQuest.isCompleted(bCurProg))
                if res:
                    return -res
                if aQuest.isCompleted() and bQuest.isCompleted(bCurProg):
                    res = aQuest.getBonusCount(aCurProg) - aPrevProg.get('bonusCount', 0) - (bQuest.getBonusCount(bCurProg) - bPrevProg.get('bonusCount', 0))
                    if not res:
                        return res
                return cmp(aQuest.getID(), bQuest.getID())

            from gui.Scaleform.daapi.view.lobby.server_events import events_helpers
            quests = self.eventsCache.getQuests()
            commonQuests, personalMissions = [], {}
            for qID, qProgress in questsProgress.iteritems():
                pGroupBy, pPrev, pCur = qProgress
                isCompleted = pCur.get('bonusCount', 0) - pPrev.get('bonusCount', 0) > 0
                if qID in quests:
                    quest = quests[qID]
                    isProgressReset = not isCompleted and quest.bonusCond.isInRow() and pCur.get('battlesCount', 0) == 0
                    if pPrev or max(pCur.itervalues()) != 0:
                        commonQuests.append((quest,
                         {pGroupBy: pCur},
                         {pGroupBy: pPrev},
                         isProgressReset,
                         isCompleted))
                if personal_missions.g_cache.isPersonalMission(qID):
                    pqID = personal_missions.g_cache.getPersonalMissionIDByUniqueID(qID)
                    questsCache = self.eventsCache.random
                    quest = questsCache.getQuests()[pqID]
                    progress = personalMissions.setdefault(quest, {})
                    progress.update({qID: isCompleted})

            for e, data in sorted(personalMissions.items(), key=operator.itemgetter(0)):
                if data.get(e.getAddQuestID(), False):
                    complete = (True, True)
                elif data.get(e.getMainQuestID(), False):
                    complete = (True, False)
                else:
                    complete = (False, False)
                info = events_helpers.getEventPostBattleInfo(e, quests, None, None, False, complete)
                if info is not None:
                    self.addComponent(self.getNextComponentIndex(), base.DirectStatsItem('', info))

            for e, pCur, pPrev, reset, complete in sorted(commonQuests, cmp=_sortCommonQuestsFunc):
                info = events_helpers.getEventPostBattleInfo(e, quests, pCur, pPrev, reset, complete)
                if info is not None:
                    self.addComponent(self.getNextComponentIndex(), base.DirectStatsItem('', info))

            return
コード例 #4
0
 def setRecord(self, result, reusable):
     teamResult = reusable.getPersonalTeamResult()
     if teamResult != PLAYER_TEAM_RESULT.WIN:
         return
     bootcampController = dependency.instance(IBootcampController)
     lessonNum = g_bootcamp.getLessonNum()
     lastLessonNum = g_bootcamp.getContextIntParameter('lastLessonNum')
     lessonSpecificExtras = g_bootcamp.getBattleResultsExtra(lessonNum - 1)
     goldPremuimExtras = []
     showPremium = lessonNum == lastLessonNum and bootcampController.needAwarding(
     )
     if showPremium:
         premiumType = g_bootcamp.getPremiumType(lessonNum)
         if premiumType not in _PREMIUM_RESOURCES:
             _logger.error(
                 'Premium type %s is not supported or it is not in the bonuses'
             )
         else:
             goldPremuimExtras.append({
                 'id':
                 premiumType,
                 'label':
                 _PREMIUM_RESOURCES[premiumType]['label'],
                 'description':
                 _PREMIUM_RESOURCES[premiumType]['description'],
                 'icon':
                 _PREMIUM_RESOURCES[premiumType]['icon'],
                 'iconTooltip':
                 _PREMIUM_RESOURCES[premiumType]['iconTooltip']
             })
             goldPremuimExtras.append({
                 'id':
                 'gold',
                 'label':
                 backport.text(R.strings.bootcamp.message.gold.label()),
                 'description':
                 backport.text(
                     R.strings.bootcamp.message.gold.premiumPlus.text()),
                 'icon':
                 backport.image(
                     R.images.gui.maps.icons.bootcamp.rewards.bcGold()),
                 'iconTooltip':
                 backport.image(R.images.gui.maps.icons.bootcamp.rewards.
                                tooltips.bcGold())
             })
     self.addNextComponent(
         base.DirectStatsItem('medals', lessonSpecificExtras['medals']))
     self.addNextComponent(
         base.DirectStatsItem('ribbons', lessonSpecificExtras['ribbons']))
     self.addNextComponent(
         base.DirectStatsItem(
             'unlocks',
             lessonSpecificExtras['unlocks'] + goldPremuimExtras))
コード例 #5
0
    def setRecord(self, result, reusable):
        if not self.lobbyContext.getServerSettings(
        ).isDogTagInPostBattleEnabled():
            return
        dogTags = reusable.personal.getDogTagsProgress()
        for compId in dogTags.get('unlockedComps', []):
            info = self.createDogTagInfo(compId, 'unlock')
            self.addComponent(self.getNextComponentIndex(),
                              base.DirectStatsItem('', info))

        for compId in dogTags.get('upgradedComps', []):
            info = self.createDogTagInfo(compId, 'upgrade')
            self.addComponent(self.getNextComponentIndex(),
                              base.DirectStatsItem('', info))
コード例 #6
0
    def setRecord(self, result, reusable):
        bpp = reusable.battlePassProgress
        if not bpp.hasProgress:
            return
        for lvl in xrange(bpp.prevLevel, bpp.currLevel):
            self.addComponent(
                self.getNextComponentIndex(),
                base.DirectStatsItem(
                    *self.__formatBattlePassProgress(bpp, lvl)))

        if bpp.pointsAux or bpp.pointsNew and bpp.pointsMax != bpp.pointsNew:
            self.addComponent(
                self.getNextComponentIndex(),
                base.DirectStatsItem(
                    *self.__formatBattlePassProgress(bpp, bpp.currLevel)))
コード例 #7
0
 def setRecord(self, result, reusable):
     if reusable.battlePassProgress is not None:
         if BattlePassConsts.PROGRESSION_INFO_PREV in reusable.battlePassProgress:
             info = reusable.battlePassProgress[
                 BattlePassConsts.PROGRESSION_INFO_PREV]
             self.addComponent(
                 self.getNextComponentIndex(),
                 base.DirectStatsItem('', getBattlePassQuestInfo(info)))
         if BattlePassConsts.PROGRESSION_INFO in reusable.battlePassProgress:
             info = reusable.battlePassProgress[
                 BattlePassConsts.PROGRESSION_INFO]
             self.addComponent(
                 self.getNextComponentIndex(),
                 base.DirectStatsItem('', getBattlePassQuestInfo(info)))
     return
コード例 #8
0
 def setRecord(self, result, reusable):
     battleGoals = result['personal']['avatar']['vseBattleResults']
     classes = ('heavyTank', 'mediumTank', 'lightTank', 'AT-SPG', 'SPG')
     totalClasses = len(classes)
     for vehClass, goal, res in zip(classes, battleGoals[:totalClasses],
                                    battleGoals[totalClasses:]):
         self.addNextComponent(base.DirectStatsItem(vehClass, [goal, res]))
コード例 #9
0
ファイル: details.py プロジェクト: kusaku/wot_scripts
 def __addXPsViolationPenalty(self):
     if self.penaltyDetails is not None:
         name, penalty = self.penaltyDetails
         penalty = style.makePercentLabel(penalty)
         value = style.makeStatRow('fairPlayViolation/{}'.format(name), column1=penalty, column2=penalty, column3=penalty, column4=penalty)
         self.addNextComponent(base.DirectStatsItem('', value))
     return
コード例 #10
0
 def setRecord(self, result, reusable):
     info = reusable.getPersonalVehiclesInfo(result['personal'])
     teamResult = reusable.getPersonalTeamResult()
     if teamResult == PLAYER_TEAM_RESULT.WIN:
         battleStats = g_bootcamp.getBattleStatsLessonWin()
     else:
         battleStats = g_bootcamp.getBattleStatsLessonDefeat()
     for statType in battleStats:
         statFieldName = BATTLE_STATS_RESULT_FIELDS[statType]
         statVal = info.__getattribute__(statFieldName)
         statVal = backport.getIntegralFormat(statVal)
         self.addNextComponent(
             base.DirectStatsItem(
                 '', {
                     'id':
                     statType,
                     'label':
                     makeString(BOOTCAMP.battle_result(statType)),
                     'description':
                     makeString(
                         BOOTCAMP.battle_result_description(statType)),
                     'value':
                     statVal,
                     'icon':
                     _STAT_ICON_PATH.format(BATTLE_STATS_ICONS[statType]),
                     'iconTooltip':
                     _STAT_ICON_TOOLTIP_PATH.format(
                         BATTLE_STATS_ICONS[statType])
                 }))
コード例 #11
0
 def setRecord(self, result, reusable):
     canBeFaded = not reusable.isPostBattlePremium and reusable.canResourceBeFaded
     for records in reusable.personal.getBaseCreditsRecords():
         value = style.makeCreditsLabel(records.getRecord(
             'credits', 'originalCreditsToDraw'),
                                        canBeFaded=canBeFaded)
         self.addNextComponent(base.DirectStatsItem('', value))
コード例 #12
0
 def setRecord(self, result, reusable):
     scenarioConfig, _, playerProgress = self._getScenarioData(
         result, reusable)
     totalTargets = sum(scenarioConfig['goals'].values())
     self.addNextComponent(
         base.DirectStatsItem('',
                              (totalTargets, playerProgress['level'] > 0,
                               playerProgress['level'] > 0
                               and playerProgress['prevBest'] > 0)))
コード例 #13
0
 def setRecord(self, result, reusable):
     _, rewardsConfig, playerProgress = self._getScenarioData(
         result, reusable)
     bonus = getMapsTrainingAwards(
         rewardsConfig, playerProgress['prevBest'], playerProgress['level'],
         result['personal']['avatar']['mt_mapComplete'])
     for rewardName, rewardData in bonus.iteritems():
         for item in getNonQuestBonuses(rewardName, rewardData):
             self.addNextComponent(base.DirectStatsItem('', item))
コード例 #14
0
    def setRecord(self, result, reusable):
        showSquadLabels, squadHasBonus = reusable.getPersonalSquadFlags()
        for records in reusable.personal.getBaseXPRecords():
            factor = int(records.getFactor('dailyXPFactor10'))
            value = None
            if factor == 1 and showSquadLabels and squadHasBonus:
                value = backport.text(R.strings.battle_results.common.tooltip.xpTitleSquad())
            self.addNextComponent(base.DirectStatsItem('', value))

        return
コード例 #15
0
ファイル: details.py プロジェクト: kusaku/wot_scripts
 def setRecord(self, result, reusable):
     canBeFaded = reusable.isPostBattlePremium and reusable.canResourceBeFaded
     isDiffShow = reusable.canUpgradeToPremium
     for records in reusable.personal.getMoneyRecords():
         baseCredits, premiumCredits = records[:2]
         value = premiumCredits.getRecord('credits', 'originalCreditsToDraw')
         if isDiffShow and value > 0:
             value -= baseCredits.getRecord('credits', 'originalCreditsToDraw')
         value = style.makeCreditsLabel(value, canBeFaded=canBeFaded, isDiff=isDiffShow)
         self.addNextComponent(base.DirectStatsItem('', value))
コード例 #16
0
 def setRecord(self, result, reusable):
     showSquadLabels, squadHasBonus = reusable.getPersonalSquadFlags()
     for records in reusable.personal.getBaseXPRecords():
         factor = int(records.getFactor('dailyXPFactor10'))
         if factor == 1 and showSquadLabels and squadHasBonus:
             value = i18n.makeString(backport.text(R.strings.battle_results.common.details.xpTitleSquad()), img=icons.makeImageTag(backport.image(R.images.gui.maps.icons.library.prebattleInviteIcon_1())))
         else:
             value = backport.text(R.strings.battle_results.common.details.xpTitle())
         if factor > 1:
             value = ' '.join((value, icons.makeImageTag(backport.image(R.images.gui.maps.icons.library.dyn('bonus_x{}'.format(factor))()), 46, 18)))
         self.addNextComponent(base.DirectStatsItem('', value))
コード例 #17
0
    def setRecord(self, result, reusable):
        for intCD, data in reusable.personal.getVehicleCDsIterator(result):
            vehicleBattleXp = data.get('xp', 0)
            pureCreditsReceived = data.get('pureCreditsReceived', 0)
            tmenXps = dict(data.get('xpByTmen', []))
            helper = VehicleProgressHelper(intCD)
            progress = helper.getProgressList(vehicleBattleXp, pureCreditsReceived, tmenXps)
            for item in progress:
                self.addComponent(self.getNextComponentIndex(), base.DirectStatsItem('', item))

            helper.clear()
コード例 #18
0
ファイル: details.py プロジェクト: kusaku/wot_scripts
 def setRecord(self, result, reusable):
     showSquadLabels, squadHasBonus = reusable.getPersonalSquadFlags()
     for records in reusable.personal.getBaseXPRecords():
         factor = records.getFactor('dailyXPFactor10')
         if factor == 1 and showSquadLabels and squadHasBonus:
             result = i18n.makeString(BATTLE_RESULTS.COMMON_DETAILS_XPTITLESQUAD, img=icons.makeImageTag(RES_ICONS.MAPS_ICONS_LIBRARY_PREBATTLEINVITEICON_1))
         else:
             result = i18n.makeString(BATTLE_RESULTS.COMMON_DETAILS_XPTITLE)
         if factor > 1:
             result = ' '.join((result, i18n.makeString(BATTLE_RESULTS.COMMON_DETAILS_XPTITLEFIRSTVICTORY, factor)))
         self.addNextComponent(base.DirectStatsItem('', result))
コード例 #19
0
ファイル: details.py プロジェクト: kusaku/wot_scripts
 def setRecord(self, result, reusable):
     canBeFaded = reusable.isPostBattlePremium and reusable.canResourceBeFaded
     isDiffShow = reusable.canUpgradeToPremium
     for records in reusable.personal.getXPRecords():
         baseXP, premiumXP = records[:2]
         xp = premiumXP.getRecord('xpToShow')
         if isDiffShow:
             value = xp - baseXP.getRecord('xpToShow')
         else:
             value = xp
         value = style.makeXpLabel(value, canBeFaded=canBeFaded, isDiff=isDiffShow)
         self.addNextComponent(base.DirectStatsItem('', value))
コード例 #20
0
 def _addStatsRow(self,
                  label,
                  column1=None,
                  column2=None,
                  column3=None,
                  column4=None,
                  htmlKey=''):
     value = style.makeStatRow(label,
                               column1=column1,
                               column2=column2,
                               column3=column3,
                               column4=column4,
                               htmlKey=htmlKey)
     self.addNextComponent(base.DirectStatsItem('', value))
コード例 #21
0
    def setRecord(self, result, reusable):
        info = reusable.getPersonalVehiclesInfo(result['personal'])
        for statType, statFieldName in BATTLE_STATS_RESULT_FIELDS.iteritems():
            statVal = info.__getattribute__(statFieldName)
            self.addNextComponent(
                base.DirectStatsItem('', {
                    'id': statType,
                    'value': statVal
                }))

        totalClasses = len(VEHICLE_CLASSES)
        questKills = 0
        battleResult = result['personal']['avatar']['vseBattleResults']
        for goal, kills in zip(battleResult[:totalClasses],
                               battleResult[totalClasses:]):
            if goal == 0:
                continue
            questKills += goal if kills > goal else kills

        self.addNextComponent(
            base.DirectStatsItem('', {
                'id': 'questKills',
                'value': questKills
            }))
コード例 #22
0
 def setRecord(self, result, reusable):
     isPremuim = not reusable.isPostBattlePremium and reusable.canResourceBeFaded
     for records in reusable.personal.getBaseXPRecords():
         value = style.makeXpLabel(records.getRecord('xpToShow'),
                                   canBeFaded=isPremuim)
         self.addNextComponent(base.DirectStatsItem('', value))
コード例 #23
0
 def setRecord(self, result, reusable):
     intVal = reusable.personal.getBaseCreditsRecords().getRecord('credits')
     strVal = backport.getGoldFormat(intVal)
     self.addNextComponent(base.DirectStatsItem('value', intVal))
     self.addNextComponent(base.DirectStatsItem('str', strVal))
コード例 #24
0
 def setRecord(self, result, reusable):
     intVal = reusable.personal.getBaseXPRecords().getRecord('xp')
     strVal = backport.getIntegralFormat(intVal)
     self.addNextComponent(base.DirectStatsItem('value', intVal))
     self.addNextComponent(base.DirectStatsItem('str', strVal))
コード例 #25
0
 def setRecord(self, result, reusable):
     self.addNextComponent(
         base.DirectStatsItem('',
                              i18n.makeString(BATTLE_RESULTS.ALLVEHICLES)))
     super(EpicVehicleNamesBlock, self).setRecord(result, reusable)
コード例 #26
0
 def setRecord(self, result, reusable):
     for _, item in reusable.personal.getVehicleItemsIterator():
         self.addNextComponent(
             base.DirectStatsItem('', getTypeBigIconPath(item.type)))
コード例 #27
0
 def setRecord(self, result, reusable):
     for _, item in reusable.personal.getVehicleItemsIterator():
         self.addNextComponent(base.DirectStatsItem('', item.shortUserName))
コード例 #28
0
    def setRecord(self, result, reusable):
        questsProgress = reusable.personal.getQuestsProgress()
        personalMissions = {}
        commonQuests = []
        allCommonQuests = self.eventsCache.getQuests()
        allCommonQuests.update(
            self.eventsCache.getHiddenQuests(lambda q: q.isShowedPostBattle()))
        allCelebrityQuests = getCelebrityQuests()
        celebrityProgressGroups = set()
        if questsProgress:
            for qID, qProgress in questsProgress.iteritems():
                if qID.startswith(CELEBRITY_GROUP_PREFIX):
                    if qID in allCelebrityQuests:
                        quest = allCelebrityQuests[qID]
                        groupID = quest.getGroupID()
                        celebrityProgressGroups.add(groupID)
                    continue
                pGroupBy, pPrev, pCur = qProgress
                isCompleted = isQuestCompleted(pGroupBy, pPrev, pCur)
                if qID in allCommonQuests:
                    quest = allCommonQuests[qID]
                    isProgressReset = not isCompleted and quest.bonusCond.isInRow(
                    ) and pCur.get('battlesCount', 0) == 0
                    if pPrev or max(pCur.itervalues()) != 0:
                        commonQuests.append((quest, {
                            pGroupBy: pCur
                        }, {
                            pGroupBy: pPrev
                        }, isProgressReset, isCompleted))
                if personal_missions.g_cache.isPersonalMission(qID):
                    pqID = personal_missions.g_cache.getPersonalMissionIDByUniqueID(
                        qID)
                    questsCache = self.eventsCache.getPersonalMissions()
                    quest = questsCache.getAllQuests()[pqID]
                    progress = personalMissions.setdefault(quest, {})
                    progress.update({qID: isCompleted})

        pm2Progress = reusable.personal.getPM2Progress()
        if pm2Progress:
            quests = self.eventsCache.getPersonalMissions().getAllQuests()
            for qID, data in pm2Progress.iteritems():
                quest = quests[qID]
                if quest in personalMissions:
                    personalMissions[quest].update(data)
                progress = personalMissions.setdefault(quest, {})
                progress.update(data)

        if celebrityProgressGroups:
            celebrityQuestGroups = getCelebrityQuestsGroups()
            celebrityTokens = getCelebrityTokens()
            for groupID in sorted(celebrityProgressGroups):
                celebrityGroup = celebrityQuestGroups.get(groupID)
                if celebrityGroup is None:
                    continue
                celebrityGroup.update(allCelebrityQuests)
                if not celebrityGroup.isValid:
                    continue
                activeQuest = celebrityGroup.getActiveQuest(celebrityTokens)
                if activeQuest is None:
                    continue
                questProgress = questsProgress.get(activeQuest.getID())
                if questProgress is None:
                    continue
                pGroupBy, pPrev, pCur = questProgress
                isCompleted = isQuestCompleted(pGroupBy, pPrev, pCur)
                info = None
                if isCompleted:
                    bonusQuest = celebrityGroup.bonusQuest
                    info = getEventPostBattleInfo(bonusQuest,
                                                  allCelebrityQuests, None,
                                                  None, False, True)
                elif pPrev or max(pCur.itervalues()) != 0:
                    isProgressReset = activeQuest.bonusCond.isInRow(
                    ) and pCur.get('battlesCount', 0) == 0
                    pPrevProgress = {pGroupBy: pPrev} if pPrev else None
                    pCurProgress = {pGroupBy: pCur} if pCur else None
                    info = getEventPostBattleInfo(activeQuest,
                                                  allCelebrityQuests,
                                                  pCurProgress, pPrevProgress,
                                                  isProgressReset, isCompleted)
                if info is not None:
                    self.addComponent(self.getNextComponentIndex(),
                                      base.DirectStatsItem('', info))

        for quest, data in sorted(personalMissions.items(),
                                  key=operator.itemgetter(0),
                                  cmp=self.__sortPersonalMissions):
            if data.get(quest.getAddQuestID(), False):
                complete = PMComplete(True, True)
            elif data.get(quest.getMainQuestID(), False):
                complete = PMComplete(True, False)
            else:
                complete = PMComplete(False, False)
            info = getEventPostBattleInfo(quest,
                                          None,
                                          None,
                                          None,
                                          False,
                                          complete,
                                          progressData=data)
            if info is not None:
                self.addComponent(self.getNextComponentIndex(),
                                  base.DirectStatsItem('', info))

        for vehicleIntCD, c11nProgression in reusable.personal.getC11nProgress(
        ).iteritems():
            for intCD, progressionData in sorted(c11nProgression.iteritems(),
                                                 key=lambda
                                                 (_, d): -d.get('level', 0)):
                info = getProgressionPostBattleInfo(intCD, vehicleIntCD,
                                                    progressionData)
                if info is not None:
                    self.addComponent(self.getNextComponentIndex(),
                                      ProgressiveCustomizationVO('', info))

        for e, pCur, pPrev, reset, complete in sorted(
                commonQuests, cmp=self.__sortCommonQuestsFunc):
            info = getEventPostBattleInfo(e, allCommonQuests, pCur, pPrev,
                                          reset, complete)
            if info is not None:
                self.addComponent(self.getNextComponentIndex(),
                                  base.DirectStatsItem('', info))

        return
コード例 #29
0
 def __addStatsRowOverrideForWGMoneyOffline(self, label, column1=None, htmlKey='', **kwargs):
     value = style.makeStatRow(label, column1=column1, htmlKey=htmlKey)
     self.addNextComponent(base.DirectStatsItem('', value))
コード例 #30
0
    def setRecord(self, result, reusable):
        questsProgress = reusable.personal.getQuestsProgress()
        personalMissions = {}
        commonQuests = []
        allCommonQuests = self.eventsCache.getQuests()
        allCommonQuests.update(
            self.eventsCache.getHiddenQuests(lambda q: q.isShowedPostBattle()))
        if questsProgress:
            for qID, qProgress in questsProgress.iteritems():
                pGroupBy, pPrev, pCur = qProgress
                isCompleted = pCur.get('bonusCount', 0) - pPrev.get(
                    'bonusCount', 0) > 0
                if qID in allCommonQuests:
                    quest = allCommonQuests[qID]
                    isProgressReset = not isCompleted and quest.bonusCond.isInRow(
                    ) and pCur.get('battlesCount', 0) == 0
                    if pPrev or max(pCur.itervalues()) != 0:
                        commonQuests.append((quest, {
                            pGroupBy: pCur
                        }, {
                            pGroupBy: pPrev
                        }, isProgressReset, isCompleted))
                if personal_missions.g_cache.isPersonalMission(qID):
                    pqID = personal_missions.g_cache.getPersonalMissionIDByUniqueID(
                        qID)
                    questsCache = self.eventsCache.getPersonalMissions()
                    quest = questsCache.getAllQuests()[pqID]
                    progress = personalMissions.setdefault(quest, {})
                    progress.update({qID: isCompleted})

        pm2Progress = reusable.personal.getPM2Progress()
        if pm2Progress:
            quests = self.eventsCache.getPersonalMissions().getAllQuests()
            for qID, data in pm2Progress.iteritems():
                quest = quests[qID]
                if quest in personalMissions:
                    personalMissions[quest].update(data)
                progress = personalMissions.setdefault(quest, {})
                progress.update(data)

        for quest, data in sorted(personalMissions.items(),
                                  key=operator.itemgetter(0),
                                  cmp=self.__sortPersonalMissions):
            if data.get(quest.getAddQuestID(), False):
                complete = PMComplete(True, True)
            elif data.get(quest.getMainQuestID(), False):
                complete = PMComplete(True, False)
            else:
                complete = PMComplete(False, False)
            info = getEventPostBattleInfo(quest,
                                          None,
                                          None,
                                          None,
                                          False,
                                          complete,
                                          progressData=data)
            if info is not None:
                self.addComponent(self.getNextComponentIndex(),
                                  base.DirectStatsItem('', info))

        for e, pCur, pPrev, reset, complete in sorted(
                commonQuests, cmp=self.__sortCommonQuestsFunc):
            info = getEventPostBattleInfo(e, allCommonQuests, pCur, pPrev,
                                          reset, complete)
            if info is not None:
                self.addComponent(self.getNextComponentIndex(),
                                  base.DirectStatsItem('', info))

        return