Пример #1
0
 def _initialize(self, *args, **kwargs):
     super(NationChangeScreen, self)._initialize()
     with self.viewModel.transaction() as vm:
         vm.setCurrentTankLvl(int2roman(self.__currentVehicle.level))
         vm.setTargetTankLvl(int2roman(self.__targetVehicle.level))
         vm.setCurrentTankType(
             getVehTypeIconName(self.__currentVehicle.type,
                                self.__currentVehicle.isElite))
         vm.setTargetTankType(
             getVehTypeIconName(self.__targetVehicle.type,
                                self.__targetVehicle.isElite))
         vm.setCurrenTankName(self.__currentVehicle.userName)
         vm.setTargetTankName(self.__targetVehicle.userName)
         vm.setCurrentNation(
             getIconResourceName(self.__currentVehicle.nationName))
         vm.setTargetNation(
             getIconResourceName(self.__targetVehicle.nationName))
         vm.setCurrentTankTooltipHeader(self.__currentVehicle.longUserName)
         vm.setCurrentTankTooltipBody(self.__currentVehicle.fullDescription)
         currentVehicle = self.__currentVehicle
         targetVehicle = self.__targetVehicle
         currentVehNumSetups = self.__updateTankSlot(
             vm.currentNation, currentVehicle)
         vm.setCurrentTankSetupsNumber(currentVehNumSetups)
         targetVehNumSetups = self.__updateTankSlot(vm.targetNation,
                                                    targetVehicle)
         vm.setTargetTankSetupsNumber(targetVehNumSetups)
     self.__addListeners()
     self.__setViewed()
     WWISE.WW_setState(self._HANGAR_SOUND_FILTERED_STATE_NAME,
                       self._HANGAR_SOUND_FILTERED_STATE_ON)
Пример #2
0
    def __updateTankSlot(self, tankSlotVM, vehicle):
        tankSlotVM.setTankImage(
            R.images.gui.maps.shop.vehicles.c_600x450.dyn(
                getIconResourceName(getNationLessName(vehicle.name)))())
        tankSlotVM.setTankNation(getIconResourceName(vehicle.nationName))
        tankSlotVM.setVehicleIntCD(vehicle.intCD)
        self.__setCrewViewModelData(tankSlotVM, vehicle)
        tankSetups = tankSlotVM.getSetups()
        if not vehicle.postProgressionAvailability().result:
            setupsIndexes = [(vehicle.battleBoosters.setupLayouts.layoutIndex,
                              vehicle.consumables.setupLayouts.layoutIndex,
                              vehicle.optDevices.setupLayouts.layoutIndex,
                              vehicle.shells.setupLayouts.layoutIndex)]
        else:
            setupsIndexes = [[layoutID] * self.__LAYOUTS_IN_SETUP
                             for layoutID in range(SWITCH_LAYOUT_CAPACITY)]
        numSetups = 0
        for setupIndexes in setupsIndexes:
            setupModel = NationChangeTankSetupModel()
            hasEquipment = self.__setSetupData(setupModel, vehicle,
                                               setupIndexes)
            if hasEquipment:
                tankSetups.addViewModel(setupModel)
                numSetups += 1

        tankSetups.invalidate()
        tankSlotVM.setNoEquipment(numSetups == 0)
        return numSetups
Пример #3
0
 def __updateTankSlot(self, tankSlotVM, vehicle):
     tankSlotVM.setTankImage(R.images.gui.maps.shop.vehicles.c_600x450.dyn(getIconResourceName(getNationLessName(vehicle.name)))())
     tankSlotVM.setTankNation(getIconResourceName(vehicle.nationName))
     tankSlotVM.setVehicleIntCD(vehicle.intCD)
     self.__setCrewViewModelData(tankSlotVM, vehicle)
     self.__setEquipmentViewModelData(tankSlotVM.getSupplyList(), vehicle)
     self.__setDevicesViewModelData(tankSlotVM.getEquipmentList(), vehicle)
     self.__setShellsViewModelData(tankSlotVM.getShellList(), vehicle)
     self.__setInstructionViewModelData(tankSlotVM.instructionSlot, vehicle)
     self.__setInventoryViewStatus(tankSlotVM, vehicle)
