Exemplo n.º 1
0
 def _generateOptions(self, ctx=None):
     options = []
     vehicle = self.__getVehicle(self.vehCD)
     self._manageStartOptions(options, vehicle)
     if vehicle.isPurchased:
         options.append(
             self._makeItem(VEHICLE.SELL, MENU.contextmenu(VEHICLE.SELL),
                            {'enabled': vehicle.canSell}))
     elif vehicle.isUnlocked:
         items = g_itemsCache.items
         label = MENU.CONTEXTMENU_RESTORE if vehicle.isRestoreAvailable(
         ) else MENU.CONTEXTMENU_BUY
         options.append(
             self._makeItem(
                 VEHICLE.BUY, label, {
                     'enabled':
                     vehicle.mayObtainWithMoneyExchange(
                         items.stats.money, items.shop.exchangeRate)
                 }))
     else:
         isAvailableToUnlock, _, _ = g_techTreeDP.isVehicleAvailableToUnlock(
             self.vehCD)
         options.append(
             self._makeItem(VEHICLE.RESEARCH,
                            MENU.contextmenu(VEHICLE.RESEARCH),
                            {'enabled': isAvailableToUnlock}))
     self._manageEndOptions(options, vehicle)
     return options
 def _generateOptions(self, ctx=None):
     options = []
     vehicle = self.__getVehicle(self.vehCD)
     self._manageStartOptions(options, vehicle)
     if vehicle.isPurchased:
         options.append(
             self._makeItem(VEHICLE.SELL, MENU.contextmenu(VEHICLE.SELL),
                            {'enabled': vehicle.canSell}))
     elif vehicle.isUnlocked:
         items = self.itemsCache.items
         if vehicle.isRestoreAvailable():
             label = MENU.CONTEXTMENU_RESTORE
         elif vehicle.canTradeIn:
             label = MENU.CONTEXTMENU_BUYORTRADEIN
         else:
             label = MENU.CONTEXTMENU_BUY
         if canBuyGoldForVehicleThroughWeb(vehicle):
             btnEnabled = True
         else:
             btnEnabled = vehicle.mayObtainWithMoneyExchange(
                 items.stats.money, items.shop.exchangeRate)
         options.append(
             self._makeItem(VEHICLE.BUY, label, {'enabled': btnEnabled}))
     else:
         isAvailableToUnlock, _, _ = g_techTreeDP.isVehicleAvailableToUnlock(
             self.vehCD)
         options.append(
             self._makeItem(VEHICLE.RESEARCH,
                            MENU.contextmenu(VEHICLE.RESEARCH),
                            {'enabled': isAvailableToUnlock}))
     self._manageEndOptions(options, vehicle)
     return options
Exemplo n.º 3
0
 def __getBtnState(self):
     vehicle = g_currentPreviewVehicle.item
     if vehicle.isUnlocked:
         money = g_itemsCache.items.stats.money
         exchangeRate = g_itemsCache.items.shop.exchangeRate
         price = vehicle.rentOrBuyPrice
         currency = price.getCurrency(byWeight=True)
         action = getActionPriceData(vehicle)
         isPurchaseEnabled = vehicle.isPurchaseEnabled(money, exchangeRate)
         if currency == Currency.GOLD:
             currencyIcon = RES_ICONS.MAPS_ICONS_LIBRARY_GOLDICONBIG
             formatter = text_styles.goldTextBig if isPurchaseEnabled else text_styles.errCurrencyTextBig
         else:
             currencyIcon = RES_ICONS.MAPS_ICONS_LIBRARY_CREDITSICONBIG
             formatter = text_styles.creditsTextBig if isPurchaseEnabled else text_styles.errCurrencyTextBig
         return _ButtonState(
             isPurchaseEnabled,
             formatter(BigWorld.wg_getIntegralFormat(price.get(currency))),
             VEHICLE_PREVIEW.BUYINGPANEL_BUYBTN_LABEL_BUY, action
             is not None, currencyIcon, ItemsActionsFactory.BUY_VEHICLE,
             action)
     else:
         nodeCD = vehicle.intCD
         currencyIcon = RES_ICONS.MAPS_ICONS_LIBRARY_XPCOSTICONBIG
         isAvailableToUnlock, xpCost, possibleXp = g_techTreeDP.isVehicleAvailableToUnlock(
             nodeCD)
         formatter = text_styles.creditsTextBig if possibleXp >= xpCost else text_styles.errCurrencyTextBig
         return _ButtonState(
             isAvailableToUnlock,
             formatter(BigWorld.wg_getIntegralFormat(xpCost)),
             VEHICLE_PREVIEW.BUYINGPANEL_BUYBTN_LABEL_RESEARCH, False,
             currencyIcon, ItemsActionsFactory.UNLOCK_ITEM, None)
         return None
