Пример #1
0
    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)
Пример #2
0
    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
Пример #3
0
 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)
Пример #6
0
    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
Пример #7
0
    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)
Пример #8
0
 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
Пример #9
0
    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)
Пример #10
0
    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)
Пример #11
0
    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)
Пример #12
0
    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
Пример #13
0
    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)
Пример #14
0
 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)
Пример #16
0
    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})
Пример #18
0
 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))]
Пример #19
0
    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
Пример #21
0
    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}
Пример #22
0
    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}
Пример #23
0
 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)
Пример #24
0
 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
Пример #25
0
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)
Пример #26
0
    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
Пример #27
0
    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)
Пример #28
0
    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)
Пример #29
0
    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
Пример #30
0
    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
Пример #31
0
    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
Пример #32
0
 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}
Пример #35
0
    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)
Пример #37
0
 def userType(self):
     return i18n.makeString(ITEM_TYPES.customization(self.itemTypeName))
Пример #38
0
 def userType(self):
     """ User readable item type name.
     """
     return i18n.makeString(ITEM_TYPES.customization(self.itemTypeName))
Пример #39
0
 def _packBlocks(self, role, *args, **kwargs):
     return self._packAdvancedBlocks(_TANKMAN_MOVIES[role],
                                     ITEM_TYPES.tankman_roles(role), role)
Пример #40
0
    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