示例#1
0
    def _getBonuses(self, svrEvents, bonuses = None):
        bonuses = bonuses or self.event.getBonuses()
        result, simpleBonusesList, customizationsList = [], [], []
        for b in bonuses:
            if b.isShowInGUI():
                if b.getName() == 'dossier':
                    for record in b.getRecords():
                        if record[0] != ACHIEVEMENT_BLOCK.RARE:
                            result.append(formatters.packAchieveElement(RECORD_DB_IDS[record]))

                elif b.getName() == 'customizations':
                    customizationsList.extend(b.getList())
                else:
                    flist = b.formattedList()
                    if flist:
                        simpleBonusesList.extend(flist)

        label = ', '.join(simpleBonusesList)
        fullLabel = None
        if len(simpleBonusesList) > self.SIMPLE_BONUSES_MAX_ITEMS:
            label = ', '.join(simpleBonusesList[:self.SIMPLE_BONUSES_MAX_ITEMS]) + '..'
            fullLabel = ', '.join(simpleBonusesList)
        result.append(formatters.packTextBlock(label, fullLabel=fullLabel))
        if len(customizationsList):
            result.append(formatters.packCustomizations(customizationsList))
        parents = [ qID for _, qIDs in self.event.getParents().iteritems() for qID in qIDs ]
        for qID, q in self._getEventsByIDs(parents, svrEvents or {}).iteritems():
            result.append(formatters.packTextBlock(i18n.makeString('#quests:bonuses/item/task', q.getUserName()), questID=qID))

        if len(result):
            return formatters.todict(result)
        else:
            return []
    def _getBonuses(self, svrEvents, bonuses=None, useIconFormat=False):
        bonuses = bonuses or self.event.getBonuses()
        result, simpleBonusesList, customizationsList, vehiclesList, iconBonusesList = (
            [], [], [], [], [])
        for b in bonuses:
            if b.isShowInGUI():
                if b.getName() == 'dossier':
                    for achieve in b.getAchievements():
                        result.append(
                            formatters.packAchieveElementByItem(achieve))

                elif b.getName() == 'customizations':
                    customizationsList.extend(b.getList())
                elif b.getName() == 'vehicles':
                    flist = b.formattedList()
                    if flist:
                        vehiclesList.extend(flist)
                elif b.hasIconFormat() and useIconFormat:
                    iconBonusesList.extend(b.getList())
                else:
                    flist = b.formattedList()
                    if flist:
                        simpleBonusesList.extend(flist)

        if len(customizationsList):
            result.append(formatters.packCustomizations(customizationsList))
        if len(iconBonusesList):
            result.append(formatters.packIconAwardBonusBlock(iconBonusesList))
        if len(vehiclesList) > 0:
            vehiclesLbl, _ = self._joinUpToMax(vehiclesList)
            result.append(
                formatters.packVehiclesBonusBlock(vehiclesLbl,
                                                  str(self.event.getID())))
        if len(simpleBonusesList) > 0:
            result.append(formatters.packSimpleBonusesBlock(simpleBonusesList))
        parents = [
            qID for _, qIDs in self.event.getParents().iteritems()
            for qID in qIDs
        ]
        for qID, q in self._getEventsByIDs(parents, svrEvents
                                           or {}).iteritems():
            result.append(
                formatters.packTextBlock(i18n.makeString(
                    '#quests:bonuses/item/task', q.getUserName()),
                                         questID=qID))

        if len(result):
            return formatters.todict(result)
        return formatters.todict([
            formatters.packTextBlock(
                text_styles.alert('#quests:bonuses/notAvailable'))
        ])