Exemplo n.º 4
0
 def _generateOptions(self, ctx=None):
     options = []
     vehicle = self.__getVehicle(self.vehCD)
     self._manageStartOptions(options, vehicle)
     if vehicle.hasNationGroup:
         isNew = not AccountSettings.getSettings(NATION_CHANGE_VIEWED)
         options.append(self._makeItem(VEHICLE.NATION_CHANGE, MENU.CONTEXTMENU_NATIONCHANGE, {'enabled': vehicle.isNationChangeAvailable,
          'isNew': isNew}))
     if vehicle.isPurchased:
         options.append(self._makeItem(VEHICLE.SELL, MENU.contextmenu(VEHICLE.SELL), {'enabled': vehicle.canSell}))
     elif self.__isPurchaseEnabled(vehicle):
         items = self.itemsCache.items
         if vehicle.isRestoreAvailable():
             label = MENU.CONTEXTMENU_RESTORE
         elif vehicle.canTradeIn:
             label = MENU.CONTEXTMENU_BUYORTRADEIN
         else:
             label = MENU.CONTEXTMENU_BUY
         if vehicle.isCollectible and not self.__isCollectibleVehicleEnabled(vehicle):
             btnEnabled = False
         elif canBuyGoldForVehicleThroughWeb(vehicle):
             btnEnabled = True
         else:
             btnEnabled = vehicle.mayObtainWithMoneyExchange(items.stats.money, items.shop.exchangeRate)
         options.append(self._makeItem(VEHICLE.BUY, label, {'enabled': btnEnabled}))
     elif self.__isResearchEnabled(vehicle):
         isNextToUnlock, isXpEnough = g_techTreeDP.isVehicleAvailableToUnlock(self.vehCD)
         isAvailableToUnlock = isNextToUnlock and isXpEnough
         options.append(self._makeItem(VEHICLE.RESEARCH, MENU.contextmenu(VEHICLE.RESEARCH), {'enabled': isAvailableToUnlock}))
     self._manageEndOptions(options, vehicle)
     return options
Exemplo n.º 5
0
 def _isLastUnlocked(self, nodeCD):
     if self.getItem(nodeCD).isPremium:
         return False
     nextLevels = g_techTreeDP.getNextLevel(nodeCD)
     isAvailable = lambda self, nextCD: self.getItem(
         nextCD).isUnlocked or g_techTreeDP.isVehicleAvailableToUnlock(
             nextCD)[0]
     isNextUnavailable = any(
         (not isAvailable(self, nextCD) for nextCD in nextLevels))
     return isNextUnavailable or not nextLevels
 def _generateOptions(self, ctx = None):
     options = []
     vehicle = self.__getVehicle(self.vehCD)
     self._manageStartOptions(options, vehicle)
     if vehicle.isPurchased:
         options.append(self._makeItem(VEHICLE.SELL, MENU.contextmenu(VEHICLE.SELL), {'enabled': vehicle.canSell}))
     elif vehicle.isUnlocked:
         items = g_itemsCache.items
         label = MENU.CONTEXTMENU_RESTORE if vehicle.isRestoreAvailable() else MENU.CONTEXTMENU_BUY
         options.append(self._makeItem(VEHICLE.BUY, label, {'enabled': vehicle.mayObtainWithMoneyExchange(items.stats.money, items.shop.exchangeRate)}))
     else:
         isAvailableToUnlock, _, _ = g_techTreeDP.isVehicleAvailableToUnlock(self.vehCD)
         options.append(self._makeItem(VEHICLE.RESEARCH, MENU.contextmenu(VEHICLE.RESEARCH), {'enabled': isAvailableToUnlock}))
     self._manageEndOptions(options, vehicle)
     return options
