コード例 #1
0
ファイル: fitting_item.py プロジェクト: kusaku/wot_scripts
 def __init__(self, intCompactDescr, proxy=None, isBoughtForAltPrice=False):
     """
     Ctr.
     
     :param intCompactDescr: item's int compact descriptor
     :param proxy: instance of ItemsRequester
     :param isBoughtForAltPrice: indicates whether the item has been bought for credits(alt price)
     """
     GUIItem.__init__(self, proxy)
     HasIntCD.__init__(self, intCompactDescr)
     self._isBoughtForAltPrice = isBoughtForAltPrice
     self._rentInfo = RentalInfoProvider()
     self._restoreInfo = None
     self._personalDiscountPrice = None
     if proxy is not None and proxy.inventory.isSynced(
     ) and proxy.stats.isSynced() and proxy.shop.isSynced():
         self._mayConsumeWalletResources = proxy.stats.mayConsumeWalletResources
         defaultPrice = proxy.shop.defaults.getItemPrice(self.intCD)
         if defaultPrice is None:
             defaultPrice = MONEY_UNDEFINED
         buyPrice, self._isHidden = proxy.shop.getItem(self.intCD)
         if buyPrice is None:
             buyPrice = MONEY_UNDEFINED
         altPrice = self._getAltPrice(buyPrice, proxy.shop)
         defaultAltPrice = self._getAltPrice(defaultPrice,
                                             proxy.shop.defaults)
         self._buyPrices = ItemPrices(
             itemPrice=ItemPrice(price=buyPrice, defPrice=defaultPrice),
             itemAltPrice=ItemPrice(price=altPrice,
                                    defPrice=defaultAltPrice))
         defaultSellPrice = Money.makeFromMoneyTuple(
             BigWorld.player().shop.getSellPrice(
                 defaultPrice,
                 proxy.shop.defaults.sellPriceModifiers(intCompactDescr),
                 self.itemTypeID))
         sellPrice = Money.makeFromMoneyTuple(
             BigWorld.player().shop.getSellPrice(
                 buyPrice, proxy.shop.sellPriceModifiers(intCompactDescr),
                 self.itemTypeID))
         self._sellPrices = ItemPrices(itemPrice=ItemPrice(
             price=sellPrice, defPrice=defaultSellPrice),
                                       itemAltPrice=ITEM_PRICE_EMPTY)
         self._inventoryCount = proxy.inventory.getItems(
             self.itemTypeID, self.intCD)
         if self._inventoryCount is None:
             self._inventoryCount = 0
         self._isUnlocked = self.intCD in proxy.stats.unlocks
         self._isInitiallyUnlocked = self.intCD in proxy.stats.initialUnlocks
         self._fullyConfigured = True
     else:
         self._buyPrices = ITEM_PRICES_EMPTY
         self._sellPrices = ITEM_PRICES_EMPTY
         self._isHidden = False
         self._inventoryCount = 0
         self._isUnlocked = False
         self._mayConsumeWalletResources = False
         self._isInitiallyUnlocked = False
         self._fullyConfigured = False
     return
コード例 #2
0
 def __init__(self,
              intCompactDescr,
              proxy=None,
              isBoughtForAltPrice=False,
              strCD=None):
     super(FittingItem, self).__init__(intCD=HasIntCD(intCompactDescr),
                                       strCD=strCD)
     self._isBoughtForAltPrice = isBoughtForAltPrice
     self._rentInfo = RentalInfoProvider(None, None, None, None, None, None)
     self._restoreInfo = None
     self._personalDiscountPrice = None
     self._descriptor = self._getDescriptor()
     if proxy is not None and proxy.inventory.isSynced(
     ) and proxy.stats.isSynced() and proxy.shop.isSynced():
         self._mayConsumeWalletResources = proxy.stats.mayConsumeWalletResources
         defaultPrice = proxy.shop.defaults.getItemPrice(self.intCD)
         if defaultPrice is None:
             defaultPrice = MONEY_UNDEFINED
         buyPrice, self._isHidden = proxy.shop.getItem(self.intCD)
         if buyPrice is None:
             buyPrice = MONEY_UNDEFINED
         altPrice = self._getAltPrice(buyPrice, proxy.shop)
         defaultAltPrice = self._getAltPrice(defaultPrice,
                                             proxy.shop.defaults)
         self._buyPrices = ItemPrices(
             itemPrice=ItemPrice(price=buyPrice, defPrice=defaultPrice),
             itemAltPrice=ItemPrice(price=altPrice,
                                    defPrice=defaultAltPrice))
         defaultSellPrice = Money.makeFromMoneyTuple(
             BigWorld.player().shop.getSellPrice(
                 defaultPrice,
                 proxy.shop.defaults.sellPriceModifiers(intCompactDescr),
                 self.itemTypeID))
         sellPrice = Money.makeFromMoneyTuple(
             BigWorld.player().shop.getSellPrice(
                 buyPrice, proxy.shop.sellPriceModifiers(intCompactDescr),
                 self.itemTypeID))
         self._sellPrices = ItemPrices(itemPrice=ItemPrice(
             price=sellPrice, defPrice=defaultSellPrice),
                                       itemAltPrice=ITEM_PRICE_EMPTY)
         self._inventoryCount = proxy.inventory.getItems(
             self.itemTypeID, self.intCD)
         if self._inventoryCount is None:
             self._inventoryCount = 0
         self._isUnlocked = self.intCD in proxy.stats.unlocks
         self._isInitiallyUnlocked = self.intCD in proxy.stats.initialUnlocks
         self._fullyConfigured = True
     else:
         self._buyPrices = ITEM_PRICES_EMPTY
         self._sellPrices = ITEM_PRICES_EMPTY
         self._isHidden = False
         self._inventoryCount = 0
         self._isUnlocked = False
         self._mayConsumeWalletResources = False
         self._isInitiallyUnlocked = False
         self._fullyConfigured = False
     return
