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 _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 __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 __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 __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 _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 __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 __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 _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 __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 _packBlocks(self, role, *args, **kwargs): return self._packAdvancedBlocks(_TANKMAN_MOVIES[role], ITEM_TYPES.tankman_roles(role), role)
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)