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
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
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
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
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)
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
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