示例#3
0
 def _packConditions(self, svrEvents):
     subBlocks = []
     bonus = self.event.bonusCond
     battlesLeft, battlesCount, inrow = None, None, False
     battles = bonus.getConditions().find('battles')
     if battles is not None:
         battlesCount = battles._getTotalValue()
         if not self.event.isCompleted() and bonus.getGroupByValue() is None:
             progress = battles.getProgressPerGroup()
             if None in progress:
                 curProg, totalProg, _, _ = progress[None]
                 battlesLeft = totalProg - curProg
     bonusFmtConds = bonus.format(svrEvents, event=self.event)
     if len(bonusFmtConds):
         subBlocks.extend(formatters.indexing(bonusFmtConds))
     postBattleFmtConds = self.event.postBattleCond.format(svrEvents, event=self.event)
     if len(postBattleFmtConds):
         if len(bonusFmtConds):
             subBlocks.append(formatters.packSeparator(label=i18n.makeString('#quests:details/conditions/postBattle/separator')))
         subBlocks.extend(formatters.indexing(postBattleFmtConds))
     if bonus.isDaily():
         resetHourOffset = (time_utils.ONE_DAY - self._getDailyProgressResetTimeOffset()) / 3600
         if resetHourOffset >= 0:
             subBlocks.append(formatters.packTextBlock(label=formatters.formatYellow('#quests:details/conditions/postBattle/dailyReset') % {'time': time.strftime(i18n.makeString('#quests:details/conditions/postBattle/dailyReset/timeFmt'), time_utils.getTimeStructInLocal(time_utils.getTimeTodayForUTC(hour=resetHourOffset)))}))
     result = []
     if len(subBlocks) or battlesCount:
         if not self.event.isGuiDisabled():
             result.append(formatters.packConditionsBlock(battlesCount, battlesLeft, bonus.isInRow(), conditions=subBlocks))
         else:
             result.append(formatters.packConditionsBlock(conditions=subBlocks))
     if bonus.getGroupByValue() is not None and not self.event.isGuiDisabled():
         progressesFmt = bonus.formatGroupByProgresses(svrEvents, self.event)
         if len(progressesFmt):
             result.append(formatters.packTopLevelContainer(i18n.makeString('#quests:details/conditions/groupBy/%s' % bonus.getGroupByValue()), subBlocks=progressesFmt, isResizable=len(progressesFmt) > 5))
     return result
 def _packConditions(self, svrEvents):
     result = super(_MotiveQuestInfo, self)._packConditions(svrEvents)
     descr = self.event.getDescription()
     if descr:
         result.append(
             formatters.packTextBlock(formatters.formatGray(descr)))
     return result
示例#5
0
 def format(self, svrEvents, event=None):
     conds = self.getConditions()
     if conds.isEmpty():
         subBlocks = [
             formatters.packTextBlock(
                 i18n.makeString(
                     '#quests:details/requirements/vehicle/any'))
         ]
     else:
         subBlocks = conds._formatSubBlocks(svrEvents, event)
     title, note = i18n.makeString(
         '#quests:details/tasks/requirements/vehicleLabel'), ''
     if conds:
         vehDescr = conds.find('vehicleDescr')
         if vehDescr is not None:
             note = makeHtmlString(
                 'html_templates:lobby/quests', 'vehicleDescrLabel', {
                     'count': len(self.getSuitableVehicles()),
                     'total': len(vehDescr.getVehiclesList())
                 })
     if len(subBlocks):
         return formatters.packTopLevelContainer(title=title,
                                                 note=note,
                                                 subBlocks=subBlocks)
     else:
         return
    def __getBonuses(self, chapter, useIconFormat=False):
        if not chapter.isBonusReceived(g_itemsCache.items.stats.tutorialsCompleted):
            result = []
            iconResult = []
            output = []
            bonus = chapter.getBonus()
            if bonus is not None:
                for n, v in bonus.getValues().iteritems():
                    b = getTutorialBonusObj(n, v)
                    if b is not None:
                        if b.hasIconFormat() and useIconFormat:
                            iconResult.extend(b.getList())
                        else:
                            flist = b.formattedList()
                            if flist:
                                result.extend(flist)

            if len(result):
                output.append(formatters.packSimpleBonusesBlock(result))
            if len(iconResult):
                output.append(formatters.packIconAwardBonusBlock(iconResult))
            return formatters.todict(output)
        else:
            return formatters.todict([formatters.packTextBlock("#quests:beginnerQuests/details/noAward")])
            return
示例#7
0
    def __getBonuses(self, chapter, useIconFormat = False):
        if not chapter.isBonusReceived(g_itemsCache.items.stats.tutorialsCompleted):
            result = []
            iconResult = []
            output = []
            bonus = chapter.getBonus()
            if bonus is not None:
                for n, v in bonus.getValues().iteritems():
                    b = getTutorialBonusObj(n, v)
                    if b is not None:
                        if b.hasIconFormat() and useIconFormat:
                            iconResult.extend(b.getList())
                        else:
                            flist = b.formattedList()
                            if flist:
                                result.extend(flist)

            if len(result):
                output.append(formatters.packSimpleBonusesBlock(result))
            if len(iconResult):
                output.append(formatters.packIconAwardBonusBlock(iconResult))
            return formatters.todict(output)
        else:
            return formatters.todict([formatters.packTextBlock('#quests:beginnerQuests/details/noAward')])
            return