コード例 #3
0
 def getRemovalPrice(self, proxy=None):
     if not self.isRemovable and proxy is not None:
         if self.isDeluxe():
             cost = proxy.shop.paidDeluxeRemovalCost
             defaultCost = proxy.shop.defaults.paidDeluxeRemovalCost
             return ItemPrice(price=cost, defPrice=defaultCost)
         cost = proxy.shop.paidRemovalCost
         defaultCost = proxy.shop.defaults.paidRemovalCost
         return ItemPrice(price=Money(gold=cost), defPrice=Money(gold=defaultCost))
     else:
         return super(OptionalDevice, self).getRemovalPrice(proxy)
コード例 #4
0
 def __init__(self, boosterID, boosterDescription, proxy):
     super(Booster, self).__init__(boosterID, boosterDescription, proxy)
     buyPrice, defaultPrice, altPrice, defaultAltPrice, self.isHidden = proxy.getBoosterPriceData(boosterID)
     buyPrice = ItemPrice(price=buyPrice, defPrice=defaultPrice)
     if altPrice is not None:
         altPrice = ItemPrice(price=altPrice, defPrice=defaultAltPrice)
     else:
         altPrice = ITEM_PRICE_EMPTY
     self.__buyPrices = ItemPrices(itemPrice=buyPrice, itemAltPrice=altPrice)
     self.__sellPrices = ITEM_PRICES_EMPTY
     self.__activeBoostersValues = proxy.getActiveBoostersTypes()
     return