Пример #4
0
 def __setShellsViewModelData(self, slotVM, guiVh):
     for shell in guiVh.shells.installed.getItems():
         if shell.count > 0:
             shellModel = NationChangeShellModel()
             shellModel.setImage(self.__icons.shell.dyn(getIconResourceName(shell.descriptor.iconName))())
             shellModel.setIntCD(shell.intCD)
             slotVM.addViewModel(shellModel)
Пример #5
0
 def __convertCompensationTooltip(cls, bonusComp, vehicle, tooltipData):
     specialArgs = {
         'iconBefore':
         backport.image(
             R.images.gui.maps.shop.vehicles.c_180x135.dyn(
                 getIconResourceName(getNationLessName(vehicle.name)))()),
         'labelBefore':
         '',
         'iconAfter':
         backport.image(R.images.gui.maps.icons.quests.bonuses.big.gold()),
         'labelAfter':
         bonusComp.getIconLabel(),
         'bonusName':
         bonusComp.getName(),
         'vehicleName':
         vehicle.shortUserName,
         'vehicleType':
         formatEliteVehicle(vehicle.isElite, vehicle.type),
         'isElite':
         vehicle.isElite,
         'vehicleLvl':
         int2roman(vehicle.level)
     }
     return createTooltipData(tooltip=tooltipData.tooltip,
                              specialAlias=VEH_COMP_R_ID,
                              specialArgs=specialArgs)
 def _buildVehicle(self, vehicle):
     result = super(RoyaleCarouselDataProvider, self)._buildVehicle(vehicle)
     state, _ = vehicle.getState()
     if vehicle.isOnlyForBattleRoyaleBattles:
         result.update({
             'label':
             text_styles.premiumVehicleName(vehicle.userName),
             'tooltip':
             TOOLTIPS_CONSTANTS.BATTLE_ROYALE_VEHICLE,
             'level':
             0,
             'tankType':
             _UNDEFINED_VEHICLE_TYPE,
             'xpImgSource':
             '',
             'isUseRightBtn':
             False
         })
         iconId = getIconResourceName(vehicle.name)
         iconResId = R.images.gui.maps.icons.battleRoyale.hangar.vehicles.dyn(
             iconId)
         if iconResId.exists():
             result['icon'] = backport.image(iconResId())
         smallIconResId = R.images.gui.maps.icons.battleRoyale.hangar.vehicles.small.dyn(
             iconId)
         if smallIconResId.exists():
             result['iconSmall'] = backport.image(smallIconResId())
     elif state == Vehicle.VEHICLE_STATE.UNSUITABLE_TO_QUEUE:
         result['lockedTooltip'] = makeTooltip(
             backport.text(R.strings.battle_royale.battleRoyaleCarousel.
                           lockedToolTip.header()),
             backport.text(R.strings.battle_royale.battleRoyaleCarousel.
                           lockedToolTip.body()))
         result['clickEnabled'] = True
     return result
    def _createShortList(self, wulfList, tankman, isTooltipEnable):
        reversedList = []
        hasUnlearnedSkill = False
        skillsCount = len(tankman.skills)
        skillsIconsSmall = R.images.gui.maps.icons.tankmen.skills.small
        for tankmanSkill in reversed(tankman.skills):
            tankmanSkillVM = CrewBookSkillModel()
            reversedList.append(tankmanSkillVM)
            tankmanSkillVM.setIsTooltipEnable(isTooltipEnable)
            tankmanSkillVM.setIcon(
                skillsIconsSmall.dyn(
                    getIconResourceName(tankmanSkill.extensionLessIconName))())
            tankmanSkillVM.setTankmanInvId(tankman.invID)
            tankmanSkillVM.setSkillName(tankmanSkill.name)
            if tankmanSkill.level < MIN_ROLE_LEVEL and XpGainResult.NEW_SKILLS not in self._gainedLevels:
                hasUnlearnedSkill = True
                tankmanSkillVM.setDescription(str(tankmanSkill.level))
                tankmanSkillVM.setIsUnlearned(True)
                if XpGainResult.SURPLUS_LEVELS in self._gainedLevels:
                    tankmanSkillVM.setGainProgress(
                        str(self._gainedLevels[XpGainResult.SURPLUS_LEVELS]))
                    tankmanSkillVM.setIsGainProgressVisible(True)
                    if float(self._gainedLevels[
                            XpGainResult.SURPLUS_LEVELS]) == 0:
                        tankmanSkillVM.setIsLowGainedXp(True)
            if hasUnlearnedSkill:
                skillsCount -= 1
            tankmanSkillVM.setIsCompact(True)
            tankmanSkillVM.setDescription(str(skillsCount))
            break

        for viewModel in reversed(reversedList):
            wulfList.addViewModel(viewModel)