示例#8
0
 def _getConditions(self, svrEvents):
     subBlocks = []
     bonus = self.event.bonusCond
     battlesLeft, battlesCount, inrow = None, None, False
     battles = bonus.getConditions().find('battles')
     if battles is not None:
         battlesCount = battles._getTotalValue()
         if not self.event.isCompleted() and bonus.getGroupByValue() is None:
             progress = battles.getProgressPerGroup()
             if None in progress:
                 curProg, totalProg, _, _ = progress[None]
                 battlesLeft = totalProg - curProg
     bonusFmtConds = bonus.format(svrEvents, event=self.event)
     if len(bonusFmtConds):
         subBlocks.extend(formatters.indexing(bonusFmtConds))
     postBattleFmtConds = self.event.postBattleCond.format(svrEvents, event=self.event)
     if len(postBattleFmtConds):
         if len(bonusFmtConds):
             subBlocks.append(formatters.packSeparator(label=i18n.makeString('#quests:details/conditions/postBattle/separator')))
         subBlocks.extend(formatters.indexing(postBattleFmtConds))
     if bonus.isDaily():
         resetHourOffset = (time_utils.ONE_DAY - self._getDailyProgressResetTimeOffset()) / 3600
         if resetHourOffset >= 0:
             subBlocks.append(formatters.packTextBlock(label=formatters.formatYellow('#quests:details/conditions/postBattle/dailyReset') % {'time': time.strftime(i18n.makeString('#quests:details/conditions/postBattle/dailyReset/timeFmt'), time_utils.getTimeStructInLocal(time_utils.getTimeTodayForUTC(hour=resetHourOffset)))}))
     result = []
     if len(subBlocks) or battlesCount:
         if not self.event.isGuiDisabled():
             result.append(formatters.packConditionsBlock(battlesCount, battlesLeft, bonus.isInRow(), conditions=subBlocks))
         else:
             result.append(formatters.packConditionsBlock(conditions=subBlocks))
     if bonus.getGroupByValue() is not None and not self.event.isGuiDisabled():
         progressesFmt = bonus.formatGroupByProgresses(svrEvents, self.event)
         if len(progressesFmt):
             result.append(formatters.packTopLevelContainer(i18n.makeString('#quests:details/conditions/groupBy/%s' % bonus.getGroupByValue()), subBlocks=progressesFmt, isResizable=len(progressesFmt) > 5))
     return formatters.todict(result)
示例#9
0
 def _format(self, condition, event):
     result = []
     if not event.isGuiDisabled():
         key = 'survive' if condition.getValue() else 'notSurvive'
         result.append(
             formatters.packTextBlock(
                 i18n.makeString('#quests:details/conditions/%s' % key)))
     return result
示例#10
0
 def _getBonuses(self, svrEvents, bonuses=None):
     bonuses = bonuses or self.event.getBonuses()
     result = OldStyleBonusesFormatter(
         self.event).getFormattedBonuses(bonuses)
     return formatters.todict(result) if result else formatters.todict([
         formatters.packTextBlock(
             text_styles.alert('#quests:bonuses/notAvailable'))
     ])
