Пример #1
0
 def __init__(self, carouselFilter, itemsCache, currentVehicle,
              filterCallback):
     super(BlueprintsStorageCarouselDataProvider,
           self).__init__(carouselFilter, itemsCache, currentVehicle)
     g_techTreeDP.load()
     self._baseCriteria = _BlueprintsCriteriesGroup.getGroupCriteria()
     self.__filterCallback = filterCallback
Пример #2
0
    def load(self, nationID, override=None):
        self.clear()
        g_techTreeDP.setOverride(override)
        g_techTreeDP.load()
        getItem = self.getItem
        selectedID = ResearchItemsData.getRootCD()
        unlockStats = self.getUnlockStats()
        for node, displayInfo in g_techTreeDP.getNationTreeIterator(nationID):
            nodeCD = node.nodeCD
            if node.isAnnouncement:
                self._addNode(nodeCD,
                              self._makeAnnouncementNode(node, displayInfo))
            item = getItem(nodeCD)
            if item.isHidden:
                continue
            index = self._addNode(
                nodeCD,
                self._makeRealExposedNode(node, item, unlockStats,
                                          displayInfo))
            if nodeCD == selectedID:
                self._scrollIndex = index

        ResearchItemsData.clearRootCD()
        self._findSelectedNode(nationID)
        if self._scrollIndex < 0:
            self._findActionNode(nationID)
 def __init__(self, skipConfirm=False):
     super(VehiclePreviewBuyingPanel, self).__init__()
     heroTankCD = self._heroTanks.getCurrentTankCD()
     self._vehicleCD = g_currentPreviewVehicle.item.intCD
     self._vehicleLevel = g_currentPreviewVehicle.item.level
     self._actionType = None
     self._skipConfirm = skipConfirm
     self._disableBuyButton = False
     self._marathonEvent = None
     self.__previewDP = DefaultVehPreviewDataProvider()
     self.__isHeroTank = heroTankCD and heroTankCD == self._vehicleCD
     self.__price = None
     self.__title = None
     self.__description = None
     self.__items = None
     self.__offers = None
     self.__currentOffer = None
     self.__styleByGroup = {}
     self.__vehicleByGroup = {}
     self.__endTime = None
     self.__oldPrice = MONEY_UNDEFINED
     self.__buyParams = None
     self.__backAlias = None
     self.__timeCallbackID = None
     self.__timeLeftIcon = icons.makeImageTag(
         RES_ICONS.MAPS_ICONS_LIBRARY_TIME_ICON, 16, 16)
     self.__cachedVehiclesVOs = None
     self.__cachedItemsVOs = None
     self.__cachedCollapsedItemsVOs = None
     self.__couponInfo = None
     self.__hasSSEDiscount = False
     g_techTreeDP.load()
     return
Пример #4
0
    def load(self, nationID, override=None):
        self.clear()
        vehicleList = sorted(vehicles.g_list.getList(nationID).values(),
                             key=lambda item: item['level'])
        g_techTreeDP.setOverride(override)
        g_techTreeDP.load()
        getDisplayInfo = g_techTreeDP.getDisplayInfo
        getItem = self.getItem
        selectedID = ResearchItemsData.getRootCD()
        unlockStats = self.getUnlockStats()
        for item in vehicleList:
            nodeCD = item['compactDescr']
            displayInfo = getDisplayInfo(nodeCD)
            if displayInfo is not None:
                item = getItem(nodeCD)
                if item.isHidden:
                    continue
                index = self._addNode(
                    nodeCD,
                    self._getNodeData(nodeCD, item, unlockStats, displayInfo))
                if nodeCD == selectedID:
                    self._scrollIndex = index

        ResearchItemsData.clearRootCD()
        self._findSelectedNode(nationID)
        return
Пример #5
0
 def __handleReloadData(self, event):
     """
     Redraw nation tree.
     """
     if event.key is Keys.KEY_R:
         g_techTreeDP.load(isReload=True)
         self.redraw()
