예제 #1
0
 def __addListeners(self):
     model = self.viewModel
     model.onBuyClick += self.__onBuyClick
     model.onAboutClick += self.__onAboutClick
     model.onViewLoaded += self.__showViewCallback
     model.onClose += self.__onClose
     model.intro.onClose += self.__onIntroCloseClick
     model.intro.onVideo += self.__showIntroVideo
     model.onGoToChapter += self.__onGoToChapter
     model.widget3dStyle.onPreviewClick += self.__onPreviewClick
     model.widget3dStyle.onSelectStyle += self.__onSelectStyle
     model.onTakeClick += self.__onTakeClick
     model.onTakeAllClick += self.__onTakeAllClick
     model.onOpenShopClick += self.__onOpenShopClick
     model.onPointsInfoClick += self.__onPointsInfoClick
     model.onFinishedAnimation += self.__resetReplaceRewardAnimations
     model.onLevelsAnimationFinished += self.__resetLevelAnimations
     self.__battlePassController.onPointsUpdated += self.__onPointsUpdated
     self.__battlePassController.onBattlePassIsBought += self.__onBattlePassBought
     self.__battlePassController.onBattlePassSettingsChange += self.__onBattlePassSettingsChange
     self.__battlePassController.onRewardSelectChange += self.__onRewardSelectChange
     self.__battlePassController.onOffersUpdated += self.__onOffersUpdated
     self.__battlePassController.onSeasonStateChange += self.__updateProgressData
     self.__wallet.onWalletStatusChanged += self.__updateWalletAvailability
     g_clientUpdateManager.addCurrencyCallback(Currency.BPCOIN,
                                               self.__updateBalance)
     g_eventBus.addListener(events.MissionsEvent.ON_TAB_CHANGED,
                            self.__onMissionsTabChanged,
                            EVENT_BUS_SCOPE.LOBBY)
     g_eventBus.addListener(events.FocusEvent.COMPONENT_FOCUSED,
                            self.__onFocus)
     g_eventBus.addListener(events.BattlePassEvent.ON_PURCHASE_LEVELS,
                            self.__onPurchaseLevels, EVENT_BUS_SCOPE.LOBBY)
 def __init__(self, itemCD, parentCD, xpCost):
     super(ExchangeXpMeta, self).__init__((_SingleExchangeItem(itemCD), parentCD, xpCost), key='confirmExchangeDialog/exchangeXp')
     g_clientUpdateManager.addCurrencyCallback(Currency.GOLD, self._onStatsChanged)
     g_clientUpdateManager.addCallbacks({'shop.freeXPConversion': self._onStatsChanged,
      'inventory.1': self._onStatsChanged,
      'stats.vehTypeXP': self._onStatsChanged,
      'stats.freeXP': self._onStatsChanged,
      'stats.unlocks': self.__checkUnlocks})
예제 #3
0
 def __addListeners(self):
     self.viewModel.onActionClick += self.__onClick
     self.__tenYearsCountdown.onEventBlockChanged += self.__initNotifier
     self.__tenYearsCountdown.onEventBlockChanged += self.__updateModel
     self.__tenYearsCountdown.onActivePhasesDatesChanged += self.__updateTimer
     self.__tenYearsCountdown.onEventFinishChanged += self.__updateTimer
     self.__wallet.onWalletStatusChanged += self.__updateBalance
     g_clientUpdateManager.addCurrencyCallback(Currency.EVENT_COIN, self.__updateBalance)
예제 #4
0
 def _populate(self):
     super(VehicleBuyWindow, self)._populate()
     self._initData()
     self.itemsCache.onSyncCompleted += self._initData
     self.rentals.onRentChangeNotify += self.__onRentChange
     g_clientUpdateManager.addCurrencyCallback(Currency.CREDITS, self.__setCreditsCallBack)
     g_clientUpdateManager.addCurrencyCallback(Currency.GOLD, self.__setGoldCallBack)
     self.addListener(VehicleBuyEvent.VEHICLE_SELECTED, self.__setTradeOffVehicle)
