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 }))
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))
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
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))
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))
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)))
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
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]))
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
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]) }))
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))
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)))
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))
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
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))
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))
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()
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))
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))
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))
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 }))
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))
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))
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))
def setRecord(self, result, reusable): self.addNextComponent( base.DirectStatsItem('', i18n.makeString(BATTLE_RESULTS.ALLVEHICLES))) super(EpicVehicleNamesBlock, self).setRecord(result, reusable)
def setRecord(self, result, reusable): for _, item in reusable.personal.getVehicleItemsIterator(): self.addNextComponent( base.DirectStatsItem('', getTypeBigIconPath(item.type)))
def setRecord(self, result, reusable): for _, item in reusable.personal.getVehicleItemsIterator(): self.addNextComponent(base.DirectStatsItem('', item.shortUserName))
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
def __addStatsRowOverrideForWGMoneyOffline(self, label, column1=None, htmlKey='', **kwargs): value = style.makeStatRow(label, column1=column1, htmlKey=htmlKey) self.addNextComponent(base.DirectStatsItem('', value))
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