コード例 #5
0
def getStylePurchaseItems(style, modifiedOutfits, c11nService=None, prolongRent=False, progressionLevel=-1):
    purchaseItems = []
    vehicle = g_currentVehicle.item
    vehicleCD = vehicle.descriptor.makeCompactDescr()
    isStyleInstalled = c11nService.getCurrentOutfit(SeasonType.SUMMER).id == style.id
    inventoryCounts = __getInventoryCounts(modifiedOutfits, vehicleCD)
    styleCount = style.fullInventoryCount(vehicle.intCD)
    isFromInventory = not prolongRent and (styleCount > 0 or isStyleInstalled)
    if style.isProgressive:
        totalPrice = ItemPrice(Money(), Money())
        currentProgressionLvl = style.getLatestOpenedProgressionLevel(vehicle)
        progressivePrice = style.getUpgradePrice(currentProgressionLvl, progressionLevel)
        if style.isProgressionPurchasable(progressionLevel):
            totalPrice = progressivePrice
        if not style.isHidden and not isFromInventory:
            totalPrice += style.getBuyPrice()
        isFromInventory = False if progressionLevel > currentProgressionLvl else isFromInventory
        purchaseItem = PurchaseItem(style, totalPrice, areaID=None, slotType=None, regionIdx=None, selected=True, group=AdditionalPurchaseGroups.STYLES_GROUP_ID, isFromInventory=isFromInventory, locked=True, progressionLevel=progressionLevel)
        purchaseItems.append(purchaseItem)
    else:
        purchaseItem = PurchaseItem(style, style.getBuyPrice(), areaID=None, slotType=None, regionIdx=None, selected=True, group=AdditionalPurchaseGroups.STYLES_GROUP_ID, isFromInventory=isFromInventory, locked=True)
        purchaseItems.append(purchaseItem)
    for season in SeasonType.COMMON_SEASONS:
        modifiedOutfit = modifiedOutfits[season]
        if style.isProgressive:
            modifiedOutfit = c11nService.removeAdditionalProgressionData(outfit=modifiedOutfit, style=style, vehCD=vehicleCD, season=season)
        baseOutfit = style.getOutfit(season, vehicleCD)
        for intCD, component, regionIdx, container, _ in modifiedOutfit.itemsFull():
            item = c11nService.getItemByCD(intCD)
            itemTypeID = item.itemTypeID
            slotType = ITEM_TYPE_TO_SLOT_TYPE.get(itemTypeID)
            if slotType is None:
                continue
            slotId = C11nId(container.getAreaID(), slotType, regionIdx)
            modifiedSlotData = SlotData(intCD, component)
            baseSlotData = getSlotDataFromSlot(baseOutfit, slotId)
            isEdited = baseSlotData.intCD != modifiedSlotData.intCD
            if isEdited:
                if slotId != correctSlot(slotId):
                    continue
                price = item.getBuyPrice()
                isFromInventory = inventoryCounts[intCD] > 0 or item.isStyleOnly
                locked = bool(style.getDependenciesIntCDs()) and itemTypeID in EDITABLE_STYLE_IRREMOVABLE_TYPES and itemTypeID != GUI_ITEM_TYPE.CAMOUFLAGE
            else:
                price = ItemPrice(Money(credits=0), Money())
                isFromInventory = True
                locked = isPurchaseItemLocked(item, style)
            purchaseItem = PurchaseItem(item, price=price, areaID=slotId.areaId, slotType=slotId.slotType, regionIdx=slotId.regionIdx, selected=True, group=season, isFromInventory=isFromInventory, component=component, locked=locked, isEdited=isEdited)
            purchaseItems.append(purchaseItem)
            inventoryCounts[intCD] -= 1

    return purchaseItems
コード例 #6
0
 def __buildPrice(self):
     if not self._stateProvider:
         return
     else:
         priceData = self._stateProvider.getBoosterPriceData(self.boosterID)
         buyPrice, defaultPrice, altPrice, defaultAltPrice = priceData
         buyPrice = ItemPrice(price=buyPrice, defPrice=defaultPrice)
         if altPrice is not None:
             altPrice = ItemPrice(price=altPrice, defPrice=defaultAltPrice)
         else:
             altPrice = ITEM_PRICE_EMPTY
         self.__buyPrices = ItemPrices(itemPrice=buyPrice,
                                       itemAltPrice=altPrice)
         return
コード例 #7
0
 def __getTotalItemPrice(self):
     price = defPrice = ZERO_MONEY
     if self.__isTradeIn(
     ) and self.__tradeOffVehicle is not None and not self.__isRentVisible:
         tradeInPrice = self.__tradeIn.getTradeInPrice(self.__vehicle)
         price = tradeInPrice.price
         defPrice = tradeInPrice.defPrice
     elif self.__selectedRentIdx >= 0 and self.__isRentVisible:
         price += self.__vehicle.rentPackages[
             self.__selectedRentIdx]['rentPrice']
     elif self.viewModel.getIsRestore():
         price += self.__vehicle.restorePrice
     else:
         price += self.__vehicle.buyPrices.itemPrice.price
         defPrice += self.__vehicle.buyPrices.itemPrice.defPrice
     if not self.__isWithoutCommander:
         commanderCardsPrices = self.__shop.getTankmanCostItemPrices()
         commanderItemPrice = commanderCardsPrices[self.__selectedCardIdx]
         commanderItemPrice *= len(self.__vehicle.crew)
         price += commanderItemPrice.price
     if self.viewModel.equipmentBlock.slot.getIsSelected():
         vehSlots = self.__stats.vehicleSlots
         price += self.__shop.getVehicleSlotsItemPrice(vehSlots).price
     if self.viewModel.equipmentBlock.ammo.getIsSelected():
         price += self.__getAmmoItemPrice().price
     if defPrice is ZERO_MONEY:
         defPrice = price
     return ItemPrice(price=price, defPrice=defPrice)