예제 #5
0
 def _populate(self):
     View._populate(self)
     self.__getInitialData()
     if self._currentVehicleInvId != -1:
         g_clientUpdateManager.addCallbacks({'inventory': self.onInventoryChanged})
     g_clientUpdateManager.addCurrencyCallback(Currency.CREDITS, self.onCreditsChange)
     g_clientUpdateManager.addCurrencyCallback(Currency.GOLD, self.onGoldChange)
     g_clientUpdateManager.addCallbacks({'cache.mayConsumeWalletResources': self.onGoldChange})
예제 #6
0
 def __subscribe(self):
     g_clientUpdateManager.addCurrencyCallback(Currency.GOLD,
                                               self.__onSetGoldHandler)
     g_clientUpdateManager.addCurrencyCallback(Currency.CRYSTAL,
                                               self.__onSetCrystalHandler)
     g_clientUpdateManager.addCallback('goodies',
                                       self.__onSetGoodiesHandler)
     self.__itemsCache.onSyncCompleted += self.__shopResyncHandler
예제 #7
0
 def _subscribe(self):
     g_clientUpdateManager.addCurrencyCallback(Currency.CREDITS,
                                               self.__setCreditsCallBack)
     g_clientUpdateManager.addCurrencyCallback(Currency.GOLD,
                                               self._setGoldCallBack)
     g_clientUpdateManager.addCallbacks(
         {'shop.exchangeRate': self.__setExchangeRateCallBack})
     self.wallet.onWalletStatusChanged += self.__setWalletCallback
     self.itemsCache.onSyncCompleted += self.__setExchangeRateCallBack
예제 #8
0
 def _populate(self):
     super(PremiumWindow, self)._populate()
     g_clientUpdateManager.addCurrencyCallback(Currency.GOLD, self.__onUpdateHandler)
     g_clientUpdateManager.addCallbacks({'stats.unlocks': self.__onUpdateHandler,
      'cache.mayConsumeWalletResources': self.__onUpdateHandler,
      'goodies': self.__onUpdateHandler})
     self.gameSession.onPremiumNotify += self.__onUpdateHandler
     self.itemsCache.onSyncCompleted += self.__onUpdateHandler
     self.__populateData()
예제 #9
0
 def __init__(self, ctx = None):
     super(RoleChangeWindow, self).__init__()
     self.__tankman = self.itemsCache.items.getTankman(ctx.get('tankmanID', None))
     self.__nativeVehicleCD = self.__tankman.vehicleNativeDescr.type.compactDescr
     self.__selectedVehicleCD = self.__nativeVehicleCD
     self.__currentVehicleCD = None
     if self.__tankman.vehicleDescr is not None:
         self.__currentVehicleCD = self.__tankman.vehicleDescr.type.compactDescr
     g_clientUpdateManager.addCurrencyCallback(Currency.GOLD, self._onMoneyUpdate)
     g_clientUpdateManager.addCallbacks({'stats.unlock': self._onStatsUpdate,
      'stats.inventory': self._onStatsUpdate})
     return
예제 #10
0
 def _populate(self):
     super(SkillDropWindow, self)._populate()
     self.__setData()
     self.itemsCache.onSyncCompleted += self.__setData
     g_clientUpdateManager.addCurrencyCallback(Currency.CREDITS,
                                               self.__setData)
     g_clientUpdateManager.addCurrencyCallback(Currency.GOLD,
                                               self.__setData)
     g_clientUpdateManager.addCallbacks({
         'inventory.8.compDescr':
         self.onTankmanChanged,
         'cache.mayConsumeWalletResources':
         self.__setData
     })
 def _populate(self):
     super(TechnicalMaintenance, self)._populate()
     self.itemsCache.onSyncCompleted += self._onShopResync
     self.addListener(events.TechnicalMaintenanceEvent.RESET_EQUIPMENT, self.__resetEquipment, scope=EVENT_BUS_SCOPE.LOBBY)
     g_clientUpdateManager.addCurrencyCallback(Currency.CREDITS, self.onCreditsChange)
     g_clientUpdateManager.addCurrencyCallback(Currency.GOLD, self.onGoldChange)
     g_clientUpdateManager.addCallbacks({'cache.mayConsumeWalletResources': self.onGoldChange,
      'cache.vehsLock': self.__onCurrentVehicleChanged})
     g_currentVehicle.onChanged += self.__onCurrentVehicleChanged
     if g_currentVehicle.isPresent():
         self.__currentVehicleId = g_currentVehicle.item.intCD
     self.populateTechnicalMaintenance()
     self.populateTechnicalMaintenanceEquipmentDefaults()
     self.setupContextHints(TUTORIAL.TECHNICAL_MAINTENANCE)