Пример #8
0
    def __getBattleRoyaleTechniqueListVehicles(self, targetData):
        result = []
        vehicles = targetData.getVehicles()
        for vehicleCD, data in vehicles.items():
            battlesCount = data.getBattlesCount()
            winsCount = data.getWinsCount()
            avgXP = data.getAvgXP()
            avgDamage = data.getAvgDamage()
            avgFrags = data.getFragsCount() / battlesCount if battlesCount > 0 else 0
            vehicle = self.itemsCache.items.getItemByCD(vehicleCD)
            iconResId = R.images.gui.maps.icons.battleRoyale.vehicles.dyn(getIconResourceName(vehicle.name))()
            if vehicle is not None:
                result.append({'id': vehicleCD,
                 'inventoryID': vehicle.invID,
                 'shortUserName': vehicle.shortUserName,
                 'battlesCount': battlesCount,
                 'avgExperience': avgXP,
                 'userName': vehicle.userName,
                 'typeIndex': VEHICLE_TABLE_TYPES_ORDER_INDICES_REVERSED[vehicle.type],
                 'nationIndex': GUI_NATIONS_ORDER_INDEX[NAMES[vehicle.nationID]],
                 'nationID': vehicle.nationID,
                 'level': vehicle.level,
                 'tankIconPath': backport.image(iconResId),
                 'typeIconPath': '../maps/icons/filters/tanks/%s.png' % vehicle.type,
                 'winsCount': winsCount,
                 'avgDamage': avgDamage,
                 'avgFrags': avgFrags})

        return result
Пример #9
0
def _getVehicleUIData(vehicle):
    return {
        'vehicleName': vehicle.shortUserName,
        'vehicleType': getIconResourceName(vehicle.type),
        'isElite': vehicle.isElite,
        'vehicleLvl': int2roman(vehicle.level),
        'vehicleLvlNum': vehicle.level
    }
Пример #10
0
 def __setDevicesViewModelData(self, slotVM, guiVh):
     for device in guiVh.optDevices.installed.getItems():
         deviceModel = NationChangeDeviceModel()
         deviceModel.setImage(self.__icons.artefact.dyn(getIconResourceName(device.descriptor.iconName))())
         deviceModel.setIsImproved(device.isDeluxe)
         deviceModel.setIsTrophyBasic(device.isUpgradable)
         deviceModel.setIsTrophyUpgraded(device.isUpgraded)
         deviceModel.setIntCD(device.intCD)
         slotVM.addViewModel(deviceModel)
Пример #11
0
 def __setInstructionViewModelData(self, slotVM, guiVh):
     booster = guiVh.battleBoosters.installed.getItems()
     instruction = next(iter(booster or []), None)
     if instruction:
         slotVM.setImage(self.__icons.artefact.dyn(getIconResourceName(instruction.descriptor.iconName))())
         slotVM.setIsActive(instruction.isAffectsOnVehicle(guiVh))
         slotVM.setIsInstalled(True)
         slotVM.setIntCD(instruction.intCD)
     return