def getBattlePassQuestInfo(progress):
    postBattleR = R.strings.battle_pass_2020.reward.postBattle
    if progress.state == BattlePassState.BASE:
        questName = backport.text(postBattleR.title.base(),
                                  level=progress.level)
    else:
        questName = backport.text(postBattleR.title.post(),
                                  level=progress.level)
    progressDesc = backport.text(postBattleR.progress())
    progressDiffTooltip = backport.text(postBattleR.progress.tooltip(),
                                        points=progress.pointsBattleDiff)
    questInfo = {
        'status': 'done' if progress.isDone else '',
        'questID': BattlePassConsts.FAKE_QUEST_ID,
        'rendererType': QUESTS_ALIASES.RENDERER_TYPE_QUEST,
        'eventType': EVENT_TYPE.BATTLE_QUEST,
        'maxProgrVal': progress.pointsTotal,
        'tooltip': TOOLTIPS.QUESTS_RENDERER_LABEL,
        'description': questName,
        'currentProgrVal': progress.pointsNew,
        'tasksCount': -1,
        'progrBarType': 'current' if not progress.isDone else '',
        'linkTooltip': TOOLTIPS.QUESTS_LINKBTN_BATTLEPASS
    }
    progressList = []
    if not progress.isDone:
        progressList = [{
            'description': progressDesc,
            'maxProgrVal': progress.pointsTotal,
            'progressDiff': '+ {}'.format(progress.pointsDiff),
            'progressDiffTooltip': progressDiffTooltip,
            'currentProgrVal': progress.pointsNew,
            'progrBarType': 'current'
        }]
    awards = []
    if progress.isDone:
        awardsList = QuestsBonusComposer(
            BattlePassTextBonusesPacker()).getPreformattedBonuses(
                progress.awards)
        if awardsList:
            awards = [award.getDict() for award in awardsList]
        else:
            awards = [
                formatters.packTextBlock(
                    text_styles.alert(
                        backport.text(R.strings.quests.bonuses.notAvailable()))
                ).getDict()
            ]
    info = {
        'awards': awards,
        'questInfo': questInfo,
        'questType': EVENT_TYPE.BATTLE_QUEST,
        'progressList': progressList,
        'questState': {
            'statusState': 'done' if progress.isDone else 'inProgress'
        }
    }
    return info
示例#12
0
 def _getTopConditions(self, svrEvents):
     result = []
     preBattleFmt = self.event.preBattleCond.format(svrEvents, self.event)
     if preBattleFmt is not None:
         result.extend(preBattleFmt)
     descr = self.event.getDescription()
     if descr:
         result.append(formatters.packTextBlock(formatters.formatGray(descr)))
     return formatters.todict(result)
示例#13
0
 def _getTopConditions(self, svrEvents):
     result = []
     preBattleFmt = self.event.preBattleCond.format(svrEvents, self.event)
     if preBattleFmt is not None:
         result.extend(preBattleFmt)
     descr = self.event.getDescription()
     if descr:
         result.append(formatters.packTextBlock(formatters.formatGray(descr)))
     return formatters.todict(result)
示例#14
0
    def _getBonuses(self, svrEvents, bonuses = None):
        bonuses = bonuses or self.event.getBonuses()
        result, simpleBonusesList, customizationsList, vehiclesList = ([],
         [],
         [],
         [])
        for b in bonuses:
            if b.isShowInGUI():
                flist = []
                if b.getName() == 'dossier':
                    for record in b.getRecords():
                        if record[0] != ACHIEVEMENT_BLOCK.RARE:
                            result.append(formatters.packAchieveElement(RECORD_DB_IDS[record]))

                elif b.getName() == 'customizations':
                    customizationsList.extend(b.getList())
                elif b.getName() == 'vehicles':
                    flist = b.formattedList()
                    if flist:
                        vehiclesList.extend(flist)
                else:
                    flist = b.formattedList()
                    if flist:
                        simpleBonusesList.extend(flist)

        label = ', '.join(simpleBonusesList)
        fullLabel = None
        if len(simpleBonusesList) > self.SIMPLE_BONUSES_MAX_ITEMS:
            label = ', '.join(simpleBonusesList[:self.SIMPLE_BONUSES_MAX_ITEMS]) + '..'
            fullLabel = ', '.join(simpleBonusesList)
        result.append(formatters.packTextBlock(label, fullLabel=fullLabel))
        vehiclesLbl = ', '.join(vehiclesList)
        if len(vehiclesList) > self.SIMPLE_BONUSES_MAX_ITEMS:
            vehiclesLbl = ', '.join(vehiclesList[:self.SIMPLE_BONUSES_MAX_ITEMS]) + '..'
        result.append(formatters.packVehiclesBonusBlock(vehiclesLbl, str(self.event.getID())))
        if len(customizationsList):
            result.append(formatters.packCustomizations(customizationsList))
        parents = [ qID for _, qIDs in self.event.getParents().iteritems() for qID in qIDs ]
        for qID, q in self._getEventsByIDs(parents, svrEvents or {}).iteritems():
            result.append(formatters.packTextBlock(i18n.makeString('#quests:bonuses/item/task', q.getUserName()), questID=qID))

        if len(result):
            return formatters.todict(result)
        return []