예제 #12
0
 def _subscribe(self):
     g_clientUpdateManager.addCurrencyCallback(Currency.GOLD,
                                               self._setGoldCallBack)
     g_clientUpdateManager.addCallbacks({
         'shop.freeXPConversion':
         self.__setXPConversationCallBack,
         'shop.goodies':
         self.__discountChangedCallback,
         'goodies.4':
         self.__discountChangedCallback,
         'inventory.1':
         self.__vehiclesDataChangedCallBack,
         'stats.vehTypeXP':
         self.__vehiclesDataChangedCallBack,
         'stats.freeXP':
         self.__setFreeXPCallBack
     })
     self.wallet.onWalletStatusChanged += self.__setWalletCallback
     self.itemsCache.onSyncCompleted += self.__setXPConversationCallBack
예제 #13
0
    def _populate(self):
        super(VehicleSellDialog, self)._populate()
        g_clientUpdateManager.addCurrencyCallback(Currency.GOLD,
                                                  self.onSetGoldHndlr)
        self.itemsCache.onSyncCompleted += self.__shopResyncHandler
        items = self.itemsCache.items
        vehicle = items.getVehicle(self.__vehInvID)
        sellPrice = vehicle.sellPrices.itemPrice.price
        sellCurrency = sellPrice.getCurrency(byWeight=True)
        sellForGold = sellCurrency == Currency.GOLD
        priceTextColor = CURRENCIES_CONSTANTS.GOLD_COLOR if sellForGold else CURRENCIES_CONSTANTS.CREDITS_COLOR
        priceTextValue = _ms(DIALOGS.VEHICLESELLDIALOG_PRICE_SIGN_ADD) + _ms(
            BigWorld.wg_getIntegralFormat(
                sellPrice.getSignValue(sellCurrency)))
        currencyIcon = CURRENCIES_CONSTANTS.GOLD if sellForGold else CURRENCIES_CONSTANTS.CREDITS
        invVehs = items.getVehicles(REQ_CRITERIA.INVENTORY)
        self.checkControlQuestion(self.__checkUsefulTankman)
        modules = items.getItems(
            criteria=REQ_CRITERIA.VEHICLE.SUITABLE([vehicle])
            | REQ_CRITERIA.INVENTORY).values()
        shells = items.getItems(criteria=REQ_CRITERIA.VEHICLE.SUITABLE(
            [vehicle], [GUI_ITEM_TYPE.SHELL])
                                | REQ_CRITERIA.INVENTORY).values()
        otherVehsShells = set()
        for invVeh in invVehs.itervalues():
            if invVeh.invID != self.__vehInvID:
                for shot in invVeh.descriptor.gun.shots:
                    otherVehsShells.add(shot.shell.compactDescr)

        vehicleAction = None
        if vehicle.sellPrices.itemPrice.isActionPrice():
            vehicleAction = packItemActionTooltipData(vehicle, False)
        if vehicle.isElite:
            description = TOOLTIPS.tankcaruseltooltip_vehicletype_elite(
                vehicle.type)
        else:
            description = DIALOGS.vehicleselldialog_vehicletype(vehicle.type)
        levelStr = text_styles.concatStylesWithSpace(
            text_styles.stats(int2roman(vehicle.level)),
            text_styles.main(_ms(DIALOGS.VEHICLESELLDIALOG_VEHICLE_LEVEL)))
        tankmenGoingToBuffer, deletedTankmen = self.restore.getTankmenDeletedBySelling(
            vehicle)
        deletedCount = len(deletedTankmen)
        if deletedCount > 0:
            deletedStr = formatDeletedTankmanStr(deletedTankmen[0])
            maxCount = self.restore.getMaxTankmenBufferLength()
            currCount = len(self.restore.getDismissedTankmen())
            if deletedCount == 1:
                crewTooltip = text_styles.concatStylesToMultiLine(
                    text_styles.middleTitle(
                        _ms(TOOLTIPS.
                            VEHICLESELLDIALOG_CREW_ALERTICON_RECOVERY_HEADER)),
                    text_styles.main(
                        _ms(TOOLTIPS.
                            VEHICLESELLDIALOG_CREW_ALERTICON_RECOVERY_BODY,
                            maxVal=maxCount,
                            curVal=currCount,
                            sourceName=tankmenGoingToBuffer[-1].fullUserName,
                            targetInfo=deletedStr)))
            else:
                crewTooltip = text_styles.concatStylesToMultiLine(
                    text_styles.middleTitle(
                        _ms(TOOLTIPS.
                            VEHICLESELLDIALOG_CREW_ALERTICON_RECOVERY_HEADER)),
                    text_styles.main(
                        _ms(TOOLTIPS.
                            DISMISSTANKMANDIALOG_BUFFERISFULLMULTIPLE_BODY,
                            deletedStr=deletedStr,
                            extraCount=deletedCount - 1,
                            maxCount=maxCount,
                            currCount=currCount)))
        else:
            crewTooltip = None
        if vehicle.isCrewLocked:
            hasCrew = False
        else:
            hasCrew = vehicle.hasCrew
        barracksDropDownData = [{
            'label': _ms(MENU.BARRACKS_BTNUNLOAD)
        }, {
            'label': _ms(MENU.BARRACKS_BTNDISSMISS)
        }]
        sellVehicleData = {
            'intCD': vehicle.intCD,
            'userName': vehicle.userName,
            'icon': vehicle.icon,
            'level': vehicle.level,
            'isElite': vehicle.isElite,
            'isPremium': vehicle.isPremium,
            'type': vehicle.type,
            'nationID': vehicle.nationID,
            'sellPrice': sellPrice.toMoneyTuple(),
            'priceTextValue': priceTextValue,
            'priceTextColor': priceTextColor,
            'currencyIcon': currencyIcon,
            'action': vehicleAction,
            'hasCrew': hasCrew,
            'isRented': vehicle.isRented,
            'description': description,
            'levelStr': levelStr,
            'priceLabel':
            _ms(DIALOGS.VEHICLESELLDIALOG_VEHICLE_EMPTYSELLPRICE),
            'crewLabel': _ms(DIALOGS.VEHICLESELLDIALOG_CREW_LABEL),
            'crewTooltip': crewTooltip,
            'barracksDropDownData': barracksDropDownData
        }
        currentGoldBalance = self.itemsCache.items.stats.money.get(
            Currency.GOLD, 0)
        onVehicleOptionalDevices = []
        for o in vehicle.optDevices:
            if o is not None:
                itemPrice = o.sellPrices.itemPrice
                action = None
                if itemPrice.isActionPrice():
                    action = packItemActionTooltipData(o, False)
                removalPrice = o.getRemovalPrice(items)
                removeAction = None
                if removalPrice.isActionPrice():
                    removeAction = packActionTooltipData(
                        ACTION_TOOLTIPS_TYPE.ECONOMICS, 'paidRemovalCost',
                        True, removalPrice.price, removalPrice.defPrice)
                removalPriceInGold = removalPrice.price.get(Currency.GOLD, 0)
                enoughGold = currentGoldBalance >= removalPriceInGold
                if enoughGold:
                    currentGoldBalance -= removalPriceInGold
                data = {
                    'intCD': o.intCD,
                    'isRemovable': o.isRemovable,
                    'userName': o.userName,
                    'sellPrice': itemPrice.price.toMoneyTuple(),
                    'toInventory': enoughGold,
                    'action': action,
                    'removePrice': removalPrice.price.toMoneyTuple(),
                    'removeActionPrice': removeAction
                }
                onVehicleOptionalDevices.append(data)

        onVehicleoShells = []
        for shell in vehicle.shells:
            if shell is not None:
                itemPrice = shell.sellPrices.itemPrice
                action = None
                if itemPrice.isActionPrice():
                    action = packItemActionTooltipData(shell, False)
                data = {
                    'intCD': shell.intCD,
                    'count': shell.count,
                    'sellPrice': itemPrice.price.toMoneyTuple(),
                    'userName': shell.userName,
                    'kind': shell.type,
                    'toInventory': shell in otherVehsShells or shell.isPremium,
                    'action': action
                }
                onVehicleoShells.append(data)

        onVehicleEquipments = []
        for equipmnent in vehicle.equipment.regularConsumables.getInstalledItems(
        ):
            action = None
            if equipmnent.sellPrices.itemPrice.isActionPrice():
                action = packItemActionTooltipData(equipmnent, False)
            data = {
                'intCD': equipmnent.intCD,
                'userName': equipmnent.userName,
                'sellPrice':
                equipmnent.sellPrices.itemPrice.price.toMoneyTuple(),
                'toInventory': True,
                'action': action
            }
            onVehicleEquipments.append(data)

        onVehicleBattleBoosters = []
        for booster in vehicle.equipment.battleBoosterConsumables.getInstalledItems(
        ):
            data = {
                'intCD': booster.intCD,
                'userName': booster.userName,
                'sellPrice': MONEY_UNDEFINED.toMoneyTuple(),
                'onlyToInventory': True
            }
            onVehicleBattleBoosters.append(data)

        inInventoryModules = []
        for m in modules:
            inInventoryModules.append({
                'intCD':
                m.intCD,
                'inventoryCount':
                m.inventoryCount,
                'toInventory':
                True,
                'sellPrice':
                m.sellPrices.itemPrice.price.toMoneyTuple()
            })

        inInventoryShells = []
        for s in shells:
            action = None
            itemPrice = s.sellPrices.itemPrice
            if itemPrice.isActionPrice():
                action = packItemActionTooltipData(s, False)
            inInventoryShells.append({
                'intCD':
                s.intCD,
                'count':
                s.inventoryCount,
                'sellPrice':
                itemPrice.price.toMoneyTuple(),
                'userName':
                s.userName,
                'kind':
                s.type,
                'toInventory':
                s in otherVehsShells or s.isPremium,
                'action':
                action
            })

        customizationOnVehicle = []
        settings = self.getDialogSettings()
        isSlidingComponentOpened = settings['isOpened']
        self.as_setDataS({
            'accountMoney': items.stats.money.toMoneyTuple(),
            'sellVehicleVO': sellVehicleData,
            'optionalDevicesOnVehicle': onVehicleOptionalDevices,
            'shellsOnVehicle': onVehicleoShells,
            'equipmentsOnVehicle': onVehicleEquipments,
            'modulesInInventory': inInventoryModules,
            'shellsInInventory': inInventoryShells,
            'isSlidingComponentOpened': isSlidingComponentOpened,
            'battleBoostersOnVehicle': onVehicleBattleBoosters,
            'customizationOnVehicle': customizationOnVehicle
        })
        return