Пример #6
0
    def load(self, nationID, override = None):
        """
        Loads data of nation tree by nationID.
        :param nationID: ID of nation. Index in nations.NAMES.
        """
        self.clear()
        vehicleList = sorted(vehicles.g_list.getList(nationID).values(), key=lambda item: item['level'])
        g_techTreeDP.setOverride(override)
        g_techTreeDP.load()
        getDisplayInfo = g_techTreeDP.getDisplayInfo
        getItem = self.getItem
        selectedID = ResearchItemsData.getRootCD()
        unlockStats = self.getUnlockStats()
        for item in vehicleList:
            nodeCD = item['compactDescr']
            displayInfo = getDisplayInfo(nodeCD)
            if displayInfo is not None:
                item = getItem(nodeCD)
                if item.isHidden:
                    continue
                index = self._addNode(nodeCD, self._getNodeData(nodeCD, item, unlockStats, displayInfo))
                if nodeCD == selectedID:
                    self._scrollIndex = index

        ResearchItemsData.clearRootCD()
        self._findSelectedNode(nationID)
        return
Пример #7
0
 def __handleReloadData(self, event):
     """
     Redraw nation tree.
     """
     if event.key is Keys.KEY_R:
         g_techTreeDP.load(isReload=True)
         self.redraw()
Пример #8
0
def getUnlockPrice(compactDescr,
                   parentCD=None,
                   vehicleLevel=UNKNOWN_VEHICLE_LEVEL,
                   itemsCache=None):
    itemTypeId, _, _ = vehicles.parseIntCompactDescr(compactDescr)
    freeXP = itemsCache.items.stats.actualFreeXP
    unlocks = itemsCache.items.stats.unlocks
    xpVehs = itemsCache.items.stats.vehiclesXPs
    g_techTreeDP.load()
    pricesDict = g_techTreeDP.getUnlockPrices(compactDescr)

    def getUnlockProps(isAvailable, vehCompDescr, unlockProps=None):
        if unlockProps is not None:
            unlockPrice = unlockProps.xpCost
        elif vehCompDescr in pricesDict:
            unlockPrice = pricesDict[vehCompDescr]
        else:
            vehicle = itemsCache.items.getItemByCD(parentCD)
            _, unlockPrice, _ = vehicle.getUnlockDescrByIntCD(compactDescr)
        oldPrice = unlockProps.xpFullCost if unlockProps is not None else unlockPrice
        discount = unlockProps.discount if unlockProps is not None else 0
        pVehXp = xpVehs.get(vehCompDescr, 0)
        need = unlockPrice - pVehXp
        needWithFreeXP = need - freeXP
        return (isAvailable, unlockPrice, min(need, needWithFreeXP), oldPrice,
                discount)

    if itemTypeId == vehicles._VEHICLE:
        isAvailable, unlockProps = g_techTreeDP.isNext2Unlock(
            compactDescr, unlocks, xpVehs, freeXP, vehicleLevel)
        if parentCD is not None and parentCD == unlockProps.parentID:
            return getUnlockProps(isAvailable, parentCD, unlockProps)
        xpCost = pricesDict.get(parentCD, 0)
        discount, newCost = g_techTreeDP.getBlueprintDiscountData(
            compactDescr, vehicleLevel, xpCost)
        unlockProps = UnlockProps(parentCD, -1, newCost, None, discount,
                                  xpCost)
        return getUnlockProps(isAvailable, unlockProps.parentID, unlockProps)
    else:
        isAvailable = compactDescr in unlocks
        if parentCD is not None:
            return getUnlockProps(isAvailable, parentCD)
        vehsCompDescrs = [
            compDescr for compDescr in pricesDict.keys()
            if compDescr in unlocks
        ]
        if not vehsCompDescrs:
            vehsCompDescrs = pricesDict.keys()
        minUnlockPrice = sys.maxint
        minUnlockPriceVehCD = None
        for vcd in vehsCompDescrs:
            if pricesDict[vcd] <= minUnlockPrice:
                minUnlockPrice = pricesDict[vcd]
                minUnlockPriceVehCD = vcd

        if minUnlockPriceVehCD is None:
            return (isAvailable, 0, 0, 0, 0)
        return getUnlockProps(isAvailable, minUnlockPriceVehCD)
        return
Пример #9
0
 def load(self):
     g_techTreeDP.load()
     self.clear()
     rootItem = self.getRootItem()
     unlockStats = self.getUnlockStats()
     self.__loadRoot(rootItem, unlockStats)
     self.__loadAutoUnlockItems(rootItem, unlockStats)
     self.__loadItems(rootItem, unlockStats)
     self.__loadTopLevel(rootItem, unlockStats)
Пример #10
0
 def load(self):
     g_techTreeDP.load()
     self.clear()
     rootItem = self.getRootItem()
     unlockStats = self.getUnlockStats()
     self.__loadRoot(rootItem, unlockStats)
     self.__loadAutoUnlockItems(rootItem, unlockStats)
     self.__loadItems(rootItem, unlockStats)
     self.__loadTopLevel(rootItem, unlockStats)
