コード例 #1
0
ファイル: data.py プロジェクト: jamesxia4/wot_client
 def _getAllPossibleXP(self, nodeCD, unlockStats):
     criteria = REQ_CRITERIA.VEHICLE.ELITE | ~REQ_CRITERIA.IN_CD_LIST([nodeCD])
     eliteVehicles = g_itemsCache.items.getVehicles(criteria)
     dirtyResult = sum(map(operator.attrgetter('xp'), eliteVehicles.values()))
     exchangeRate = self._items.shop.freeXPConversion[0]
     result = min(int(dirtyResult / exchangeRate) * exchangeRate, self._stats.gold * exchangeRate)
     result += unlockStats.getVehTotalXP(nodeCD)
     return result
コード例 #2
0
    def updateVehicles(self, vehicles=None, updateFallout=True):
        isSet = vehicles is None
        filterCriteria = REQ_CRITERIA.INVENTORY
        if vehicles is not None:
            filterCriteria |= REQ_CRITERIA.IN_CD_LIST(vehicles)
        items = g_itemsCache.items
        filteredVehs = items.getVehicles(filterCriteria)
        if vehicles is None:
            vehicles = filteredVehs.keys()
        isSuitablePredicate = lambda vehIntCD: True
        if self.preQueueFunctional.getQueueType(
        ) == constants.QUEUE_TYPE.HISTORICAL:
            battle = self.preQueueFunctional.getItemData()
            if battle is not None:
                isSuitablePredicate = battle.canParticipateWith
        hasEmptySlots = self.__multiselectionMode and len(
            self.__falloutCtrl.getEmptySlots()) > 0
        vehsData = {}
        for intCD in vehicles:
            vehicle = filteredVehs.get(intCD)
            if vehicle is not None:
                vState, vStateLvl = vehicle.getState()
                isSuitableVeh = vState != Vehicle.VEHICLE_STATE.BATTLE and not isSuitablePredicate(
                    vehicle.intCD)
                isSuitableVeh |= self.__multiselectionMode and not vehicle.isFalloutAvailable
                if isSuitableVeh:
                    vState, vStateLvl = Vehicle.VEHICLE_STATE.NOT_SUITABLE, Vehicle.VEHICLE_STATE_LEVEL.WARNING
                canSelect, tooltip = self.__falloutCtrl.canSelectVehicle(
                    vehicle)
                rentInfoStr = RentLeftFormatter(
                    vehicle.rentInfo, vehicle.isPremiumIGR).getRentLeftStr()
                vehsData[intCD] = self._getVehicleData(vehicle, vState,
                                                       vStateLvl, rentInfoStr,
                                                       hasEmptySlots,
                                                       canSelect, tooltip)

        LOG_DEBUG('Updating carousel vehicles: ',
                  vehsData if not isSet else 'full sync')
        self.as_updateVehiclesS(vehsData, isSet)
        self.showVehicles()
        isVehTypeLock = sum(
            (len(v) for v in items.stats.vehicleTypeLocks.itervalues()))
        isGlobalVehLock = sum(
            (len(v) for v in items.stats.globalVehicleLocks.itervalues()))
        if self.__updateVehiclesTimerId is None and (isVehTypeLock
                                                     or isGlobalVehLock):
            self.__updateVehiclesTimerId = BigWorld.callback(
                self.UPDATE_LOCKS_PERIOD, self.updateLockTimers)
            LOG_DEBUG('Lock timer updated')
        if updateFallout:
            self._updateFallout()
コード例 #3
0
    def updateVehiclesList(self):
        battle = g_eventsCache.getHistoricalBattles().get(self.selectedBattleID)
        teamARoster = battle.getTeamRoster(HistoricalBattle.SIDES.A)
        teamBRoster = battle.getTeamRoster(HistoricalBattle.SIDES.B)
        teamAVehicles = g_itemsCache.items.getVehicles(REQ_CRITERIA.IN_CD_LIST(teamARoster)).itervalues()
        teamBVehicles = g_itemsCache.items.getVehicles(REQ_CRITERIA.IN_CD_LIST(teamBRoster)).itervalues()

        def sortFunction(a, b):
            if a.isInInventory and not b.isInInventory:
                return -1
            if not a.isInInventory and b.isInInventory:
                return 1
            if a.isReadyToFight and not b.isReadyToFight:
                return -1
            if not a.isReadyToFight and b.isReadyToFight:
                return 1
            return 0

        teamAVehicles = sorted(teamAVehicles, sortFunction)
        teamBVehicles = sorted(teamBVehicles, sortFunction)
        teamAData = map(self._makeVehicleListItemVO, teamAVehicles)
        teamBData = map(self._makeVehicleListItemVO, teamBVehicles)
        self.as_setTeamsDataS(teamAData, teamBData)