예제 #14
0
 def __addListeners(self):
     self.startGlobalListening()
     self.app.containerManager.onViewAddedToContainer += self.__onViewAddedToContainer
     self.wallet.onWalletStatusChanged += self.__onWalletChanged
     self.gameSession.onPremiumNotify += self.__onPremiumTimeChanged
     self.igrCtrl.onIgrTypeChanged += self.__onIGRChanged
     self.lobbyContext.getServerSettings(
     ).onServerSettingsChange += self.__onServerSettingChanged
     g_currentVehicle.onChanged += self.__onVehicleChanged
     g_currentPreviewVehicle.onChanged += self.__onVehicleChanged
     self.eventsCache.onSyncCompleted += self.__onEventsCacheResync
     self.eventsCache.onEventsVisited += self.__onEventsVisited
     self.eventsCache.onProfileVisited += self.__onProfileVisited
     self.itemsCache.onSyncCompleted += self.__onItemsChanged
     self.boosters.onBoosterChangeNotify += self.__onUpdateGoodies
     self.falloutCtrl.onVehiclesChanged += self.__updateFalloutSettings
     self.falloutCtrl.onSettingsChanged += self.__updateFalloutSettings
     self.rankedController.onUpdated += self.__updateRanked
     self.addListener(events.FightButtonEvent.FIGHT_BUTTON_UPDATE,
                      self.__handleFightButtonUpdated,
                      scope=EVENT_BUS_SCOPE.LOBBY)
     self.addListener(events.CoolDownEvent.PREBATTLE,
                      self.__handleSetPrebattleCoolDown,
                      scope=EVENT_BUS_SCOPE.LOBBY)
     self.addListener(events.BubbleTooltipEvent.SHOW,
                      self.__showBubbleTooltip,
                      scope=EVENT_BUS_SCOPE.LOBBY)
     self.addListener(events.CloseWindowEvent.GOLD_FISH_CLOSED,
                      self.__onGoldFishWindowClosed,
                      scope=EVENT_BUS_SCOPE.LOBBY)
     g_clientUpdateManager.addCurrencyCallback(Currency.CREDITS,
                                               self.__setCredits)
     g_clientUpdateManager.addCurrencyCallback(Currency.GOLD,
                                               self.__setGold)
     g_clientUpdateManager.addCurrencyCallback(Currency.CRYSTAL,
                                               self.__setCrystal)
     g_clientUpdateManager.addCallbacks({
         'stats.freeXP': self.__setFreeXP,
         'stats.clanInfo': self.__setClanInfo,
         'goodies': self.__updateGoodies,
         'account.premiumExpiryTime': self.__onPremiumExpireTimeChanged,
         'cache.SPA': self.__onSPAUpdated
     })
     self.as_setFightButtonS(i18n.makeString('#menu:headerButtons/battle'))
     self.as_setWalletStatusS(self.wallet.componentsStatuses)
     self.as_setPremShopDataS(RES_ICONS.MAPS_ICONS_LOBBY_ICON_PREMSHOP,
                              MENU.HEADERBUTTONS_BTNLABEL_PREMSHOP,
                              TOOLTIPS.HEADER_PREMSHOP,
                              TOOLTIP_TYPES.COMPLEX)
     self.as_initOnlineCounterS(constants.IS_SHOW_SERVER_STATS)
     if constants.IS_SHOW_SERVER_STATS:
         self.serverStats.onStatsReceived += self.__onStatsReceived
         self.__onStatsReceived()
     self.updateAccountInfo()
     self.__updateServerData()
     if not isTimeToShowGoldFishPromo():
         enabledVal = isGoldFishActionActive()
         tooltip = TOOLTIPS.HEADER_BUTTONS_GOLD_ACTION if enabledVal else TOOLTIPS.HEADER_BUTTONS_GOLD
         self.as_setGoldFishEnabledS(enabledVal, False, tooltip,
                                     TOOLTIP_TYPES.COMPLEX)
     g_preDefinedHosts.onPingPerformed += self.__onPingPerformed
     g_preDefinedHosts.requestPing()
     self.settingsCore.onSettingsChanged += self.__onSettingsChanged
     self.encyclopedia.onNewRecommendationReceived += self.__onNewEncyclopediaRecommendation
     self.encyclopedia.onStateChanged += self._updateHangarMenuData