示例#15
0
    def _getBonuses(self, svrEvents, bonuses = None, useIconFormat = False):
        bonuses = bonuses or self.event.getBonuses()
        result, simpleBonusesList, customizationsList, vehiclesList, iconBonusesList = ([],
         [],
         [],
         [],
         [])
        for b in bonuses:
            if b.isShowInGUI():
                if b.getName() == 'dossier':
                    for record in b.getRecords():
                        if record[0] != ACHIEVEMENT_BLOCK.RARE:
                            result.append(formatters.packAchieveElement(RECORD_DB_IDS[record]))

                elif b.getName() == 'customizations':
                    customizationsList.extend(b.getList())
                elif b.getName() == 'vehicles':
                    flist = b.formattedList()
                    if flist:
                        vehiclesList.extend(flist)
                elif b.hasIconFormat() and useIconFormat:
                    iconBonusesList.extend(b.getList())
                else:
                    flist = b.formattedList()
                    if flist:
                        simpleBonusesList.extend(flist)

        if len(customizationsList):
            result.append(formatters.packCustomizations(customizationsList))
        if len(iconBonusesList):
            result.append(formatters.packIconAwardBonusBlock(iconBonusesList))
        if len(vehiclesList) > 0:
            vehiclesLbl, _ = self._joinUpToMax(vehiclesList)
            result.append(formatters.packVehiclesBonusBlock(vehiclesLbl, str(self.event.getID())))
        if len(simpleBonusesList) > 0:
            result.append(formatters.packSimpleBonusesBlock(simpleBonusesList))
        parents = [ qID for _, qIDs in self.event.getParents().iteritems() for qID in qIDs ]
        for qID, q in self._getEventsByIDs(parents, svrEvents or {}).iteritems():
            result.append(formatters.packTextBlock(i18n.makeString('#quests:bonuses/item/task', q.getUserName()), questID=qID))

        if len(result):
            return formatters.todict(result)
        return formatters.todict([formatters.packTextBlock(text_styles.alert('#quests:bonuses/notAvailable'))])
示例#16
0
 def _format(self, condition, event):
     if event.isGuiDisabled():
         return []
     label, relation, relationI18nType, value = getResultsData(condition)
     return [
         formatters.packTextBlock(label,
                                  value=value,
                                  relation=relation,
                                  relationI18nType=relationI18nType)
     ]
示例#17
0
    def _getBonuses(self, svrEvents, bonuses = None):
        bonuses = bonuses or self.event.getBonuses()
        result = []
        for b in bonuses:
            if b.isShowInGUI():
                result.append(b.format())

        if len(result):
            return formatters.todict([formatters.packTextBlock(', '.join(result))])
        return []
示例#18
0
    def _getBonuses(self, svrEvents, bonuses = None, useIconFormat = False):
        bonuses = bonuses or self.event.getBonuses()
        result = []
        for b in bonuses:
            if b.isShowInGUI():
                result.append(b.format())

        if len(result):
            return formatters.todict([formatters.packTextBlock(', '.join(result))])
        return []
 def getDetails(self, svrEvents):
     infoList = []
     conditions = [
         formatters.todict(formatters.packQuestDetailsSeparator(
             0, 0, 5, 10))
     ]
     conditions.extend(self._getTopConditions(svrEvents))
     conditions.append(
         formatters.todict(formatters.packQuestDetailsSeparator(
             0, 0, 10, 5)))
     conditions.extend(self._getConditions(svrEvents))
     conditionsContainer = formatters.todict(
         formatters.packMotiveContainer(
             title=i18n.makeString('#quests:quests/conditions'),
             subBlocks=conditions))
     infoList.append(conditionsContainer)
     requirementContainer = formatters.todict(
         formatters.packTopLevelContainer(
             title=i18n.makeString('#quests:quests/requirements'),
             subBlocks=[
                 formatters.packTextBlock(
                     formatters.formatGray(self.event.getRequirementsStr()))
             ]))
     infoList.append(requirementContainer)
     infoList.append(
         formatters.todict(formatters.packQuestDetailsSeparator(0, 0, 5,
                                                                0)))
     tpsContainer = formatters.todict(
         formatters.packTopLevelContainer(title=i18n.makeString(
             '#quests:QuestTaskDetailsView/description'),
                                          subBlocks=[
                                              formatters.packTextBlock(
                                                  formatters.formatGray(
                                                      self.event.getTips()))
                                          ]))
     infoList.append(tpsContainer)
     return {
         'image': RES_ICONS.MAPS_ICONS_HANGARTUTORIAL_GOALSQUEST,
         'title': text_styles.highTitle(self.event.getUserName()),
         'infoList': infoList,
         'awards': self._getBonuses(svrEvents, useIconFormat=False)
     }