コード例 #8
0
 def __setTotalData(self, *_):
     cart = getTotalPurchaseInfo(self._purchaseItems)
     totalPriceVO = getItemPricesVO(cart.totalPrice)
     state = g_currentVehicle.getViewState()
     shortage = self.itemsCache.items.stats.money.getShortage(
         cart.totalPrice.price)
     inFormationAlert = ''
     if not state.isCustomizationEnabled():
         inFormationAlert = text_styles.concatStylesWithSpace(
             icons.markerBlocked(),
             text_styles.error(
                 VEHICLE_CUSTOMIZATION.WINDOW_PURCHASE_FORMATION_ALERT))
     self.as_setTotalDataS({
         'totalLabel':
         text_styles.highTitle(
             _ms(VEHICLE_CUSTOMIZATION.WINDOW_PURCHASE_TOTALCOST,
                 selected=cart.numSelected,
                 total=cart.numApplying)),
         'enoughMoney':
         getItemPricesVO(ItemPrice(shortage, shortage))[0],
         'inFormationAlert':
         inFormationAlert,
         'totalPrice':
         totalPriceVO[0]
     })
コード例 #9
0
 def _getSlotPrice(self):
     shop = self.itemsCache.items.shop
     stats = self.itemsCache.items.stats
     price = Money(gold=shop.getVehicleSlotsPrice(stats.vehicleSlots))
     defPrice = Money(
         gold=shop.defaults.getVehicleSlotsPrice(stats.vehicleSlots))
     return ItemPrice(price, defPrice)
コード例 #10
0
 def _getCrewPrice(self):
     if self.__state.crewType != -1:
         shop = self.itemsCache.items.shop
         costs = (shop.tankmanCostWithGoodyDiscount[self.__state.crewType], shop.defaults.tankmanCost[self.__state.crewType])
         tankmanCount = len(self.vehicle.crew)
         return ItemPrice(*[ Money(gold=cost[Currency.GOLD], credits=cost[Currency.CREDITS]) for cost in costs ]) * tankmanCount
     return ITEM_PRICE_EMPTY
コード例 #11
0
    def getTankmanCostItemPrices(self):
        result = []
        defaultCost = self.defaults.tankmanCost
        countItems = len(defaultCost)
        if countItems == len(self.tankmanCostWithGoodyDiscount):
            for idx in xrange(countItems):
                commanderLevelsPrices = {}
                commanderLevelsDefPrices = {}
                for currency in Currency.ALL:
                    defPriceCurrency = defaultCost[idx].get(currency, None)
                    if defPriceCurrency:
                        commanderLevelsPrices[
                            currency] = self.tankmanCostWithGoodyDiscount[
                                idx].get(currency, None)
                        commanderLevelsDefPrices[currency] = defPriceCurrency

                price = Money(**commanderLevelsPrices)
                defPrice = Money(**commanderLevelsDefPrices)
                itemPrice = ItemPrice(price=price, defPrice=defPrice)
                result.append(itemPrice)

        else:
            _logger.error(
                'len(self.tankmanCost) must be equal to len(self.tankmanCostWithGoodyDiscount)'
            )
        return result
コード例 #12
0
 def _getVehiclePrice(self, vehicle):
     if self.__state.rentID == -1:
         return vehicle.buyPrices.itemPrice
     rentPackage = vehicle.rentPackages[self.__state.rentID]
     price, defPrice = rentPackage['rentPrice'], rentPackage[
         'defaultRentPrice']
     return ItemPrice(price, defPrice)
コード例 #13
0
ファイル: goodie_items.py プロジェクト: kusaku/wot_scripts
 def __init__(self, boosterID, boosterDescription, proxy):
     super(Booster, self).__init__(boosterID, boosterDescription, proxy)
     if not boosterDescription.variety == GOODIE_VARIETY.BOOSTER:
         raise AssertionError
         buyPrice, defaultPrice, altPrice, defaultAltPrice, self.isHidden = proxy.getBoosterPriceData(
             boosterID)
         buyPrice = ItemPrice(price=buyPrice, defPrice=defaultPrice)
         altPrice = altPrice is not None and ItemPrice(
             price=altPrice, defPrice=defaultAltPrice)
     else:
         altPrice = ITEM_PRICE_EMPTY
     self.__buyPrices = ItemPrices(itemPrice=buyPrice,
                                   itemAltPrice=altPrice)
     self.__sellPrices = ITEM_PRICES_EMPTY
     self.__activeBoostersValues = proxy.getActiveBoostersTypes()
     return
コード例 #14
0
 def _getLevelPrice(level):
     levelDescr = self.descriptor.progression.levels.get(level)
     if levelDescr is not None:
         price = Money(**levelDescr['price'])
         return ItemPrice(price=price, defPrice=price)
     else:
         return ITEM_PRICE_EMPTY