Exemplo n.º 7
0
 def __getBtnDataLockedVehicle(self, vehicle):
     stats = self.itemsCache.items.stats
     tooltip = ''
     nodeCD = vehicle.intCD
     isAvailableToUnlock, xpCost, _ = g_techTreeDP.isVehicleAvailableToUnlock(nodeCD)
     if not isAvailableToUnlock:
         g_techTreeDP.load()
         unlocks = self.itemsCache.items.stats.unlocks
         next2Unlock, _ = g_techTreeDP.isNext2Unlock(nodeCD, unlocked=set(unlocks), xps=stats.vehiclesXPs, freeXP=stats.freeXP)
         if next2Unlock:
             tooltip = _buildBuyButtonTooltip('notEnoughXp')
         elif any((bool(cd in unlocks) for cd in g_techTreeDP.getTopLevel(nodeCD))):
             tooltip = _buildBuyButtonTooltip('parentModuleIsLocked')
         else:
             tooltip = _buildBuyButtonTooltip('parentVehicleIsLocked')
     return _ButtonState(isAvailableToUnlock, ['xp', xpCost], VEHICLE_PREVIEW.BUYINGPANEL_BUYBTN_LABEL_RESEARCH, None, tooltip, self.__packTitle)
 def __getBtnDataLockedVehicle(self, vehicle):
     stats = self._itemsCache.items.stats
     tooltip = ''
     buttonIcon = None
     buttonIconAlign = None
     nodeCD = vehicle.intCD
     _, isXpEnough = g_techTreeDP.isVehicleAvailableToUnlock(
         nodeCD, self._vehicleLevel)
     unlocks = self._itemsCache.items.stats.unlocks
     isNext2Unlock, unlockProps = g_techTreeDP.isNext2Unlock(
         nodeCD,
         unlocked=set(unlocks),
         xps=stats.vehiclesXPs,
         freeXP=stats.freeXP,
         level=self._vehicleLevel)
     isAvailableToUnlock = isXpEnough and isNext2Unlock
     if not isAvailableToUnlock:
         if not isXpEnough:
             tooltip = _buildBuyButtonTooltip('notEnoughXp')
         elif any((bool(cd in unlocks)
                   for cd in g_techTreeDP.getTopLevel(nodeCD))):
             tooltip = _buildBuyButtonTooltip('parentModuleIsLocked')
         else:
             tooltip = _buildBuyButtonTooltip('parentVehicleIsLocked')
     specialData = getHeroTankPreviewParams() if self.__isHeroTank else None
     if specialData is not None and specialData.buyButtonLabel:
         buyLabel = backport.text(specialData.buyButtonLabel)
     else:
         buyLabel = backport.text(
             R.strings.vehicle_preview.buyingPanel.buyBtn.label.research())
     return _ButtonState(enabled=isAvailableToUnlock,
                         itemPrice=getItemUnlockPricesVO(unlockProps),
                         label=buyLabel,
                         icon=buttonIcon,
                         iconAlign=buttonIconAlign,
                         isAction=unlockProps.discount > 0,
                         actionTooltip=None,
                         tooltip=tooltip,
                         title=self.__title,
                         isMoneyEnough=isXpEnough,
                         isUnlock=True,
                         isPrevItemsUnlock=isNext2Unlock,
                         customOffer=None,
                         isShowSpecial=False)