コード例 #4
0
    def _getRequestParameters(self, nation, type, filter):
        checkExtra = False
        extra = []
        requestCriteria = super(Shop, self)._getRequestParameters(nation, type, filter)
        inventoryVehicles = g_itemsCache.items.getVehicles(requestCriteria | REQ_CRITERIA.INVENTORY).values()
        requestCriteria = requestCriteria | ~REQ_CRITERIA.HIDDEN
        if type == self._MODULE:
            typeSize = int(filter.pop(0))
            requestType = filter[0:typeSize]
            requestTypeIds = map(lambda x: ITEM_TYPE_INDICES[x], requestType)
            filter = filter[typeSize:]
            fitsType = filter.pop(0)
            compact = filter.pop(0)
            if not compact:
                LOG_ERROR('compact value has invalid value: ', compact)
                Waiting.hide('updateShop')
                return
            checkExtra = True
            extra = filter[:]
            itemTypeID = tuple(requestTypeIds)
            if fitsType == 'myVehicle':
                vehicle = g_itemsCache.items.getItemByCD(int(compact))
                requestCriteria |= REQ_CRITERIA.VEHICLE.SUITABLE([vehicle], requestTypeIds)
            elif fitsType != 'otherVehicles':
                requestCriteria |= REQ_CRITERIA.VEHICLE.SUITABLE(inventoryVehicles, requestTypeIds)
        elif type == self._SHELL:
            filterSize = int(filter.pop(0))
            requestType = filter[0:filterSize]
            filter = filter[filterSize:]
            fitsType = filter.pop(0)
            compact = filter.pop(0)
            if not compact:
                LOG_ERROR('compact value has invalid value: ', compact)
                Waiting.hide('updateShop')
                return
            itemTypeID = GUI_ITEM_TYPE.SHELL
            requestCriteria |= REQ_CRITERIA.CUSTOM(lambda item: item.type in requestType)
            if fitsType == 'myVehicleGun':
                vehicle = g_itemsCache.items.getItemByCD(int(compact))
                shellsList = map(lambda x: x.intCD, vehicle.gun.defaultAmmo)
                requestCriteria |= REQ_CRITERIA.IN_CD_LIST(shellsList)
            elif fitsType != 'otherGuns':
                shellsList = set()
                myGuns = g_itemsCache.items.getItems(GUI_ITEM_TYPE.GUN, REQ_CRITERIA.INVENTORY).values()
                for gun in myGuns:
                    shellsList.update(map(lambda x: x.intCD, gun.defaultAmmo))

                for vehicle in inventoryVehicles:
                    shellsList.update(map(lambda x: x.intCD, vehicle.gun.defaultAmmo))

                requestCriteria |= REQ_CRITERIA.IN_CD_LIST(shellsList)
        elif type == self._VEHICLE:
            requestCriteria |= ~REQ_CRITERIA.VEHICLE.IS_PREMIUM_IGR
            typeSize = int(filter.pop(0))
            requestType = filter[0:typeSize]
            extra = filter[typeSize:]
            checkExtra = True
            if 'all' not in requestType:
                requestType = map(lambda x: x.lower(), requestType)
                requestCriteria |= REQ_CRITERIA.CUSTOM(lambda item: item.type.lower() in requestType)
            itemTypeID = GUI_ITEM_TYPE.VEHICLE
        else:
            fitsType = filter.pop(0)
            compact = filter.pop(0)
            if not compact:
                LOG_ERROR('compact value has invalid value: ', compact)
                Waiting.hide('updateShop')
                return
            extra = filter
            checkExtra = type in (self._OPTIONAL_DEVICE, self._EQUIPMENT)
            itemTypeID = GUI_ITEM_TYPE_INDICES[type]
            if fitsType == 'myVehicle':
                vehicle = g_itemsCache.items.getItemByCD(int(compact))
                requestCriteria |= REQ_CRITERIA.VEHICLE.SUITABLE([vehicle], [itemTypeID])
            elif fitsType != 'otherVehicles':
                requestCriteria |= REQ_CRITERIA.VEHICLE.SUITABLE(inventoryVehicles, [itemTypeID])
        return (itemTypeID,
         requestCriteria,
         inventoryVehicles,
         checkExtra,
         extra)
コード例 #5
0
ファイル: data.py プロジェクト: jamesxia4/wot_client
 def getInventoryVehicles(self):
     nodeCDs = map(lambda node: node['id'], self._getNodesToInvalidate())
     LOG_DEBUG('getInventoryVehicles', nodeCDs)
     vehicles = self._items.getVehicles(REQ_CRITERIA.INVENTORY | REQ_CRITERIA.IN_CD_LIST(nodeCDs))
     return dict(map(lambda item: (item.inventoryID, item), vehicles.itervalues()))