コード例 #15
0
 def _initialize(self, *args, **kwargs):
     super(BuyVehicleView, self)._initialize()
     self._blur = GUI.WGUIBackgroundBlur()
     self._blur.enable = True
     self.__addListeners()
     isElite = self.__vehicle.isElite
     vehType = self.__vehicle.type.replace('-', '_')
     isRestoreAvailable = self.__vehicle.isRestoreAvailable()
     with self.viewModel.transaction() as model:
         model.setTankType(
             '{}_elite'.format(vehType) if isElite else vehType)
         vehicleTooltip = i18n.makeString(
             getTypeUserName(self.__vehicle.type, isElite))
         noCrewLabelPath = R.strings.store.buyVehicleWindow.checkBox
         model.setVehicleNameTooltip(vehicleTooltip)
         model.setNation(nations.NAMES[self.__vehicle.nationID])
         model.setNoCrewCheckboxLabel(
             noCrewLabelPath.restore.withoutCrew
             if isRestoreAvailable else noCrewLabelPath.buy.withoutCrew)
         model.setTankLvl(int2roman(self.__vehicle.level))
         model.setTankName(self.__vehicle.shortUserName)
         model.setCountCrew(len(self.__vehicle.crew))
         model.setBuyVehicleIntCD(self.__vehicle.intCD)
         model.setIsToggleBtnVisible(self.__isTradeIn()
                                     and self.__vehicle.hasRentPackages)
         model.setIsElite(isElite)
         model.setIsRentVisible(self.__isRentVisible)
         model.setIsInBootcamp(self.__isBootcampBuyVehicle())
         model.setIsMovingTextEnabled(constants.IS_CHINA
                                      and GUI_SETTINGS.movingText.show)
         if self.__vehicle.hasCrew:
             model.setWithoutCommanderAltText(
                 R.strings.store.buyVehicleWindow.crewInVehicle)
         equipmentBlock = model.equipmentBlock
         equipmentBlock.setIsRentVisible(self.__isRentVisible)
         equipmentBlock.setTradeInIsEnabled(self.__isTradeIn())
         emtySlotAvailable = self.itemsCache.items.inventory.getFreeSlots(
             self.__stats.vehicleSlots) > 0
         equipmentBlock.setEmtySlotAvailable(emtySlotAvailable)
         equipmentBlock.setIsRestore(isRestoreAvailable)
         if self.__vehicle.hasRentPackages and not isRestoreAvailable:
             self.__selectedRentIdx = 0
             self.__selectedRentTerm = self.__vehicle.rentPackages[
                 self.__selectedRentIdx]['days']
         tankPriceArray = model.tankPrice.getItems()
         self.__addVMsInActionPriceList(tankPriceArray,
                                        self.__vehicle.buyPrices.itemPrice)
         self.__updateTankPrice()
         self.__updateCommanderCards()
         self.__updateSlotPrice()
         self.__updateAmmoPrice()
         self.__updateTradeInInfo()
         self.__updateRentInfo()
         self.__updateBuyBtnLabel()
         totalPriceArray = equipmentBlock.totalPrice.getItems()
         self.__addVMsInActionPriceList(
             totalPriceArray,
             ItemPrice(price=Money(credits=0, gold=0),
                       defPrice=Money(credits=0, gold=0)))
         self.__updateTotalPrice()
コード例 #16
0
 def __makeVehiclePurchaseVO(self, item, unlockProps, price):
     return {'title': _ms(BATTLE_RESULTS.COMMON_VEHICLE_PURCHASE),
      'description': self.__makeVehicleDescription(item),
      'vehicleIcon': item.iconSmall,
      'lvlIcon': getLevelIconPath(item.level),
      'price': getItemPricesVO(ItemPrice(price=price, defPrice=price)),
      'linkEvent': PROGRESS_ACTION.PURCHASE_UNLOCK_TYPE,
      'linkId': unlockProps.parentID}
コード例 #17
0
ファイル: artefacts.py プロジェクト: mahmoudimus/WOT-0.9.20.0
 def getRemovalPrice(self, proxy=None):
     """
     The price to remove this device from vehicle
     :param proxy: instance of ItemsRequester
     :return: ItemPrice
     """
     if not self.isRemovable and proxy is not None:
         if self.isDeluxe():
             cost = proxy.shop.paidDeluxeRemovalCost
             defaultCost = proxy.shop.defaults.paidDeluxeRemovalCost
             return ItemPrice(price=cost, defPrice=defaultCost)
         else:
             cost = proxy.shop.paidRemovalCost
             defaultCost = proxy.shop.defaults.paidRemovalCost
             return ItemPrice(price=Money(gold=cost),
                              defPrice=Money(gold=defaultCost))
     return super(OptionalDevice, self).getRemovalPrice(proxy)