Пример #11
0
 def __init__(self, vehicle):
     super(TopModulesChecker, self).__init__()
     self.__vehicle = vehicle
     self._requestCriteria = _COMMON_CRITERIA | REQ_CRITERIA.VEHICLE.SUITABLE([self.__vehicle])
     self._comparators = [ChassisComparator(self._requestCriteria, self.__vehicle),
      TurretComparator(self._requestCriteria, self.__vehicle),
      GunComparator(self._requestCriteria, self.__vehicle),
      EngineComparator(self._requestCriteria, self.__vehicle),
      RadioComparator(self._requestCriteria, self.__vehicle)]
     g_techTreeDP.load()
 def __init__(self, contentResId, *args, **kwargs):
     settings = ViewSettings(contentResId)
     settings.model = ProgressiveRewardAwardModel()
     settings.args = args
     settings.kwargs = kwargs
     super(ProgressiveRewardAwardView, self).__init__(settings)
     self.__items = {}
     self.__bonuses = []
     self.__specialRewardType = ''
     self.__currentStep = 0
     g_techTreeDP.load()
Пример #13
0
 def load(self):
     """
     Loads data of research items for given vehicle (root).
     """
     g_techTreeDP.load()
     self.clear()
     rootItem = self.getRootItem()
     unlockStats = self.getUnlockStats()
     self._loadRoot(rootItem, unlockStats)
     self._loadAutoUnlockItems(rootItem, unlockStats)
     self._loadItems(rootItem, unlockStats)
     self._loadTopLevel(rootItem, unlockStats)
Пример #14
0
 def load(self):
     """
     Loads data of research items for given vehicle (root).
     """
     g_techTreeDP.load()
     self.clear()
     rootItem = self.getRootItem()
     unlockStats = self.getUnlockStats()
     self._loadRoot(rootItem, unlockStats)
     self._loadAutoUnlockItems(rootItem, unlockStats)
     self._loadItems(rootItem, unlockStats)
     self._loadTopLevel(rootItem, unlockStats)
Пример #15
0
    def load(self, nationID):
        self._nodes = []
        self._nodesIdx = {}
        self._scrollIndex = -1
        vehicleList = sorted(vehicles.g_list.getList(nationID).values(),
                             key=lambda item: item['level'])
        g_techTreeDP.load()
        self._displaySettings = g_techTreeDP.getDisplaySettings(nationID)
        invCDs = self._invItems.keys()
        getDisplayInfo = g_techTreeDP.getDisplayInfo
        selectedID = ResearchItemsData.getRootCD()
        hidden = self._hidden
        for item in vehicleList:
            nodeCD = item['compactDescr']
            displayInfo = getDisplayInfo(nodeCD)
            if displayInfo is not None:
                index = len(self._nodes)
                if nodeCD in hidden:
                    continue
                if nodeCD == selectedID:
                    self._scrollIndex = index
                self._nodesIdx[nodeCD] = index
                self._nodes.append(
                    self._getNodeData(nodeCD, displayInfo, invCDs))

        ResearchItemsData.clearRootCD()
        if g_currentVehicle.isPresent():
            vehicle = g_currentVehicle.item
            if nationID == vehicle.nationID:
                nodeCD = vehicle.intCD
                if nodeCD in self._nodesIdx.keys():
                    index = self._nodesIdx[nodeCD]
                    node = self._nodes[index]
                    if self._scrollIndex < 0:
                        self._scrollIndex = index
                    if nodeCD in self._invItems.keys():
                        node['state'] |= NODE_STATE.SELECTED
                    else:
                        LOG_ERROR('Current vehicle not found in inventory',
                                  nodeCD)
                else:
                    _, _, itemID = vehicles.parseIntCompactDescr(nodeCD)
                    if itemID in hidden:
                        LOG_DEBUG(
                            'Current vehicle is hidden. Is it define in nation tree:',
                            nodeCD,
                            getDisplayInfo(nodeCD) is not None)
                    else:
                        LOG_ERROR('Current vehicle not found in nation tree',
                                  nodeCD)
        return
