def _getConditions(self, svrEvents): modifiers = defaultdict(list) for m in self.event.getModifiers(): fmtResult = m.format(self.event) if fmtResult is not None: if isinstance(fmtResult, types.DictType): for fDType, fData in fmtResult.iteritems(): modifiers[fDType].extend(fData) else: modifiers[m.getType()].extend(fmtResult) result = [] if len(modifiers[ACTION_MODIFIER_TYPE.DISCOUNT]): result.append( formatters.packTopLevelContainer( i18n.makeString(QUESTS.DETAILS_MODIFIERS_TITLE_DISCOUNT), subBlocks=modifiers[ACTION_MODIFIER_TYPE.DISCOUNT])) availabilityModifiers = modifiers.get( ACTION_MODIFIER_TYPE.AVAILABILITY, []) if len(availabilityModifiers): result.append( formatters.packTopLevelContainer( i18n.makeString( QUESTS.DETAILS_MODIFIERS_TITLE_AVAILABILITY), subBlocks=availabilityModifiers)) if len(modifiers[ACTION_MODIFIER_TYPE.RENT]): result.append( formatters.packTopLevelContainer( i18n.makeString(QUESTS.DETAILS_MODIFIERS_TITLE_DISCOUNT), subBlocks=modifiers[ACTION_MODIFIER_TYPE.RENT])) for fmtData in modifiers[ACTION_MODIFIER_TYPE.SELLING]: result.append(fmtData) return formatters.todict(result)
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)
def format(self, svrEvents, event=None): conds = self.getConditions() if not conds.isEmpty(): return formatters.packTopLevelContainer( subBlocks=conds._formatSubBlocks(svrEvents, event)) else: return None
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 _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 _getConditions(self, svrEvents): modifiers = defaultdict(list) for m in self.event.getModifiers(): fmtData = m.format(self.event) if fmtData is not None: modifiers[m.getType()].extend(fmtData) result = [] if len(modifiers[ACTION_MODIFIER_TYPE.DISCOUNT]): result.append(formatters.packTopLevelContainer(i18n.makeString(QUESTS.DETAILS_MODIFIERS_TITLE_DISCOUNT), subBlocks=modifiers[ACTION_MODIFIER_TYPE.DISCOUNT])) if len(modifiers[ACTION_MODIFIER_TYPE.RENT]): result.append(formatters.packTopLevelContainer(i18n.makeString(QUESTS.DETAILS_MODIFIERS_TITLE_DISCOUNT), subBlocks=modifiers[ACTION_MODIFIER_TYPE.RENT])) for fmtData in modifiers[ACTION_MODIFIER_TYPE.SELLING]: result.append(fmtData) return formatters.todict(result)
def format(self, event = None): vehs = [] discounts = {} for v, value in sorted(self.parse().iteritems(), key=operator.itemgetter(0)): discounts[v] = self._getDiscountParams(v, value) vehs.append(v) return [formatters.packTopLevelContainer(QUESTS.DETAILS_MODIFIERS_TITLE_SELLING, subBlocks=[formatters.packVehiclesBlock(formatters.makeUniqueTableID(event, self.getName()), formatters.VEH_ACTION_HEADER, vehs=_prepareVehData(vehs, discounts), disableChecker=lambda veh: not veh.isInInventory, showInHangarCB=True, isShowInHangarCBChecked=True)])]
def format(self, svrEvents, event=None): subBlocks = self.getConditions()._formatSubBlocks(svrEvents, event) if len(subBlocks): return formatters.packTopLevelContainer(title=i18n.makeString( '#quests:details/tasks/requirements/accountLabel'), subBlocks=subBlocks) else: return None
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)}
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 _getConditions(self, svrEvents): modifiers = defaultdict(list) for m in self.event.getModifiers(): fmtResult = m.format(self.event) if fmtResult is not None: if isinstance(fmtResult, types.DictType): for fDType, fData in fmtResult.iteritems(): modifiers[fDType].extend(fData) else: modifiers[m.getType()].extend(fmtResult) result = [] if len(modifiers[ACTION_MODIFIER_TYPE.DISCOUNT]): result.append( formatters.packTopLevelContainer( i18n.makeString(QUESTS.DETAILS_MODIFIERS_TITLE_DISCOUNT), subBlocks=modifiers[ACTION_MODIFIER_TYPE.DISCOUNT], ) ) availabilityModifiers = modifiers.get(ACTION_MODIFIER_TYPE.AVAILABILITY, []) if len(availabilityModifiers): result.append( formatters.packTopLevelContainer( i18n.makeString(QUESTS.DETAILS_MODIFIERS_TITLE_AVAILABILITY), subBlocks=availabilityModifiers ) ) if len(modifiers[ACTION_MODIFIER_TYPE.RENT]): result.append( formatters.packTopLevelContainer( i18n.makeString(QUESTS.DETAILS_MODIFIERS_TITLE_DISCOUNT), subBlocks=modifiers[ACTION_MODIFIER_TYPE.RENT], ) ) for fmtData in modifiers[ACTION_MODIFIER_TYPE.SELLING]: result.append(fmtData) return formatters.todict(result)
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 format(self, event=None): vehs = [] discounts = {} for v, value in sorted(self.parse().iteritems(), key=operator.itemgetter(0)): discounts[v] = self._getDiscountParams(v, value) vehs.append(v) return [ formatters.packTopLevelContainer( QUESTS.DETAILS_MODIFIERS_TITLE_SELLING, subBlocks=[ formatters.packVehiclesBlock( formatters.makeUniqueTableID(event, self.getName()), formatters.VEH_ACTION_HEADER, vehs=_prepareVehData(vehs, discounts), disableChecker=lambda veh: not veh.isInInventory, showInHangarCB=True, isShowInHangarCBChecked=True) ]) ]
def format(self, svrEvents, event = None): conds = self.getConditions() if not conds.isEmpty(): return formatters.packTopLevelContainer(subBlocks=conds._formatSubBlocks(svrEvents, event)) else: return None
def format(self, svrEvents, event = None): subBlocks = self.getConditions()._formatSubBlocks(svrEvents, event) if len(subBlocks): return formatters.packTopLevelContainer(title=i18n.makeString('#quests:details/tasks/requirements/accountLabel'), subBlocks=subBlocks) else: return None