コード例 #18
0
    def __getConversionPrice(self, xp):
        def computeCost(xp, rate, cost):
            return round(cost * xp / rate)

        rate, cost = self.itemsCache.items.shop.freeXPConversionWithDiscount
        defRate, defCost = self.itemsCache.items.shop.defaults.freeXPConversion
        return ItemPrice(Money(gold=computeCost(xp, rate, cost)),
                         Money(gold=computeCost(xp, defRate, defCost)))
コード例 #19
0
 def getVehicleSlotsItemPrice(self, currentSlotsCount):
     defPrice = self.defaults.getVehicleSlotsPrice(currentSlotsCount)
     price = self.getVehicleSlotsPrice(currentSlotsCount)
     slotGoodies = self.personalSlotDiscounts
     if slotGoodies:
         bestGoody = self.bestGoody(slotGoodies)
         price = getPriceWithDiscount(price, bestGoody.resource)
     return ItemPrice(price=Money.makeFrom(Currency.GOLD, price), defPrice=Money.makeFrom(Currency.GOLD, defPrice))
コード例 #20
0
 def __makeModulePurchaseVO(self, item, unlockProps, price):
     return {'title': _ms(BATTLE_RESULTS.COMMON_FITTING_PURCHASE),
      'description': text_styles.main(item.userName),
      'fittingType': item.itemTypeName,
      'lvlIcon': getLevelIconPath(item.level),
      'price': getItemPricesVO(ItemPrice(price=price, defPrice=price)),
      'linkEvent': PROGRESS_ACTION.PURCHASE_UNLOCK_TYPE,
      'linkId': unlockProps.parentID}
コード例 #21
0
 def getTradeInPrice(self, veh):
     price = veh.buyPrices.itemPrice.price
     defPrice = veh.buyPrices.itemPrice.defPrice
     if self.validatePossibleVehicleToBuy(veh):
         if self._vehicleToSellInfo.conversionRule.freeExchange:
             price = MONEY_ZERO_GOLD
         else:
             price = max(MONEY_ZERO_GOLD, defPrice - self.getSelectedVehicleToSell().tradeOffPrice)
     return ItemPrice(price, defPrice)
コード例 #22
0
 def _initialize(self, *args, **kwargs):
     super(BuyVehicleView, self)._initialize()
     self._blur = CachedBlur(enabled=True)
     self.__addListeners()
     isElite = self.__vehicle.isElite
     vehType = self.__vehicle.type.replace('-', '_')
     isRestore = self.__vehicle.isRestoreAvailable()
     if self.__showOnlyCongrats:
         self.viewModel.setIsContentHidden(True)
     with self.viewModel.transaction() as vm:
         vm.setIsRestore(isRestore)
         vm.setBgSource(
             R.images.gui.maps.icons.store.shop_2_background_arsenal())
         vm.setTankType('{}_elite'.format(vehType) if isElite else vehType)
         vehicleTooltip = i18n.makeString(
             getTypeUserName(self.__vehicle.type, isElite))
         noCrewLabelPath = R.strings.store.buyVehicleWindow.checkBox
         vm.setVehicleNameTooltip(vehicleTooltip)
         vm.setNation(nations.NAMES[self.__vehicle.nationID])
         vm.setNoCrewCheckboxLabel(noCrewLabelPath.restore.withoutCrew(
         ) if isRestore else noCrewLabelPath.buy.withoutCrew())
         vm.setTankLvl(int2roman(self.__vehicle.level))
         vm.setTankName(self.__vehicle.shortUserName)
         vm.setCountCrew(len(self.__vehicle.crew))
         vm.setBuyVehicleIntCD(self.__vehicle.intCD)
         vm.setIsElite(isElite)
         if self.__vehicle.hasCrew:
             vm.setWithoutCommanderAltText(
                 R.strings.store.buyVehicleWindow.crewInVehicle())
         equipmentBlock = vm.equipmentBlock
         equipmentBlock.setIsRentVisible(self.__isRentVisible)
         equipmentBlock.setTradeInIsEnabled(self.__isTradeIn())
         emtySlotAvailable = self.__itemsCache.items.inventory.getFreeSlots(
             self.__stats.vehicleSlots) > 0
         equipmentBlock.setEmtySlotAvailable(emtySlotAvailable)
         equipmentBlock.setIsRestore(isRestore)
         if self.__vehicle.hasRentPackages and (
                 not isRestore
                 or self.__actionType == VehicleBuyActionTypes.RENT
         ) and self.__actionType != VehicleBuyActionTypes.BUY:
             self.__selectedRentIdx = 0
             self.__selectedRentID = self.__vehicle.rentPackages[
                 self.__selectedRentIdx]['rentID']
         self.__updateCommanderCards()
         self.__updateSlotPrice()
         self.__updateAmmoPrice()
         self.__updateTradeInInfo()
         self.__updateRentInfo()
         self.__updateBuyBtnLabel()
         totalPriceArray = equipmentBlock.totalPrice.getItems()
         self.__addVMsInActionPriceList(
             totalPriceArray,
             ItemPrice(price=Money(credits=0, gold=0),
                       defPrice=Money(credits=0, gold=0)))
         self.__updateTotalPrice()