Пример #16
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 getUnlockPrice(compactDescr, parentCD=None):
    item_type_id, _, _ = vehicles.parseIntCompactDescr(compactDescr)
    itemsCache = dependency.instance(IItemsCache)
    freeXP = itemsCache.items.stats.actualFreeXP
    unlocks = itemsCache.items.stats.unlocks
    xpVehs = itemsCache.items.stats.vehiclesXPs
    g_techTreeDP.load()
    pricesDict = g_techTreeDP.getUnlockPrices(compactDescr)

    def getUnlockProps(isAvailable, vehCompDescr):
        unlockPrice = pricesDict.get(vehCompDescr, 0)
        pVehXp = xpVehs.get(vehCompDescr, 0)
        need = unlockPrice - pVehXp
        needWithFreeXP = need - freeXP
        return (isAvailable, unlockPrice, min(need, needWithFreeXP))

    if item_type_id == vehicles._VEHICLE:
        isAvailable, props = g_techTreeDP.isNext2Unlock(
            compactDescr, unlocks, xpVehs, freeXP)
        if parentCD is not None:
            return getUnlockProps(isAvailable, parentCD)
        return getUnlockProps(isAvailable, props.parentID)
    else:
        isAvailable = compactDescr in unlocks
        if not pricesDict:
            return (isAvailable, 0, 0)
        if parentCD is not None:
            return getUnlockProps(isAvailable, parentCD)
        vehsCompDescrs = [
            compDescr for compDescr in pricesDict.keys()
            if compDescr in unlocks
        ]
        if not vehsCompDescrs:
            vehsCompDescrs = pricesDict.keys()
        minUnlockPrice = sys.maxint
        minUnlockPriceVehCD = None
        for vcd in vehsCompDescrs:
            if pricesDict[vcd] <= minUnlockPrice:
                minUnlockPrice = pricesDict[vcd]
                minUnlockPriceVehCD = vcd

        if minUnlockPriceVehCD is None:
            return (isAvailable, 0, 0)
        return getUnlockProps(isAvailable, minUnlockPriceVehCD)
        return
Пример #18
0
    def load(self):
        vTypeCD = self.getRootCD()
        raise vTypeCD is not None or AssertionError
        g_techTreeDP.load()
        while len(self._nodes):
            self._nodes.pop().clear()

        self._nodesIdx.clear()
        root = vehicles.getVehicleType(vTypeCD)
        unlocksDs = root.unlocksDescrs
        vTypeCD = root.compactDescr
        self._earnedXP = self._xps.get(vTypeCD, 0)
        hasFakeTurrets = len(root.hull.get('fakeTurrets', {}).get('lobby', ())) != 0 and root.tags & set(['SPG', 'AT-SPG'])
        self.__loadRoot(vTypeCD)
        self.__loadAutoUnlockItems(vTypeCD, root.autounlockedItems, hasFakeTurrets)
        self.__loadItems(vTypeCD, unlocksDs)
        self.__loadTopLevel(vTypeCD)
        return
Пример #19
0
    def load(self, nationID):
        self._nodes = []
        self._nodesIdx = {}
        self._scrollIndex = -1
        vehicleList = sorted(vehicles.g_list.getList(nationID).values(), key=lambda item: item['level'])
        g_techTreeDP.load()
        self._displaySettings = g_techTreeDP.getDisplaySettings(nationID)
        invCDs = self._invItems.keys()
        getDisplayInfo = g_techTreeDP.getDisplayInfo
        selectedID = ResearchItemsData.getRootCD()
        hidden = self._hidden
        for item in vehicleList:
            nodeCD = item['compactDescr']
            displayInfo = getDisplayInfo(nodeCD)
            if displayInfo is not None:
                index = len(self._nodes)
                if nodeCD in hidden:
                    continue
                if nodeCD == selectedID:
                    self._scrollIndex = index
                self._nodesIdx[nodeCD] = index
                self._nodes.append(self._getNodeData(nodeCD, displayInfo, invCDs))

        ResearchItemsData.clearRootCD()
        if g_currentVehicle.isPresent():
            vehicle = g_currentVehicle.item
            if nationID == vehicle.nationID:
                nodeCD = vehicle.intCD
                if nodeCD in self._nodesIdx.keys():
                    index = self._nodesIdx[nodeCD]
                    node = self._nodes[index]
                    if self._scrollIndex < 0:
                        self._scrollIndex = index
                    if nodeCD in self._invItems.keys():
                        node['state'] |= NODE_STATE.SELECTED
                    else:
                        LOG_ERROR('Current vehicle not found in inventory', nodeCD)
                else:
                    _, _, itemID = vehicles.parseIntCompactDescr(nodeCD)
                    if itemID in hidden:
                        LOG_DEBUG('Current vehicle is hidden. Is it define in nation tree:', nodeCD, getDisplayInfo(nodeCD) is not None)
                    else:
                        LOG_ERROR('Current vehicle not found in nation tree', nodeCD)
        return