示例#20
0
 def _packConditions(self, svrEvents):
     subBlocks = []
     bonus = self.event.bonusCond
     battlesLeft, battlesCount, inrow = None, None, False
     battles = bonus.getConditions().find('battles')
     if battles is not None:
         battlesCount = battles.getTotalValue()
         if not self.event.isCompleted(
         ) and bonus.getGroupByValue() is None:
             progress = battles.getProgressPerGroup()
             if None in progress:
                 curProg, totalProg, _, _ = progress[None]
                 battlesLeft = totalProg - curProg
     bonusFmtConds = bonusCondFormatter.format(bonus, self.event)
     if len(bonusFmtConds):
         subBlocks.extend(formatters.indexing(bonusFmtConds))
     postBattleFmtConds = postBattleConditionFormatter.format(
         self.event.postBattleCond, self.event)
     if len(postBattleFmtConds):
         if len(bonusFmtConds):
             subBlocks.append(
                 formatters.packSeparator(label=i18n.makeString(
                     '#quests:details/conditions/postBattle/separator')))
         subBlocks.extend(formatters.indexing(postBattleFmtConds))
     resetLabel = self._getDailyResetStatus(
         '#quests:details/conditions/postBattle/dailyReset',
         formatters.formatYellow)
     if resetLabel:
         subBlocks.append(formatters.packTextBlock(label=resetLabel))
     result = []
     if len(subBlocks) or battlesCount:
         if not self.event.isGuiDisabled():
             result.append(
                 formatters.packConditionsBlock(battlesCount,
                                                battlesLeft,
                                                bonus.isInRow(),
                                                conditions=subBlocks))
         else:
             result.append(
                 formatters.packConditionsBlock(conditions=subBlocks))
     if bonus.getGroupByValue(
     ) is not None and not self.event.isGuiDisabled():
         progressesFmt = bonusCondFormatter.formatGroupByProgresses(
             bonus, self.event)
         if len(progressesFmt):
             result.append(
                 formatters.packTopLevelContainer(
                     i18n.makeString(
                         '#quests:details/conditions/groupBy/%s' %
                         bonus.getGroupByValue()),
                     subBlocks=progressesFmt,
                     isResizable=len(progressesFmt) > 5))
     return result
 def _getBonuses(self, svrEvents, bonuses=None):
     bonuses = bonuses or self.event.getBonuses()
     result = OldStyleBonusesFormatter(
         self.event).getFormattedBonuses(bonuses)
     if result:
         return [award.getDict() for award in result]
     return [
         formatters.packTextBlock(
             text_styles.alert(
                 backport.text(
                     R.strings.quests.bonuses.notAvailable()))).getDict()
     ]
    def __getBonuses(self, chapter):
        result = []
        bonus = chapter.getBonus()
        if bonus is not None:
            for n, v in bonus.getValues().iteritems():
                b = getTutorialBonusObj(n, v)
                if b is not None:
                    result.append(b.format())

        if len(result):
            return formatters.todict([formatters.packTextBlock(', '.join(result))])
        return []
示例#23
0
 def _formatData(cls, condition, event, current=None, total=None):
     if condition.isAnyVehicleAcceptable():
         if not event.isGuiDisabled():
             return formatters.packTextBlock(i18n.makeString(
                 '%s/all' % cls._getLabelKey(condition)),
                                             value=condition.relationValue,
                                             relation=condition.relation)
     elif 'types' not in condition.data:
         if not event.isGuiDisabled():
             if current is not None and total is not None:
                 return formatters.packTextCondition(getFiltersLabel(
                     cls._getLabelKey(condition), condition),
                                                     current=current,
                                                     total=total)
             else:
                 return formatters.packTextBlock(
                     getFiltersLabel(cls._getLabelKey(condition),
                                     condition),
                     value=condition.relationValue,
                     relation=condition.relation)
     else:
         subBlocks = []
         titleKey = cls._getLabelKey(condition)
         if condition.isNegative():
             titleKey = '%s/not' % titleKey
         subBlocks.append(cls._formatVehsTable(condition, event))
         if len(subBlocks):
             if event.isCompleted():
                 current, total = (None, None)
             return formatters.packContainer(i18n.makeString(titleKey),
                                             isResizable=True,
                                             isOpened=True,
                                             subBlocks=subBlocks,
                                             value=condition.relationValue,
                                             relation=condition.relation,
                                             current=current,
                                             total=total)
     return