Пример #12
0
 def __getVehImgResource(vehicleName):
     resourceName = getIconResourceName(getNationLessName(vehicleName))
     if resourceName in R.images.gui.maps.icons.seniorityAwards.vehicles.c_390x245.keys(
     ):
         return R.images.gui.maps.icons.seniorityAwards.vehicles.c_390x245.dyn(
             resourceName)
     else:
         _logger.error("Image %s doesn't exist", resourceName)
         return None
Пример #13
0
    def __setEquipmentViewModelData(self, slotVM, guiVh):
        installedEquipment = guiVh.consumables.installed.getItems()
        for equipment in installedEquipment:
            if equipment is not None:
                supplyModel = NationChangeSupplyModel()
                supplyModel.setImage(self.__icons.artefact.dyn(getIconResourceName(equipment.descriptor.iconName))())
                supplyModel.setIntCD(equipment.intCD)
                slotVM.addViewModel(supplyModel)

        return
 def _formatModel(self, model, index, tankmanInvId):
     tankman = self.__itemsCache.items.getTankman(int(tankmanInvId))
     tankmenIcons = R.images.gui.maps.icons.tankmen
     with model.transaction() as m:
         m.setIdx(index)
         if tankman.skinID != NO_CREW_SKIN_ID and self.__lobbyContext.getServerSettings(
         ).isCrewSkinsEnabled():
             skinItem = self.__itemsCache.items.getCrewSkin(tankman.skinID)
             m.setTankmanIcon(
                 tankmenIcons.icons.big.crewSkins.dyn(
                     getIconResourceName(skinItem.getIconID()))())
         else:
             m.setTankmanIcon(
                 tankmenIcons.icons.big.dyn(
                     getIconResourceName(tankman.extensionLessIcon))())
         m.setRoleIcon(
             tankmenIcons.roles.big.dyn(
                 getIconResourceName(tankman.extensionLessIconRole))())
         m.setInvID(tankman.invID)
         m.setRoleLevel(str(tankman.roleLevel))
Пример #15
0
def getBaseButtonsVO(vehicle):
    iconName = getIconResourceName(getNationLessName(vehicle.name))
    return {
        'shopIconPath':
        backport.image(
            R.images.gui.maps.shop.vehicles.c_360x270.dyn(iconName)()),
        'compareBtnVisible':
        True,
        'goToVehicleViewBtnVisible':
        True,
        'isPremium':
        vehicle.isPremium or vehicle.buyPrices.itemPrice.isActionPrice(),
        'vehicleId':
        vehicle.intCD
    }
Пример #16
0
    def __setEquipmentViewModelData(self, slotVM, guiVh, layoutIdx):
        setup = guiVh.consumables.setupLayouts.setupByIndex(layoutIdx)
        installedEquipment = setup.getItems() if setup is not None else ()
        hasEquipment = False
        for equipment in installedEquipment:
            if equipment is not None:
                supplyModel = NationChangeSupplyModel()
                supplyModel.setImage(
                    self.__icons.artefact.dyn(
                        getIconResourceName(equipment.descriptor.iconName))())
                supplyModel.setIntCD(equipment.intCD)
                slotVM.addViewModel(supplyModel)
                hasEquipment = True

        slotVM.invalidate()
        return hasEquipment
Пример #17
0
    def __setShellsViewModelData(self, slotVM, guiVh, layoutIdx):
        setup = guiVh.shells.setupLayouts.setupByIndex(layoutIdx)
        installedShells = setup.getItems() if setup is not None else ()
        hasShells = False
        for shell in installedShells:
            if shell.count > 0:
                shellModel = NationChangeShellModel()
                shellModel.setImage(
                    self.__icons.shell.small.dyn(
                        getIconResourceName(shell.descriptor.iconName))())
                shellModel.setIntCD(shell.intCD)
                slotVM.addViewModel(shellModel)
                hasShells = True

        slotVM.invalidate()
        return hasShells