コード例 #23
0
 def getPersonalTradeInPrice(self, veh):
     price = veh.buyPrices.itemPrice.price
     defPrice = veh.buyPrices.itemPrice.defPrice
     if veh.canPersonalTradeInBuy and self.__activeTradeInSaleCD != UNDEFINED_ITEM_CD:
         isFreeExchange, salePrice = self.__getSalePrice(veh)
         if isFreeExchange:
             price = MONEY_ZERO_GOLD
         else:
             price = defPrice - salePrice
         if price.gold < 0:
             price = MONEY_ZERO_GOLD
     return ItemPrice(price, defPrice)
コード例 #24
0
 def __updateTankPrice(self):
     if self.__isRentVisible:
         if self.__selectedRentIdx == self.__RENT_NOT_SELECTED_IDX:
             self.viewModel.setPriceDescription(
                 R.strings.store.buyVehicleWindow.priceDescription.restore)
             defaultPrice = self.__vehicle.restorePrice
             self.__updateTankPriceModel(
                 ItemPrice(self.__vehicle.restorePrice, defaultPrice))
         elif self.__selectedRentIdx == self.__RENT_UNLIM_IDX:
             self.viewModel.setPriceDescription(
                 R.strings.store.buyVehicleWindow.priceDescription.full)
             self.__updateTankPriceModel(self.__vehicle.buyPrices.itemPrice)
         else:
             rentPackage = self.__vehicle.rentPackages[
                 self.__selectedRentIdx]
             self.viewModel.setPriceDescription(
                 R.strings.store.buyVehicleWindow.priceDescription.rent)
             self.__updateTankPriceModel(
                 ItemPrice(rentPackage['rentPrice'],
                           rentPackage['defaultRentPrice']))
     elif self.__tradeOffVehicle is not None:
         vehItemPrice = self.__vehicle.buyPrices.itemPrice
         tradeOffPrice = vehItemPrice.price - self.__tradeOffVehicle.tradeOffPrice
         tradeOffDefPrice = vehItemPrice.defPrice - self.__tradeOffVehicle.tradeOffPrice
         self.__updateTankPriceModel(
             ItemPrice(tradeOffPrice, tradeOffDefPrice))
         self.viewModel.setPriceDescription(
             R.strings.store.buyVehicleWindow.priceDescription.tradeIn)
     elif self.__vehicle.isRestoreAvailable():
         self.viewModel.setPriceDescription(
             R.strings.store.buyVehicleWindow.priceDescription.restore)
         defaultPrice = self.__vehicle.restorePrice
         self.__updateTankPriceModel(
             ItemPrice(self.__vehicle.restorePrice, defaultPrice))
     else:
         self.__updateTankPriceModel(self.__vehicle.buyPrices.itemPrice)
         self.viewModel.setPriceDescription(
             R.strings.store.buyVehicleWindow.priceDescription.full)
     return
コード例 #25
0
 def getUpgradePrice(self, proxy=None):
     if self.isUpgradable and proxy is not None:
         price = proxy.shop.getOperationPrices().get(
             ITEM_OPERATION.UPGRADE, {}).get(
                 (self.intCD,
                  self.descriptor.upgradeInfo.upgradedCompDescr), None)
         defaultPrice = proxy.shop.defaults.getOperationPrices().get(
             ITEM_OPERATION.UPGRADE, {}).get(
                 (self.intCD,
                  self.descriptor.upgradeInfo.upgradedCompDescr), None)
         return ItemPrice(price=Money(**price),
                          defPrice=Money(**defaultPrice))
     else:
         return ITEM_PRICE_EMPTY