示例#24
0
 def _handlerFreeXPToTManXPRate(self, value):
     default = g_itemsCache.items.shop.defaults.freeXPToTManXPRate
     if default <= 0:
         return (formatters.packTextBlock(
             i18n.makeString(
                 QUESTS.
                 DETAILS_MODIFIERS_ECONOMICS_AVAILABLE_FREEXPTOTMANXPRATE),
             makeHtmlString(
                 'html_templates:lobby/quests/actions', _DT.MULTIPLIER,
                 {'value': BigWorld.wg_getIntegralFormat(value)})),
                 ACTION_MODIFIER_TYPE.AVAILABILITY)
     else:
         return self.__pack('freeXPToTManXPRate', value, default,
                            _DT.PERCENT)
示例#25
0
 def format(self, svrEvents, event = None):
     conds = self.getConditions()
     if conds.isEmpty():
         subBlocks = [formatters.packTextBlock(i18n.makeString('#quests:details/requirements/vehicle/any'))]
     else:
         subBlocks = conds._formatSubBlocks(svrEvents, event)
     title, note = i18n.makeString('#quests:details/tasks/requirements/vehicleLabel'), ''
     if conds:
         vehDescr = conds.find('vehicleDescr')
         if vehDescr is not None:
             note = makeHtmlString('html_templates:lobby/quests', 'vehicleDescrLabel', {'count': len(self.getSuitableVehicles()),
              'total': len(vehDescr.getVehiclesList())})
     if len(subBlocks):
         return formatters.packTopLevelContainer(title=title, note=note, subBlocks=subBlocks)
     else:
         return
示例#26
0
    def _format(self, condition, event):
        results = []
        if not event.isGuiDisabled():
            isAllAlive = condition.isAllAlive()
            if isAllAlive is not None:
                key = 'alive' if isAllAlive else 'alive/not'
                results.append(
                    formatters.packTextBlock(
                        i18n.makeString(
                            '#quests:details/conditions/results/unit/%s' %
                            key)))
            resultsFormatter = _BattleResultsFormatter()
            for c in condition.getResults():
                results.extend(resultsFormatter.format(c, event))

        return results
示例#27
0
    def _format(self, condition, event):
        result = []
        if not event.isGuiDisabled():
            camos = []
            for camo in condition.getCamos2ids():
                camoI18key = '#quests:details/conditions/clanKills/camo/%s' % str(
                    camo)
                if i18n.doesTextExist(camoI18key):
                    camos.append(i18n.makeString(camoI18key))

            i18nKey = '#quests:details/conditions/clanKills'
            if condition.isNegative():
                i18nKey = '%s/not' % i18nKey
            if len(camos):
                result = [
                    formatters.packTextBlock(
                        i18n.makeString(i18nKey, camos=', '.join(camos)))
                ]
        return result
示例#28
0
 def makeUnavailableBlockData():
     return formatters.packTextBlock(
         text_styles.alert(
             backport.text(R.strings.quests.bonuses.notAvailable())))
示例#29
0
 def _handlerFreeXPToTManXPRate(self, value):
     default = g_itemsCache.items.shop.defaults.freeXPToTManXPRate
     if default <= 0:
         return (formatters.packTextBlock(i18n.makeString(QUESTS.DETAILS_MODIFIERS_ECONOMICS_AVAILABLE_FREEXPTOTMANXPRATE), makeHtmlString('html_templates:lobby/quests/actions', _DT.MULTIPLIER, {'value': BigWorld.wg_getIntegralFormat(value)})), ACTION_MODIFIER_TYPE.AVAILABILITY)
     else:
         return self.__pack('freeXPToTManXPRate', value, default, _DT.PERCENT)