Пример #20
0
def getUnlockPrice(compactDescr, parentCD = None):
    item_type_id, _, _ = vehicles.parseIntCompactDescr(compactDescr)
    freeXP = g_itemsCache.items.stats.actualFreeXP
    unlocks = g_itemsCache.items.stats.unlocks
    xpVehs = g_itemsCache.items.stats.vehiclesXPs
    g_techTreeDP.load()
    pricesDict = g_techTreeDP.getUnlockPrices(compactDescr)

    def getUnlockProps(isAvailable, vehCompDescr):
        unlockPrice = pricesDict.get(vehCompDescr, 0)
        pVehXp = xpVehs.get(vehCompDescr, 0)
        need = unlockPrice - pVehXp
        needWithFreeXP = need - freeXP
        return (isAvailable, unlockPrice, min(need, needWithFreeXP))

    if item_type_id == vehicles._VEHICLE:
        g_techTreeDP.load()
        isAvailable, props = g_techTreeDP.isNext2Unlock(compactDescr, unlocks, xpVehs, freeXP)
        if parentCD is not None:
            return getUnlockProps(isAvailable, parentCD)
        return getUnlockProps(isAvailable, props.parentID)
    else:
        isAvailable = compactDescr in unlocks
        if not pricesDict:
            return (isAvailable, 0, 0)
        if parentCD is not None:
            return getUnlockProps(isAvailable, parentCD)
        vehsCompDescrs = [ compDescr for compDescr in pricesDict.keys() if compDescr in unlocks ]
        if not vehsCompDescrs:
            vehsCompDescrs = pricesDict.keys()
        minUnlockPrice = sys.maxint
        minUnlockPriceVehCD = None
        for vcd in vehsCompDescrs:
            if pricesDict[vcd] <= minUnlockPrice:
                minUnlockPrice = pricesDict[vcd]
                minUnlockPriceVehCD = vcd

        if minUnlockPriceVehCD is None:
            return (isAvailable, 0, 0)
        return getUnlockProps(isAvailable, minUnlockPriceVehCD)
        return
Пример #21
0
    def load(self):
        vTypeCD = self.getRootCD()
        raise vTypeCD is not None or AssertionError
        g_techTreeDP.load()
        while len(self._nodes):
            self._nodes.pop().clear()

        self._nodesIdx.clear()
        root = vehicles.getVehicleType(vTypeCD)
        unlocksDs = root.unlocksDescrs
        vTypeCD = root.compactDescr
        self._earnedXP = self._xps.get(vTypeCD, 0)
        hasFakeTurrets = len(
            root.hull.get('fakeTurrets', {}).get(
                'lobby', ())) != 0 and root.tags & set(['SPG', 'AT-SPG'])
        self.__loadRoot(vTypeCD)
        self.__loadAutoUnlockItems(vTypeCD, root.autounlockedItems,
                                   hasFakeTurrets)
        self.__loadItems(vTypeCD, unlocksDs)
        self.__loadTopLevel(vTypeCD)
        return
Пример #22
0
 def __onUpdateStage(self):
     g_techTreeDP.setOverride(self._getOverride())
     if g_techTreeDP.load():
         self.as_refreshNationTreeDataS(SelectedNation.getName())
Пример #23
0
 def __handleReloadData(self, event):
     if event.key is Keys.KEY_R:
         g_techTreeDP.load(isReload=True)
         self.as_refreshNationTreeDataS(SelectedNation.getName())
Пример #24
0
 def __onUpdateStage(self):
     g_techTreeDP.setOverride(self._getOverride())
     if g_techTreeDP.load():
         self.as_refreshNationTreeDataS(SelectedNation.getName())
Пример #25
0
 def __onUpdateStage(self):
     g_techTreeDP.setOverride(self._getOverride())
     if g_techTreeDP.load():
         self.redraw()
Пример #26
0
 def __onUpdateStage(self):
     g_techTreeDP.setOverride(self._getOverride())
     if g_techTreeDP.load():
         self.redraw()
Пример #27
0
 def __handleReloadData(self, event):
     if event.key is Keys.KEY_R:
         g_techTreeDP.load(isReload=True)
         self.as_refreshNationTreeDataS(SelectedNation.getName())