def __getItemTabsData(self): tabsData = [] pluses = [] if self.__ctx.modeId == CustomizationModes.STYLED: return (tabsData, pluses) visibleTabs = self.getVisibleTabs() outfit = self.__ctx.mode.currentOutfit for tabId in visibleTabs: slotType = CustomizationTabs.SLOT_TYPES[tabId] itemTypeName = GUI_ITEM_TYPE_NAMES[slotType] slotsCount, filledSlotsCount = checkSlotsFilling(outfit, slotType) showPlus = filledSlotsCount < slotsCount tabsData.append({ 'label': _ms(ITEM_TYPES.customizationPlural(itemTypeName)), 'icon': RES_ICONS.getCustomizationIcon(itemTypeName), 'tooltip': makeTooltip(ITEM_TYPES.customizationPlural(itemTypeName), TOOLTIPS.customizationItemTab(itemTypeName)), 'id': tabId }) pluses.append(showPlus) return (tabsData, pluses)
def _packBlocks(self, role): blocks = [] bodyStr = '%s/%s' % (TOOLTIPS.VEHICLEPREVIEW_CREW, role) crewParams = [ text_styles.neutral(param) for param in _CREW_TOOLTIP_PARAMS[role] ] blocks.append( formatters.packTitleDescBlock( text_styles.highTitle(ITEM_TYPES.tankman_roles(role)), text_styles.main(_ms(bodyStr, *crewParams)))) vehicle = self.context.getVehicle() for idx, tankman in vehicle.crew: if tankman.role == role: otherRoles = list(vehicle.descriptor.type.crewRoles[idx]) otherRoles.remove(tankman.role) if otherRoles: rolesStr = ', '.join([ text_styles.stats(_ms(ITEM_TYPES.tankman_roles(r))) for r in otherRoles ]) blocks.append( formatters.packTextBlockData( text_styles.main( _ms(TOOLTIPS. VEHICLEPREVIEW_CREW_ADDITIONALROLES, roles=rolesStr)))) return blocks
def __getItemTabsData(self): data = [] pluses = [] for tabIdx in self.__ctx.visibleTabs: itemTypeID = TABS_SLOT_TYPE_MAPPING[tabIdx] typeName = GUI_ITEM_TYPE_NAMES[itemTypeID] slotsCount, filledSlotsCount = self.__ctx.checkSlotsFilling( itemTypeID, self.__ctx.currentSeason) showPlus = filledSlotsCount < slotsCount data.append({ 'label': _ms(ITEM_TYPES.customizationPlural(typeName)), 'icon': RES_ICONS.getCustomizationIcon(typeName) if itemTypeID != GUI_ITEM_TYPE.STYLE else RES_ICONS. MAPS_ICONS_CUSTOMIZATION_PROPERTY_SHEET_IDLE_ICON_FULL_TANK, 'tooltip': makeTooltip( ITEM_TYPES.customizationPlural(typeName), TOOLTIPS.customizationItemTab(typeName) if itemTypeID != GUI_ITEM_TYPE.STYLE else CUSTOMIZATION.DEFAULTSTYLE_LABEL), 'id': tabIdx }) pluses.append(showPlus) return data, pluses
def __getItemTabsData(self): data = [] for tabIdx in self.__getVisibleTabs(): itemTypeID = TABS_ITEM_MAPPING[tabIdx] typeName = GUI_ITEM_TYPE_NAMES[itemTypeID] data.append({'label': _ms(ITEM_TYPES.customizationPlural(typeName)), 'tooltip': makeTooltip(ITEM_TYPES.customizationPlural(typeName), TOOLTIPS.customizationItemTab(typeName)), 'id': tabIdx}) return data
def __getItemTabsData(self): data = [] pluses = [] for tabIdx in self.__ctx.visibleTabs: itemTypeID = TABS_ITEM_MAPPING[tabIdx] typeName = GUI_ITEM_TYPE_NAMES[itemTypeID] showPlus = not self.__ctx.checkSlotsFilling(itemTypeID, self.__ctx.currentSeason) data.append({'label': _ms(ITEM_TYPES.customizationPlural(typeName)), 'tooltip': makeTooltip(ITEM_TYPES.customizationPlural(typeName), TOOLTIPS.customizationItemTab(typeName)), 'id': tabIdx}) pluses.append(showPlus) return (data, pluses)
def _packBlocks(self, role): blocks = [] bodyStr = '%s/%s' % (TOOLTIPS.VEHICLEPREVIEW_CREW, role) crewParams = [ text_styles.neutral(param) for param in _CREW_TOOLTIP_PARAMS[role] ] blocks.append(formatters.packTitleDescBlock(text_styles.highTitle(ITEM_TYPES.tankman_roles(role)), text_styles.main(_ms(bodyStr, *crewParams)))) vehicle = self.context.getVehicle() for idx, tankman in vehicle.crew: if tankman.role == role: otherRoles = list(vehicle.descriptor.type.crewRoles[idx]) otherRoles.remove(tankman.role) if otherRoles: rolesStr = ', '.join([ text_styles.stats(_ms(ITEM_TYPES.tankman_roles(r))) for r in otherRoles ]) blocks.append(formatters.packTextBlockData(text_styles.main(_ms(TOOLTIPS.VEHICLEPREVIEW_CREW_ADDITIONALROLES, roles=rolesStr)))) return blocks
def __updateAmmo(self, shellsData=None, historicalBattleID=-1): shells = [] stateWarning = False if g_currentVehicle.isPresent(): vehicle = g_currentVehicle.item isAmmoFull = vehicle.isAmmoFull or historicalBattleID != -1 stateWarning = vehicle.isBroken or not isAmmoFull or not g_currentVehicle.isAutoLoadFull( ) or not g_currentVehicle.isAutoEquipFull() if shellsData is None: shellsData = map(lambda shell: (shell, shell.count), vehicle.shells) for shell, count in shellsData: shells.append({ 'id': shell.intCD, 'ammunitionType': shell.type, 'label': ITEM_TYPES.shell_kindsabbreviation(shell.type), 'icon': '../maps/icons/ammopanel/ammo/%s' % shell.descriptor['icon'][0], 'count': count, 'historicalBattleID': historicalBattleID, 'tooltip': '', 'tooltipType': TOOLTIPS_CONSTANTS.HANGAR_SHELL }) self.as_setAmmoS(shells, stateWarning)
def getCrewBoosterDescription(self, isPerkReplace, formatter=None): if not self.isCrewBooster(): raise SoftException('This description is only for Crew Booster!') action = i18n.makeString( ARTEFACTS.CREWBATTLEBOOSTER_DESCR_REPLACE if isPerkReplace else ARTEFACTS.CREWBATTLEBOOSTER_DESCR_BOOST) if self.getAffectedSkillName() in PERKS: skillOrPerk = i18n.makeString( ARTEFACTS.CREWBATTLEBOOSTER_DESCR_PERK) else: skillOrPerk = i18n.makeString( ARTEFACTS.CREWBATTLEBOOSTER_DESCR_SKILL) skillName = i18n.makeString( ITEM_TYPES.tankman_skills(self.getAffectedSkillName())) description = i18n.makeString(ARTEFACTS.CREWBATTLEBOOSTER_DESCR_COMMON) if formatter is None: formatted = description.format(action=action, skillOrPerk=skillOrPerk, name=skillName, colorTagOpen='', colorTagClose='') else: formatted = description.format(action=action, skillOrPerk=skillOrPerk, name=skillName, **formatter) return formatted
def __getQuestItem(self, quest): if self.__battleRoyaleController.isBattleRoyaleMode(): return getQuestTooltipBlock(quest) bonusNames = [] for bonus in quest.getBonuses(): if bonus.getName() == 'battleToken': bonusNames.extend(_StringTokenBonusFormatter().format(bonus)) bonusFormat = bonus.format() if bonusFormat: if isinstance(bonus, CustomizationsBonus): for item in bonus.getCustomizations(): itemTypeName = item.get('custType') if itemTypeName == 'projection_decal': itemTypeName = GUI_ITEM_TYPE_NAMES[ GUI_ITEM_TYPE.PROJECTION_DECAL] elif itemTypeName == 'personal_number': itemTypeName = GUI_ITEM_TYPE_NAMES[ GUI_ITEM_TYPE.PERSONAL_NUMBER] bonusFmt = _ms(ITEM_TYPES.customization(itemTypeName)) bonusNames.append(bonusFmt) else: bonusNames.extend(bonusFormat.split(', ')) isAvailable, _ = quest.isAvailable() return self._packQuest(quest.getUserName(), bonusNames, isAvailable)
def __createPenaltiesStr(self, penalties): result = [] for tankmanType, value, isOtherVehicle in penalties: if not param_formatter.isRelativeParameter(self.__paramName): valueStr = str( param_formatter.baseFormatParameter( self.__paramName, value)) if value > 0: valueStr = '+' + valueStr valueStr = text_styles.error( _ms(TOOLTIPS.VEHICLEPARAMS_PENALTY_TANKMANLEVEL_VALUE, value=valueStr)) else: valueStr = '' if isOtherVehicle: locKey = TOOLTIPS.VEHICLEPARAMS_PENALTY_TANKMANDIFFERENTVEHICLE_TEMPLATE else: locKey = TOOLTIPS.VEHICLEPARAMS_PENALTY_TANKMANLEVEL_TEMPLATE result.append( text_styles.main( _ms(locKey, tankmanType=_ms(ITEM_TYPES.tankman_roles(tankmanType)), value=valueStr))) return '\n'.join(result)
def __updateAmmo(self): shells = [] stateWarning = False if g_currentVehicle.isPresent(): vehicle = g_currentVehicle.item stateWarning = vehicle.isBroken or not vehicle.isAmmoFull or not g_currentVehicle.isAutoLoadFull( ) or not g_currentVehicle.isAutoEquipFull() for shell in vehicle.shells: if shell.isHidden: continue shells.append({ 'id': str(shell.intCD), 'type': shell.type, 'label': ITEM_TYPES.shell_kindsabbreviation(shell.type), 'icon': '../maps/icons/ammopanel/ammo/%s' % shell.descriptor['icon'][0], 'count': shell.count, 'tooltip': '', 'tooltipType': TOOLTIPS_CONSTANTS.HANGAR_SHELL }) self.as_setAmmoS(shells, stateWarning)
def _getHistoricalBattleData(self): historicalBattleData = None if self.preQueueFunctional.getQueueType() == QUEUE_TYPE.HISTORICAL: battleId = self.preQueueFunctional.getSetting( PREQUEUE_SETTING_NAME.BATTLE_ID) battle = g_eventsCache.getHistoricalBattles().get(battleId) if battle is not None: vehicle = g_currentVehicle.item if battle.canParticipateWith(vehicle.intCD): shellsItems = battle.getShellsLayout(vehicle.intCD) priceString = battle.getShellsLayoutFormatedPrice( vehicle.intCD, self.app.colorManager, True, True) historicalBattleData = { 'price': priceString, 'shells': [], 'battleID': battleId } shells = historicalBattleData['shells'] for shell, count in shellsItems: shells.append({ 'id': str(shell.intCD), 'type': shell.type, 'label': ITEM_TYPES.shell_kindsabbreviation(shell.type), 'icon': '../maps/icons/ammopanel/ammo/%s' % shell.descriptor['icon'][0], 'count': count }) return historicalBattleData
def __updateAmmo(self, shellsData = None, historicalBattleID = -1): ammo = {'gunName': '', 'maxAmmo': 0, 'defaultAmmoCount': 0, 'vehicleLocked': True, 'shells': [], 'stateWarning': 0} if g_currentVehicle.isPresent(): vehicle = g_currentVehicle.item default_ammo_count = 0 default_ammo = dict(((s.intCD, s.defaultCount) for s in vehicle.shells)) isAmmoFull = vehicle.isAmmoFull or historicalBattleID != -1 stateWarning = vehicle.isBroken or not isAmmoFull or not g_currentVehicle.isAutoLoadFull() or not g_currentVehicle.isAutoEquipFull() for compactDescr, count in default_ammo.iteritems(): default_ammo_count += count ammo.update({'gunName': vehicle.gun.longUserName, 'maxAmmo': vehicle.ammoMaxSize, 'defaultAmmoCount': default_ammo_count, 'vehicleLocked': g_currentVehicle.isLocked(), 'stateWarning': int(stateWarning)}) if shellsData is None: shellsData = map(lambda shell: (shell, shell.count), vehicle.shells) shells = ammo.get('shells') for shell, count in shellsData: shells.append({'id': str(shell.intCD), 'type': shell.type, 'label': ITEM_TYPES.shell_kindsabbreviation(shell.type), 'icon': '../maps/icons/ammopanel/ammo/%s' % shell.descriptor['icon'][0], 'count': count, 'historicalBattleID': historicalBattleID}) self.as_setAmmoS(ammo)
def getCrewBoosterDescription(self, isPerkReplace, formatter=None): """ Constructs crew booster description. There can be perk replace or perk boost text. :param isPerkReplace: should 'perk replace' or 'perk boost' text be returned :param formatter: pass function to format the result, None - without formatting :return: formatted string """ if not self.isCrewBooster(): raise AssertionError('This description is only for Crew Booster!') action = i18n.makeString( ARTEFACTS.CREWBATTLEBOOSTER_DESCR_REPLACE if isPerkReplace else ARTEFACTS.CREWBATTLEBOOSTER_DESCR_BOOST) if self.getAffectedSkillName() in PERKS: skillOrPerk = i18n.makeString( ARTEFACTS.CREWBATTLEBOOSTER_DESCR_PERK) else: skillOrPerk = i18n.makeString( ARTEFACTS.CREWBATTLEBOOSTER_DESCR_SKILL) skillName = i18n.makeString( ITEM_TYPES.tankman_skills(self.getAffectedSkillName())) description = i18n.makeString( ARTEFACTS.CREWBATTLEBOOSTER_DESCR_COMMON) formatted = formatter is None and description.format( action=action, skillOrPerk=skillOrPerk, name=skillName, colorTagOpen='', colorTagClose='') else: formatted = description.format(action=action, skillOrPerk=skillOrPerk, name=skillName, **formatter) return formatted
def __getCrewData(self, currentVehicle, showTankmanSkills): regularCrewList, uniqueCrewList = [], [] if currentVehicle: uniqueCrewList.extend(getUniqueMembers(currentVehicle)) if self.__customCrew: for idx, tankman in self.__customCrew: tankmanData = tankman.getVO(showTankmanSkills) tankmanData.update({'crewId': idx}) if tankman.iconID or tankman.isFemale: uniqueCrewList.append(tankmanData) regularCrewList.append(tankmanData) else: for idx, tankman in currentVehicle.crew: role = tankman.descriptor.role roleIdx = SKILL_INDICES[role] regularCrewList.append({ 'crewId': roleIdx, 'icon': RES_ICONS.getItemBonus42x42(role), 'name': ITEM_TYPES.tankman_roles(role), 'tooltip': TOOLTIPS_CONSTANTS.VEHICLE_PREVIEW_CREW_MEMBER, 'role': role }) return (regularCrewList, uniqueCrewList)
def __createTankmanIsOutStr(self, types): men = '' typesLen = len(types) for i, type in enumerate(types): men += _ms(ITEM_TYPES.tankman_roles(type)) if i < typesLen - 1: men += ', ' return text_styles.alert(_ms(TOOLTIPS.VEHICLEPARAMS_WARNING_TANKMANISOUT, tankmen=men))
def __packSkill(crewRole, skills): skills = cmp_helpers.sortSkills(skills) skillsStr = ' '.join( (icons.makeImageTag(getSkillSmallIconPath(skillType), 14, 14, 0, 0) for skillType in skills)) return formatters.packCrewSkillsBlockData( text_styles.main(ITEM_TYPES.tankman_roles(crewRole)), skillsStr, getRoleWhiteIconPath(crewRole), padding={'left': -10})
def _getFootNoteBlock(self, noteType): if noteType == 'optional': desc = text_styles.standard(TOOLTIPS.VEHICLEPARAMS_BONUS_SITUATIONAL) img = RES_ICONS.MAPS_ICONS_TOOLTIP_ASTERISK_OPTIONAL else: conditionsToActivate = set(self._extendedData.inactiveBonuses.values()) conditionsToActivate = map(lambda (bnsID, _): _ms(ITEM_TYPES.tankman_skills(bnsID)), conditionsToActivate) desc = text_styles.standard(_ms(TOOLTIPS.VEHICLEPARAMS_BONUS_INACTIVEDESCRIPTION, skillName=', '.join(conditionsToActivate))) img = RES_ICONS.MAPS_ICONS_TOOLTIP_ASTERISK_RED return [formatters.packImageTextBlockData(title='', desc=desc, img=img, imgPadding=formatters.packPadding(left=4, top=3), txtGap=-4, txtOffset=20, padding=formatters.packPadding(left=59, right=20))]
def __createTankmanIsOutStr(self, types): men = '' typesLen = len(types) for i, type in enumerate(types): men += _ms(ITEM_TYPES.tankman_roles(type)) if i < typesLen - 1: men += ', ' return text_styles.alert( _ms(TOOLTIPS.VEHICLEPARAMS_WARNING_TANKMANISOUT, tankmen=men))
def _update(self): crewData = [] for _, tankman in g_currentPreviewVehicle.item.crew: role = tankman.descriptor.role crewData.append({ 'icon': RES_ICONS.getItemBonus42x42(role), 'name': text_styles.middleTitle(ITEM_TYPES.tankman_roles(role)), 'tooltip': TOOLTIPS_CONSTANTS.VEHICLE_PREVIEW_CREW_MEMBER, 'role': role }) vehicleCrewComment = i18n.makeString( TOOLTIPS.VEHICLEPREVIEW_VEHICLEPANEL_INFO_HEADER_NOCREW) if self.__vehicleItems and self.__crewItems: currentVehicle = g_currentPreviewVehicle.item gID = None for item in self.__vehicleItems: if item.id == currentVehicle.intCD: gID = item.groupID break try: topCrewItem = sorted( [item for item in self.__crewItems if item.groupID == gID], key=lambda item: ItemPackTypeGroup.CREW.index(item.type ))[-1] except IndexError: topCrewItem = None if topCrewItem is not None: pctValue = { ItemPackType.CREW_50: 50, ItemPackType.CREW_75: 75, ItemPackType.CREW_100: 100 }.get(topCrewItem.type) if pctValue is not None: vehicleCrewComment = i18n.makeString( TOOLTIPS. VEHICLEPREVIEW_VEHICLEPANEL_INFO_HEADER_WITHCREW, pctValue) self.as_setDataS({ 'listDesc': text_styles.main( VEHICLE_PREVIEW.INFOPANEL_TAB_CREWINFO_LISTDESC_TEXT), 'vehicleCrewComment': text_styles.middleTitle(vehicleCrewComment), 'crewList': crewData }) return
def __packCrewInfoData(self): crewData = [] for idx, tankman in g_currentPreviewVehicle.item.crew: role = tankman.descriptor.role crewData.append({'icon': getBonusIcon42x42(role), 'name': text_styles.middleTitle(ITEM_TYPES.tankman_roles(role)), 'tooltip': TOOLTIPS_CONSTANTS.VEHICLE_PREVIEW_CREW_MEMBER, 'role': role}) return {'listDesc': text_styles.main(VEHICLE_PREVIEW.INFOPANEL_TAB_CREWINFO_LISTDESC_TEXT), 'crewList': crewData, 'showNationFlag': False}
def _extractDataFromElement(self): self._isEmpty = not self._item if not self._isEmpty: self._name = text_styles.highTitle(self._item.userName) self._desc = self.__generateDescription() else: itemTypeID = TABS_ITEM_MAPPING.get(self._c11nView.getCurrentTab()) itemTypeName = GUI_ITEM_TYPE_NAMES[itemTypeID] self._name = text_styles.highTitle( _ms(VEHICLE_CUSTOMIZATION.CUSTOMIZATION_POPOVER_EMPTYTEXT, elementType=_ms(ITEM_TYPES.customization(itemTypeName)))) self._desc = text_styles.neutral( VEHICLE_CUSTOMIZATION.CUSTOMIZATION_POPOVER_EMPTYSLOT_HINT)
def construct(self): block = [] module = self.module vehicle = self.configuration.vehicle if module.isCrewBooster(): skillLearnt = module.isAffectedSkillLearnt(vehicle) skillName = _ms( ITEM_TYPES.tankman_skills(module.getAffectedSkillName())) replaceText = module.getCrewBoosterAction(True) boostText = module.getCrewBoosterAction(False) skillNotLearntText = text_styles.standard( TOOLTIPS.BATTLEBOOSTER_SKILL_NOT_LEARNT) skillLearntText = text_styles.standard( TOOLTIPS.BATTLEBOOSTER_SKILL_LEARNT) applyStyles = vehicle is not None replaceText, boostText = self.__getSkillTexts( skillLearnt, replaceText, boostText, applyStyles) block.append( formatters.packImageTextBlockData( title=replaceText, img=RES_ICONS.MAPS_ICONS_BUTTONS_CHECKMARK if not skillLearnt and applyStyles else None, imgPadding=formatters.packPadding(left=2, top=3), txtOffset=20)) block.append( formatters.packImageTextBlockData(title=skillNotLearntText % skillName, txtOffset=20)) block.append( formatters.packImageTextBlockData( title=boostText, img=RES_ICONS.MAPS_ICONS_BUTTONS_CHECKMARK if skillLearnt and applyStyles else None, imgPadding=formatters.packPadding(left=2, top=3), txtOffset=20, padding=formatters.packPadding(top=15))) block.append( formatters.packImageTextBlockData(title=skillLearntText % skillName, txtOffset=20)) else: desc = text_styles.bonusAppliedText( module.getOptDeviceBoosterDescription(vehicle)) block.append( formatters.packTitleDescBlock( title='', desc=desc, padding=formatters.packPadding(top=-8))) return block
def _extractDataFromElement(base, self): if isinstance(self._c11nView, MainView): return base(self) self._isEmpty = not self._item if not self._isEmpty: self._name = text_styles.highTitle(self._item.userName) self._desc = self._AnchorProperties__generateDescription() else: itemTName = GUI_ITEM_TYPE_NAMES[tabToItem( self._c11nView.getCurrentTab())] self._name = text_styles.highTitle( _ms(VEHICLE_CUSTOMIZATION.CUSTOMIZATION_POPOVER_EMPTYTEXT, elementType=_ms(ITEM_TYPES.customization(itemTName)))) self._desc = text_styles.neutral( VEHICLE_CUSTOMIZATION.CUSTOMIZATION_POPOVER_EMPTYSLOT_HINT)
def getDisplayableData(self, battleID, vehicleID): battle = g_eventsCache.getHistoricalBattles().get(battleID) shellsItems = battle.getShellsLayout(int(vehicleID)) priceString = battle.getShellsLayoutFormatedPrice(int(vehicleID), self.app.colorManager, True, True) data = {'price': priceString, 'shells': []} shells = data['shells'] for shell, count in shellsItems: shells.append({'id': str(shell.intCD), 'type': shell.type, 'label': ITEM_TYPES.shell_kindsabbreviation(shell.type), 'icon': '../maps/icons/ammopanel/ammo/%s' % shell.descriptor['icon'][0], 'count': count}) return data
def __createBonusesStr(self, bonuses): result = [] for bnsId, bnsType in bonuses: if bnsType in _ARTEFACT_TYPES: bnsTypeStr = "" if bnsType == _EQUIPMENT: bnsTypeStr = TOOLTIPS.VEHICLE_EQUIPMENTS if bnsType == _OPTION_DEVICE: bnsTypeStr = TOOLTIPS.VEHICLE_DEVICES result.append( text_styles.main( _ms( TOOLTIPS.VEHICLEPARAMS_BONUS_ARTEFACT_TEMPLATE, name=_ms("#artefacts:%s/name" % bnsId), type=text_styles.standard(bnsTypeStr), ) ) ) elif bnsType == _SKILL_BONUS_TYPE: result.append( text_styles.main( _ms( TOOLTIPS.VEHICLEPARAMS_BONUS_SKILL_TEMPLATE, name=_ms(ITEM_TYPES.tankman_skills(bnsId)), type=text_styles.standard(_ms(TOOLTIPS.VEHICLEPARAMS_SKILL_NAME)), ) ) ) elif bnsType == _ROLE_BONUS_TYPE: result.append( text_styles.main( _ms( "#tooltips:vehicleParams/bonus/role/template", name=_ms("#tooltips:vehicleParams/bonus/tankmanLevel/%s" % bnsId), ) ) ) elif bnsType == _EXTRA_BONUS_TYPE: result.append( text_styles.main( _ms( "#tooltips:vehicleParams/bonus/role/template", name=_ms("#tooltips:vehicleParams/bonus/extra/%s" % bnsId), ) ) ) return "\n".join(result)
def __createPenaltiesStr(self, penalties): result = [] for tankmanType, value, isOtherVehicle in penalties: if not param_formatter.isRelativeParameter(self.__paramName): valueStr = str(param_formatter.baseFormatParameter(self.__paramName, value)) if value > 0: valueStr = '+' + valueStr valueStr = text_styles.error(_ms(TOOLTIPS.VEHICLEPARAMS_PENALTY_TANKMANLEVEL_VALUE, value=valueStr)) else: valueStr = '' if isOtherVehicle: locKey = TOOLTIPS.VEHICLEPARAMS_PENALTY_TANKMANDIFFERENTVEHICLE_TEMPLATE else: locKey = TOOLTIPS.VEHICLEPARAMS_PENALTY_TANKMANLEVEL_TEMPLATE result.append(text_styles.main(_ms(locKey, tankmanType=_ms(ITEM_TYPES.tankman_roles(tankmanType)), value=valueStr))) return '\n'.join(result)
def __updateAmmo(self, shellsData = None): shells = [] stateWarning = False if g_currentVehicle.isPresent(): vehicle = g_currentVehicle.item stateWarning = vehicle.isBroken or not vehicle.isAmmoFull or not g_currentVehicle.isAutoLoadFull() or not g_currentVehicle.isAutoEquipFull() if shellsData is None: shellsData = map(lambda shell: (shell, shell.count), vehicle.shells) for shell, count in shellsData: shells.append({'id': str(shell.intCD), 'type': shell.type, 'label': ITEM_TYPES.shell_kindsabbreviation(shell.type), 'icon': '../maps/icons/ammopanel/ammo/%s' % shell.descriptor['icon'][0], 'count': count, 'tooltip': '', 'tooltipType': TOOLTIPS_CONSTANTS.HANGAR_SHELL}) self.as_setAmmoS(shells, stateWarning) return
def _getPenalties(self): result = [] penalties = self._extendedData.penalties actualPenalties, nullPenaltyTypes = _getNumNotNullPenaltyTankman(penalties) penaltiesLen = len(penalties) numNotNullPenaltyTankman = len(actualPenalties) if penaltiesLen > numNotNullPenaltyTankman: result.append(formatters.packTitleDescParameterWithIconBlockData(text_styles.main(_ms(TOOLTIPS.VEHICLEPARAMS_PENALTY_CREWNOTFULL_TEMPLATE)), icon=RES_ICONS.MAPS_ICONS_VEHPARAMS_TOOLTIPS_PENALTIES_ALL, iconPadding=self.__iconPadding, titlePadding=self.__titlePadding, padding=self.__listPadding)) if numNotNullPenaltyTankman > 0: for penalty in penalties: valueStr = _formatValueChange(self.__paramName, penalty.value) if valueStr: if penalty.vehicleIsNotNative: locKey = TOOLTIPS.VEHICLEPARAMS_PENALTY_TANKMANDIFFERENTVEHICLE_TEMPLATE else: locKey = TOOLTIPS.VEHICLEPARAMS_PENALTY_TANKMANLEVEL_TEMPLATE penaltyStr = text_styles.main(_ms(locKey, tankmanType=_ms(ITEM_TYPES.tankman_roles(penalty.roleName)))) result.append(formatters.packTitleDescParameterWithIconBlockData(penaltyStr, text_styles.warning(_ms(TOOLTIPS.VEHICLEPARAMS_TITLE_VALUETEMPLATE, value=valueStr)), icon=param_formatter.getPenaltyIcon(penalty.roleName), iconPadding=self.__iconPadding, titlePadding=self.__titlePadding, padding=self.__listPadding)) return result
def _getHistoricalBattleData(self): historicalBattleData = None if self.preQueueFunctional.getQueueType() == QUEUE_TYPE.HISTORICAL: battleId = self.preQueueFunctional.getSetting(PREQUEUE_SETTING_NAME.BATTLE_ID) battle = g_eventsCache.getHistoricalBattles().get(battleId) if battle is not None: vehicle = g_currentVehicle.item if battle.canParticipateWith(vehicle.intCD): shellsItems = battle.getShellsLayout(vehicle.intCD) priceString = battle.getShellsLayoutFormatedPrice(vehicle.intCD, self.app.colorManager, True, True) historicalBattleData = {'price': priceString, 'shells': [], 'battleID': battleId} shells = historicalBattleData['shells'] for shell, count in shellsItems: shells.append({'id': str(shell.intCD), 'type': shell.type, 'label': ITEM_TYPES.shell_kindsabbreviation(shell.type), 'icon': '../maps/icons/ammopanel/ammo/%s' % shell.descriptor['icon'][0], 'count': count}) return historicalBattleData
def _packBlocks(self, *args, **kwargs): items = super(SkillTooltipDataBlock, self)._packBlocks() item = self.context.buildItem(*args, **kwargs) items.append( formatters.packTextBlockData( text=text_styles.highTitle(item.userName))) infoBlock = formatters.packTextBlockData(text=makeHtmlString( 'html_templates:lobby/textStyle', 'mainTextSmall', {'message': item.description})) if infoBlock: items.append( formatters.packBuildUpBlockData( [infoBlock], padding=formatters.packPadding(left=0, right=58, top=-5, bottom=0), linkage=BLOCKS_TOOLTIP_TYPES. TOOLTIP_BUILDUP_BLOCK_WHITE_BG_LINKAGE)) items.append( formatters.packTextBlockData(text=text_styles.main( ITEM_TYPES.tankman_skills_type(item.type)))) return items
def getAmmo(shells): outcome = [] for shell in shells: if shell.isHidden: continue outcome.append({ 'id': str(shell.intCD), 'type': shell.type, 'label': ITEM_TYPES.shell_kindsabbreviation(shell.type), 'icon': '../maps/icons/ammopanel/ammo/%s' % shell.descriptor.icon[0], 'count': shell.count, 'tooltip': '', 'tooltipType': TOOLTIPS_CONSTANTS.HANGAR_SHELL }) return outcome
def __convertCrewSkinData(self, crewSkin, tankman): cache = tankmen.g_cache.crewSkins() LOC_MAP = {} if crewSkin.getRoleID() is not None: LOC_MAP[CREW_SKIN_PROPERTIES_MASKS.ROLE] = i18n.makeString(ITEM_TYPES.tankman_roles(crewSkin.getRoleID())) if crewSkin.getSex() in TANKMAN_SEX.ALL: LOC_MAP[CREW_SKIN_PROPERTIES_MASKS.SEX] = backport.text(R.strings.item_types.tankman.gender.dyn(GenderRestrictionsLocales.KEYS[crewSkin.getSex()])()) if crewSkin.getNation() is not None: LOC_MAP[CREW_SKIN_PROPERTIES_MASKS.NATION] = i18n.makeString(NATIONS.all(crewSkin.getNation())) validation, validationMask, _ = cache.validateCrewSkin(tankman.descriptor, crewSkin.getID()) soundValidation = crewSkin.getRoleID() == tankman.role if crewSkin.getRoleID() is not None else True if not SoundGroups.g_instance.soundModes.currentNationalPreset[1]: soundValidation = False restrictionsMessage = backport.text(R.strings.tooltips.crewSkins.restrictions()) if not validation: restrictions = [ loc for key, loc in LOC_MAP.iteritems() if key & validationMask ] restrictionsMessage += ' ' + ', '.join(restrictions) soundSetID = crewSkin.getSoundSetID() soundSetRes = R.strings.crew_skins.feature.sound.dyn(soundSetID)() if soundSetID != NO_CREW_SKIN_SOUND_SET else R.strings.crew_skins.feature.sound.noSound() return {'id': crewSkin.getID(), 'fullName': localizedFullName(crewSkin), 'description': crewSkin.getDescription(), 'iconID': getCrewSkinIconSmall(crewSkin.getIconID()), 'roleIconID': getCrewSkinRolePath(crewSkin.getRoleID()), 'nationFlagIconID': getCrewSkinNationPath(crewSkin.getNation()), 'rarity': crewSkin.getRarity(), 'maxCount': crewSkin.getMaxCount(), 'freeCount': crewSkin.getFreeCount(), 'historical': crewSkin.getHistorical(), 'soundSetID': crewSkin.getSoundSetID(), 'useCount': len(crewSkin.getTankmenIDs()), 'isEquip': self.tmanInvID in crewSkin.getTankmenIDs(), 'isNew': crewSkin.isNew() and not PersonalCase.crewSkinsHAConfig.checkForViewed(crewSkin.getID()), 'isAvailable': validation, 'notAvailableMessage': restrictionsMessage, 'soundSetName': backport.text(soundSetRes), 'soundSetIsAvailable': soundValidation if crewSkin.getSoundSetID() != NO_CREW_SKIN_SOUND_SET else True}
def __createBonusesStr(self, bonuses): result = [] for bnsId, bnsType in bonuses: if bnsType in _ARTEFACT_TYPES: bnsTypeStr = '' if bnsType == _EQUIPMENT: bnsTypeStr = TOOLTIPS.VEHICLE_EQUIPMENTS if bnsType == _OPTION_DEVICE: bnsTypeStr = TOOLTIPS.VEHICLE_DEVICES result.append( text_styles.main( _ms(TOOLTIPS.VEHICLEPARAMS_BONUS_ARTEFACT_TEMPLATE, name=_ms('#artefacts:%s/name' % bnsId), type=text_styles.standard(bnsTypeStr)))) elif bnsType == _SKILL_BONUS_TYPE: result.append( text_styles.main( _ms(TOOLTIPS.VEHICLEPARAMS_BONUS_SKILL_TEMPLATE, name=_ms(ITEM_TYPES.tankman_skills(bnsId)), type=text_styles.standard( _ms(TOOLTIPS.VEHICLEPARAMS_SKILL_NAME))))) elif bnsType == _ROLE_BONUS_TYPE: result.append( text_styles.main( _ms('#tooltips:vehicleParams/bonus/role/template', name=_ms( '#tooltips:vehicleParams/bonus/tankmanLevel/%s' % bnsId)))) elif bnsType == _EXTRA_BONUS_TYPE: result.append( text_styles.main( _ms('#tooltips:vehicleParams/bonus/role/template', name=_ms('#tooltips:vehicleParams/bonus/extra/%s' % bnsId)))) return '\n'.join(result)
def fullUserName(self): if self.firstNameID and self.lastNameID: return getFullUserName(self.nationID, self.firstNameID, self.lastNameID) return TOOLTIPS.AWARDITEM_TANKWOMEN_HEADER if self.isFemale else ITEM_TYPES.tankman_roles( self.role)
def userType(self): return i18n.makeString(ITEM_TYPES.customization(self.itemTypeName))
def userType(self): """ User readable item type name. """ return i18n.makeString(ITEM_TYPES.customization(self.itemTypeName))
def _packBlocks(self, role, *args, **kwargs): return self._packAdvancedBlocks(_TANKMAN_MOVIES[role], ITEM_TYPES.tankman_roles(role), role)
def __updateAmmo(self): Waiting.show('updateAmmo') credits = g_itemsCache.items.stats.credits shopRqs = yield ShopRequester().request() ammo = {'gunName': '', 'maxAmmo': 0, 'reserved1': False, 'reserved2': False, 'defaultAmmoCount': 0, 'reserved3': 0, 'vehicleLocked': True, 'stateMsg': '', 'stateLevel': 'info', 'shells': [], 'stateWarning': 0} if g_currentVehicle.isPresent(): vehicle = g_currentVehicle.item default_ammo_count = 0 default_ammo = dict(((s.intCD, s.defaultCount) for s in vehicle.shells)) stateWarning = vehicle.isBroken or not vehicle.isCrewFull or not vehicle.isAmmoFull or not g_currentVehicle.isAutoLoadFull() or not g_currentVehicle.isAutoEquipFull() for compactDescr, count in default_ammo.iteritems(): default_ammo_count += count msg, msgLvl = g_currentVehicle.getHangarMessage() ammo.update({'gunName': vehicle.gun.longUserName, 'maxAmmo': vehicle.ammoMaxSize, 'reserved1': not g_currentVehicle.isLocked(), 'reserved2': not g_currentVehicle.isBroken(), 'defaultAmmoCount': default_ammo_count, 'reserved3': 0, 'vehicleLocked': g_currentVehicle.isLocked(), 'stateMsg': msg, 'stateLevel': msgLvl, 'stateWarning': int(stateWarning)}) iAmmo = yield Requester('shell').getFromInventory() sAmmo = yield Requester('shell').getFromShop() iVehicles = yield Requester('vehicle').getFromInventory() oldStyleVehicle = None for v in iVehicles: if v.inventoryId == vehicle.invID: oldStyleVehicle = v break shells = ammo.get('shells') for shell in oldStyleVehicle.shells: shopShell = sAmmo[sAmmo.index(shell)] if shell in sAmmo else None goldAmmoForCredits = shopRqs.isEnabledBuyingGoldShellsForCredits if shopShell: iCount = iAmmo[iAmmo.index(shell)].count if shell in iAmmo else 0 sPrice = (yield shopShell.getPrice()) if shell is not shopShell else (0, 0) if goldAmmoForCredits: shopShell.priceOrder = (sPrice[0] + sPrice[1] * shopRqs.exchangeRateForShellsAndEqs, sPrice[1]) shells.append({'id': gui_items.compactItem(shopShell), 'type': shell.type, 'label': ITEM_TYPES.shell_kindsabbreviation(shell.type), 'icon': '../maps/icons/ammopanel/ammo/%s' % shell.descriptor['icon'][0], 'count': shell.count, 'defaultCount': shell.default, 'inventoryCount': iCount, 'price': sPrice[0 if not sPrice[1] else 1], 'currentcy': 'credits' if not sPrice[1] else 'gold', 'ammoName': shell.longName, 'tableName': shell.tableName}) self.as_setAmmoS(ammo) Waiting.hide('updateAmmo') return