Пример #18
0
    def __setCrewViewModelData(self, tankSlotVM, guiVh):
        crewListVM = tankSlotVM.getCrewList()
        roles = guiVh.descriptor.type.crewRoles
        crew = sortCrew(guiVh.crew, roles)
        skillsConfig = getSkillsConfig()
        isDogInCrew = 'dog' in guiVh.tags
        iconsSmall = self.__icons.tankmen.icons.small
        for slotIdx, tankman in crew:
            tankmanVM = NationChangeTankmanModel()
            if tankman is not None:
                if tankman.skinID != NO_CREW_SKIN_ID and self.__lobbyContext.getServerSettings(
                ).isCrewSkinsEnabled():
                    skinItem = self.__itemsCache.items.getCrewSkin(
                        tankman.skinID)
                    tankmanVM.setImage(
                        iconsSmall.crewSkins.dyn(skinItem.getIconName())())
                else:
                    tankmanVM.setImage(
                        iconsSmall.dyn(
                            getIconResourceName(tankman.extensionLessIcon))())
                tankmanVM.setInvID(tankman.invID)
            else:
                role = roles[slotIdx][0]
                tankmanVM.setImage(
                    self.__icons.tankmen.icons.small.silhouette_mask())
                tankmanVM.setIsSimpleTooltip(True)
                tankmanVM.setSimpleTooltipHeader(
                    convert(skillsConfig.getSkill(role).userString))
                tankmanVM.setSimpleTooltipBody(guiVh.longUserName)
            R.strings.multinational_vehicles.changeScreen.title.header()
            crewListVM.addViewModel(tankmanVM)

        if isDogInCrew:
            tankmanVM = NationChangeTankmanModel()
            dogTooltip = R.strings.tooltips.hangar.crew.rudy.dog.dyn(
                guiVh.nationName)
            tankmanVM.setImage(self.__icons.tankmen.icons.small.ussr_dog_1())
            tankmanVM.setIsSimpleTooltip(True)
            tankmanVM.setSimpleTooltipHeader(backport.text(
                dogTooltip.header()))
            tankmanVM.setSimpleTooltipBody(backport.text(dogTooltip.body()))
            tankmanVM.setIsDog(True)
            crewListVM.addViewModel(tankmanVM)
        if any(
            (tankman[1] is not None for tankman in guiVh.crew)) or isDogInCrew:
            tankSlotVM.setNoCrew(False)
        return
Пример #19
0
 def _packVehicleBonusModel(cls, bonus, vInfo, isRent, vehicle):
     model = RewardModel()
     gpRentType, rentValue = bonus.getRentInfo(vInfo)
     model.setVehicleRentType(_convertRentType(gpRentType))
     model.setVehicleRentValue(rentValue)
     model.setName(cls._createUIName(bonus, isRent))
     model.setIsCompensation(bonus.isCompensation())
     model.setLabel(vehicle.userName)
     vehIconName = getIconResourceName(getNationLessName(vehicle.name))
     model.setItemID(vehicle.intCD)
     model.setUserName(vehicle.userName)
     model.setIcon(vehIconName)
     model.setVehicleLevel(vehicle.level)
     model.setVehicleType(vehicle.type)
     wasInHangarBeforeRent = gpRentType != RentType.NO_RENT and not vehicle.isRented
     model.setIsFromStorage(wasInHangarBeforeRent)
     return model
def makeVehicleBasicVO(vehicle, levelsRange=None, vehicleTypes=None):
    if vehicle is None:
        return
    else:
        isBattleRoyaleVehicle = vehicle.isOnlyForBattleRoyaleBattles
        enabled, tooltip = True, None
        if levelsRange is not None and vehicle.level not in levelsRange:
            enabled, tooltip = False, TOOLTIPS.VEHICLESELECTOR_OVERFLOWLEVEL
        elif vehicleTypes is not None and vehicle.type not in vehicleTypes:
            enabled, tooltip = False, TOOLTIPS.VEHICLESELECTOR_INCOMPATIBLETYPE
        elif isBattleRoyaleVehicle:
            enabled, tooltip = True, TOOLTIPS_CONSTANTS.BATTLE_ROYALE_VEHICLE
        iconPath = backport.image(
            R.images.gui.maps.icons.vehicle.small.dyn(
                getIconResourceName(vehicle.name))())
        return {
            'intCD':
            vehicle.intCD,
            'nationID':
            vehicle.nationID,
            'name':
            vehicle.name,
            'userName':
            vehicle.userName,
            'shortUserName':
            vehicle.shortUserName,
            'level':
            vehicle.level if not vehicle.isOnlyForBattleRoyaleBattles else 0,
            'type':
            vehicle.type if not vehicle.isOnlyForBattleRoyaleBattles else '',
            'typeIndex':
            VEHICLE_TABLE_TYPES_ORDER_INDICES_REVERSED[vehicle.type],
            'smallIconPath':
            iconPath,
            'isReadyToFight':
            True,
            'enabled':
            enabled,
            'tooltip':
            tooltip,
            'state':
            '',
            'isEventVehicle':
            isBattleRoyaleVehicle
        }