Exemplo n.º 9
0
 def __getBtnData(self):
     vehicle = g_currentPreviewVehicle.item
     stats = self.itemsCache.items.stats
     tooltip = ''
     if vehicle.isUnlocked:
         money = stats.money
         money = self.tradeIn.addTradeInPriceIfNeeded(vehicle, money)
         exchangeRate = self.itemsCache.items.shop.exchangeRate
         price = getGUIPrice(vehicle, money, exchangeRate)
         currency = price.getCurrency(byWeight=True)
         action = getActionPriceData(vehicle)
         mayObtainForMoney = vehicle.mayObtainWithMoneyExchange(money, exchangeRate)
         if currency == Currency.GOLD:
             currencyIcon = RES_ICONS.MAPS_ICONS_LIBRARY_GOLDICONBIG
             if mayObtainForMoney:
                 formatter = text_styles.goldTextBig
             else:
                 formatter = text_styles.errCurrencyTextBig
                 tooltip = _buildBuyButtonTooltip('notEnoughGold')
         else:
             currencyIcon = RES_ICONS.MAPS_ICONS_LIBRARY_CREDITSICONBIG
             formatter = text_styles.creditsTextBig if mayObtainForMoney else text_styles.errCurrencyTextBig
             if not mayObtainForMoney:
                 tooltip = _buildBuyButtonTooltip('notEnoughCredits')
         if self._disableBuyButton:
             mayObtainForMoney = False
         return _ButtonState(mayObtainForMoney, formatter(BigWorld.wg_getIntegralFormat(price.getSignValue(currency))), VEHICLE_PREVIEW.BUYINGPANEL_BUYBTN_LABEL_RESTORE if vehicle.isRestorePossible() else VEHICLE_PREVIEW.BUYINGPANEL_BUYBTN_LABEL_BUY, action is not None, currencyIcon, action, tooltip)
     else:
         nodeCD = vehicle.intCD
         currencyIcon = RES_ICONS.MAPS_ICONS_LIBRARY_XPCOSTICONBIG
         isAvailableToUnlock, xpCost, possibleXp = g_techTreeDP.isVehicleAvailableToUnlock(nodeCD)
         formatter = text_styles.creditsTextBig if possibleXp >= xpCost else text_styles.errCurrencyTextBig
         if not isAvailableToUnlock:
             unlocks = self.itemsCache.items.stats.unlocks
             next2Unlock, _ = g_techTreeDP.isNext2Unlock(nodeCD, unlocked=set(unlocks), xps=stats.vehiclesXPs, freeXP=stats.freeXP)
             if next2Unlock:
                 tooltip = _buildBuyButtonTooltip('notEnoughXp')
             elif any(map(lambda cd: cd in unlocks, g_techTreeDP.getTopLevel(nodeCD))):
                 tooltip = _buildBuyButtonTooltip('parentModuleIsLocked')
             else:
                 tooltip = _buildBuyButtonTooltip('parentVehicleIsLocked')
         return _ButtonState(isAvailableToUnlock, formatter(BigWorld.wg_getIntegralFormat(xpCost)), VEHICLE_PREVIEW.BUYINGPANEL_BUYBTN_LABEL_RESEARCH, False, currencyIcon, None, tooltip)
         return None
Exemplo n.º 10
0
 def __getBtnState(self):
     vehicle = g_currentPreviewVehicle.item
     if vehicle.isUnlocked:
         money = g_itemsCache.items.stats.money
         exchangeRate = g_itemsCache.items.shop.exchangeRate
         price = getGUIPrice(vehicle, money, exchangeRate)
         currency = price.getCurrency(byWeight=True)
         action = getActionPriceData(vehicle)
         mayObtainForMoney = vehicle.mayObtainWithMoneyExchange(money, exchangeRate)
         if currency == Currency.GOLD:
             currencyIcon = RES_ICONS.MAPS_ICONS_LIBRARY_GOLDICONBIG
             formatter = text_styles.goldTextBig if mayObtainForMoney else text_styles.errCurrencyTextBig
         else:
             currencyIcon = RES_ICONS.MAPS_ICONS_LIBRARY_CREDITSICONBIG
             formatter = text_styles.creditsTextBig if mayObtainForMoney else text_styles.errCurrencyTextBig
         return _ButtonState(mayObtainForMoney, formatter(BigWorld.wg_getIntegralFormat(price.get(currency))), VEHICLE_PREVIEW.BUYINGPANEL_BUYBTN_LABEL_RESTORE if vehicle.isRestorePossible() else VEHICLE_PREVIEW.BUYINGPANEL_BUYBTN_LABEL_BUY, action is not None, currencyIcon, ItemsActionsFactory.BUY_VEHICLE, action)
     else:
         nodeCD = vehicle.intCD
         currencyIcon = RES_ICONS.MAPS_ICONS_LIBRARY_XPCOSTICONBIG
         isAvailableToUnlock, xpCost, possibleXp = g_techTreeDP.isVehicleAvailableToUnlock(nodeCD)
         formatter = text_styles.creditsTextBig if possibleXp >= xpCost else text_styles.errCurrencyTextBig
         return _ButtonState(isAvailableToUnlock, formatter(BigWorld.wg_getIntegralFormat(xpCost)), VEHICLE_PREVIEW.BUYINGPANEL_BUYBTN_LABEL_RESEARCH, False, currencyIcon, ItemsActionsFactory.UNLOCK_ITEM, None)
         return None