示例#30
0
def getBattlePassQuestInfo(progress):
    postBattleR = R.strings.battle_pass.reward.postBattle
    chapterName = backport.text(
        R.strings.battle_pass.chapter.name.num(progress.chapter)())
    questName = backport.text(postBattleR.title(),
                              level=progress.level,
                              chapter=chapterName)
    progressDesc = backport.text(postBattleR.progress())
    progressDiffTooltip = backport.text(postBattleR.progress.tooltip(),
                                        points=progress.pointsBattleDiff)
    questInfo = {
        'status':
        MISSIONS_STATES.COMPLETED
        if progress.isDone else MISSIONS_STATES.IN_PROGRESS,
        'questID':
        BattlePassConsts.FAKE_QUEST_ID,
        'rendererType':
        QUESTS_ALIASES.RENDERER_TYPE_QUEST,
        'eventType':
        EVENT_TYPE.BATTLE_QUEST,
        'maxProgrVal':
        progress.pointsTotal,
        'tooltip':
        TOOLTIPS.QUESTS_RENDERER_LABEL,
        'description':
        questName,
        'currentProgrVal':
        progress.pointsNew,
        'tasksCount':
        -1,
        'progrBarType':
        formatters.PROGRESS_BAR_TYPE.SIMPLE
        if not progress.isDone else formatters.PROGRESS_BAR_TYPE.NONE,
        'linkTooltip':
        TOOLTIPS.QUESTS_LINKBTN_BATTLEPASS
    }
    progressList = []
    if not progress.isDone:
        progressList = [{
            'description': progressDesc,
            'maxProgrVal': progress.pointsTotal,
            'progressDiff': '+ {}'.format(progress.pointsDiff),
            'progressDiffTooltip': progressDiffTooltip,
            'currentProgrVal': progress.pointsNew,
            'progrBarType': formatters.PROGRESS_BAR_TYPE.SIMPLE
        }]
    awards = []
    if progress.isDone:
        awardsList = QuestsBonusComposer(
            BattlePassTextBonusesPacker()).getPreformattedBonuses(
                progress.awards)
        if awardsList:
            awards = [award.getDict() for award in awardsList]
        else:
            awards = [
                formatters.packTextBlock(
                    text_styles.alert(
                        backport.text(R.strings.quests.bonuses.notAvailable()))
                ).getDict()
            ]
    info = {
        'awards':
        awards,
        'questInfo':
        questInfo,
        'questType':
        EVENT_TYPE.BATTLE_QUEST,
        'progressList':
        progressList,
        'questState': {
            'statusState':
            MISSIONS_STATES.COMPLETED
            if progress.isDone else MISSIONS_STATES.IN_PROGRESS
        },
        'linkBtnTooltip':
        '' if progress.isEnabled else backport.text(
            R.strings.battle_pass.progression.error()),
        'linkBtnEnabled':
        progress.isEnabled
    }
    return info
示例#31
0
 def getDetails(self, svrEvents):
     infoList = []
     conditions = [formatters.todict(formatters.packQuestDetailsSeparator(0, 0, 5, 10))]
     conditions.extend(self._getTopConditions(svrEvents))
     conditions.append(formatters.todict(formatters.packQuestDetailsSeparator(0, 0, 10, 5)))
     conditions.extend(self._getConditions(svrEvents))
     conditionsContainer = formatters.todict(formatters.packMotiveContainer(title=i18n.makeString('#quests:quests/conditions'), subBlocks=conditions))
     infoList.append(conditionsContainer)
     requirementContainer = formatters.todict(formatters.packTopLevelContainer(title=i18n.makeString('#quests:quests/requirements'), subBlocks=[formatters.packTextBlock(formatters.formatGray(self.event.getRequirementsStr()))]))
     infoList.append(requirementContainer)
     infoList.append(formatters.todict(formatters.packQuestDetailsSeparator(0, 0, 5, 0)))
     tpsContainer = formatters.todict(formatters.packTopLevelContainer(title=i18n.makeString('#quests:QuestTaskDetailsView/description'), subBlocks=[formatters.packTextBlock(formatters.formatGray(self.event.getTips()))]))
     infoList.append(tpsContainer)
     return {'image': RES_ICONS.MAPS_ICONS_HANGARTUTORIAL_GOALSQUEST,
      'title': text_styles.highTitle(self.event.getUserName()),
      'infoList': infoList,
      'awards': self._getBonuses(svrEvents, useIconFormat=False)}
示例#32
0
 def _packConditions(self, svrEvents):
     result = super(_MotiveQuestInfo, self)._packConditions(svrEvents)
     descr = self.event.getDescription()
     if descr:
         result.append(formatters.packTextBlock(formatters.formatGray(descr)))
     return result