Пример #21
0
    def __setDevicesViewModelData(self, slotVM, guiVh, layoutIdx):
        setup = guiVh.optDevices.setupLayouts.setupByIndex(layoutIdx)
        installedOptDevices = setup.getItems() if setup is not None else ()
        hasDevices = False
        for device in installedOptDevices:
            deviceModel = NationChangeDeviceModel()
            deviceModel.setImage(
                self.__icons.artefact.dyn(
                    getIconResourceName(device.descriptor.iconName))())
            deviceModel.setIsImproved(device.isDeluxe)
            deviceModel.setIsTrophyBasic(device.isUpgradable)
            deviceModel.setIsTrophyUpgraded(device.isUpgraded)
            deviceModel.setIntCD(device.intCD)
            slotVM.addViewModel(deviceModel)
            hasDevices = True

        slotVM.invalidate()
        return hasDevices
Пример #22
0
 def __setInstructionViewModelData(self, slotVM, guiVh, layoutIdx):
     setup = guiVh.battleBoosters.setupLayouts.setupByIndex(layoutIdx)
     booster = setup.getItems() if setup is not None else ()
     instruction = next(iter(booster or []), None)
     if instruction is not None:
         slotVM.setImage(
             self.__icons.artefact.dyn(
                 getIconResourceName(instruction.descriptor.iconName))())
         slotVM.setIsActive(instruction.isAffectsOnVehicle(
             guiVh, layoutIdx))
         slotVM.setIsPerkReplace(
             instruction.isCrewBooster()
             and not instruction.isAffectedSkillLearnt(guiVh))
         slotVM.setIsInstalled(True)
         slotVM.setIntCD(instruction.intCD)
         slotVM.setLayoutIDx(layoutIdx)
         return True
     else:
         return False
 def _createList(self, wulfList, tankman, isTooltipEnable):
     skillsIconsSmall = R.images.gui.maps.icons.tankmen.skills.small
     for tankmanSkill in tankman.skills:
         tankmanSkillVM = CrewBookSkillModel()
         tankmanSkillVM.setIsTooltipEnable(isTooltipEnable)
         tankmanSkillVM.setIcon(
             skillsIconsSmall.dyn(
                 getIconResourceName(tankmanSkill.extensionLessIconName))())
         tankmanSkillVM.setTankmanInvId(tankman.invID)
         tankmanSkillVM.setSkillName(tankmanSkill.name)
         wulfList.addViewModel(tankmanSkillVM)
         if tankmanSkill.level < MIN_ROLE_LEVEL and XpGainResult.NEW_SKILLS not in self._gainedLevels:
             tankmanSkillVM.setDescription(str(tankmanSkill.level))
             tankmanSkillVM.setIsUnlearned(True)
             if XpGainResult.SURPLUS_LEVELS in self._gainedLevels:
                 tankmanSkillVM.setGainProgress(
                     str(self._gainedLevels[XpGainResult.SURPLUS_LEVELS]))
                 tankmanSkillVM.setIsGainProgressVisible(True)
                 if float(self._gainedLevels[
                         XpGainResult.SURPLUS_LEVELS]) == 0:
                     tankmanSkillVM.setIsLowGainedXp(True)
 def __getVehImgResource(vehicleName):
     return getIconResourceName(getNationLessName(vehicleName))