コード例 #26
0
 def _buildVehicle(self, item):
     vo = super(_RestoreVehiclesDataProvider, self)._buildVehicle(item)
     restoreCreditsPrice = item.restorePrice.credits
     restorePrice = ItemPrice(item.restorePrice, item.restorePrice)
     enoughCredits, _ = enoughCreditsForRestore(restoreCreditsPrice, self._itemsCache)
     restoreAvailable, timerText, description, timerIcon = getVehicleRestoreInfo(item)
     vo.update({'price': getItemPricesVO(restorePrice)[0],
      'isMoneyEnough': enoughCredits,
      'enabled': enoughCredits and restoreAvailable,
      'description': description,
      'timerText': timerText,
      'timerIcon': timerIcon,
      'contextMenuId': CONTEXT_MENU_HANDLER_TYPE.STORAGE_VEHICLES_RESTORE_ITEM})
     return vo
コード例 #27
0
    def __setRepairPrice(self):
        vehicle = g_currentVehicle.item
        if isIncorrectVehicle(vehicle):
            return
        items = self.viewModel.repairPrice.getItems()
        items.clear()
        repairCost = vehicle.repairCost
        itemPrice = ItemPrice(price=Money(credits=repairCost),
                              defPrice=Money(credits=repairCost))
        actionPriceModels = getItemPricesViewModel(
            self.__itemsCache.items.stats.money, itemPrice)[0]
        for model in actionPriceModels:
            items.addViewModel(model)

        items.invalidate()
コード例 #28
0
 def _buildVehicle(self, item):
     vo = super(_RestoreVehiclesDataProvider, self)._buildVehicle(item)
     restoreCreditsPrice = item.restorePrice.credits
     restorePrice = ItemPrice(item.restorePrice, item.restorePrice)
     enoughCredits, _ = _enoughCreditsForRestore(restoreCreditsPrice,
                                                 self._itemsCache)
     restoreAvailable, timerText, description, timerIcon = _getVehicleRestoreInfo(
         item)
     vo.update({
         'price': getItemPricesVO(restorePrice)[0],
         'isMoneyEnough': enoughCredits,
         'enabled': enoughCredits and restoreAvailable,
         'description': description,
         'timerText': timerText,
         'timerIcon': timerIcon
     })
     return vo
コード例 #29
0
    def __updateRentPrice(self):
        vehicle = g_currentVehicle.item
        if isIncorrectVehicle(vehicle):
            return
        else:
            items = self.viewModel.rentPrice.getItems()
            items.clear()
            price = self.__rentVehiclesController.getRentPrice()
            itemPrice = ItemPrice(price=price, defPrice=price)
            actionPriceModels = getItemPricesViewModel(
                self.__itemsCache.items.stats.getDynamicMoney(), itemPrice)[0]
            isEnoughMoney = self.__rentVehiclesController.isEnoughMoneyToPurchase(
            )
            if actionPriceModels is not None:
                for model in actionPriceModels:
                    items.addViewModel(model)

            items.invalidate()
            self.viewModel.setIsEnoughMoney(isEnoughMoney)
            return
コード例 #30
0
 def __setBuyingPanelData(self, *_):
     purchaseItems = self.getPurchaseItems()
     cartInfo = getTotalPurchaseInfo(purchaseItems)
     totalPriceVO = getItemPricesVO(cartInfo.totalPrice)
     cleanSettings = self._cleanSettings(self._currentSettings, checkSeasons=False)
     keys = []
     if cartInfo.numTotal:
         keys.append('install')
     if cartInfo.totalPrice != ITEM_PRICE_EMPTY:
         self.as_showBuyingPanelS()
     else:
         self.as_hideBuyingPanelS()
     if any(cleanSettings.itervalues()) or not keys:
         keys.append('apply')
     label = g_config.i18n['UI_flash_commit_' + '_and_'.join(keys)]
     isApplyEnabled = bool(cartInfo.numTotal) or any(cleanSettings.itervalues())
     shortage = self.itemsCache.items.stats.money.getShortage(cartInfo.totalPrice.price)
     self.as_setBottomPanelHeaderS({'buyBtnEnabled': isApplyEnabled,
                                    'buyBtnLabel': label,
                                    'enoughMoney': getItemPricesVO(ItemPrice(shortage, shortage))[0],
                                    'pricePanel': totalPriceVO[0]})