Exemple #1
0
    def showVehicles(self):
        filterCriteria = REQ_CRITERIA.INVENTORY
        if self.__vehiclesFilter['nation'] != -1:
            if self.__vehiclesFilter['nation'] == 100:
                filterCriteria |= REQ_CRITERIA.VEHICLE.IS_PREMIUM_IGR
            else:
                filterCriteria |= REQ_CRITERIA.NATIONS(
                    [self.__vehiclesFilter['nation']])
        if self.__vehiclesFilter['tankType'] != 'none':
            filterCriteria |= REQ_CRITERIA.VEHICLE.CLASSES(
                [self.__vehiclesFilter['tankType']])
        if self.__vehiclesFilter['ready']:
            filterCriteria |= REQ_CRITERIA.VEHICLE.FAVORITE
        if self.__vehiclesFilter[
                'gameModeFilter'] and self.__multiselectionMode:
            filterCriteria |= REQ_CRITERIA.VEHICLE.FALLOUT.AVAILABLE
        items = g_itemsCache.items
        filteredVehs = items.getVehicles(filterCriteria)

        def sorting(v1, v2):
            if v1.isFavorite and not v2.isFavorite:
                return -1
            if not v1.isFavorite and v2.isFavorite:
                return 1
            return v1.__cmp__(v2)

        vehsCDs = map(attrgetter('intCD'),
                      sorted(filteredVehs.values(), sorting))
        LOG_DEBUG('Showing carousel vehicles: ', vehsCDs)
        self.as_showVehiclesS(vehsCDs)
Exemple #2
0
    def getRetrainingData(self, callback):
        items = g_itemsCache.items
        tankman = items.getTankman(self.tmanInvID)
        nativeVehicleCD = tankman.vehicleNativeDescr.type.compactDescr
        criteria = REQ_CRITERIA.NATIONS([tankman.nationID
                                         ]) | REQ_CRITERIA.UNLOCKED
        vData = items.getVehicles(criteria)
        tDescr = tankman.descriptor
        vehiclesData = vData.values()
        if nativeVehicleCD not in vData:
            vehiclesData.append(items.getItemByCD(nativeVehicleCD))
        result = []
        for vehicle in sorted(vehiclesData):
            vDescr = vehicle.descriptor
            if isVehicleObserver(vDescr.type.compactDescr):
                continue
            for role in vDescr.type.crewRoles:
                if tDescr.role == role[0]:
                    result.append({
                        'innationID': vehicle.innationID,
                        'vehicleType': vehicle.type,
                        'userName': vehicle.shortUserName
                    })
                    break

        shopPrices, action = items.shop.getTankmanCostWithDefaults()
        callback({
            'money': (items.stats.credits, items.stats.gold),
            'tankmanCost': shopPrices,
            'action': action,
            'vehicles': result
        })
Exemple #3
0
    def getRetrainingData(self, callback):
        items = g_itemsCache.items
        tankman = items.getTankman(self.tmanInvID)
        criteria = REQ_CRITERIA.NATIONS([tankman.nationID
                                         ]) | REQ_CRITERIA.UNLOCKED
        vData = items.getVehicles(criteria)
        tDescr = tankman.descriptor
        vehiclesData = sorted(vData.values())
        result = []
        for vehicle in vehiclesData:
            vDescr = vehicle.descriptor
            if isVehicleObserver(vDescr.type.compactDescr):
                continue
            for role in vDescr.type.crewRoles:
                if tDescr.role == role[0]:
                    result.append({
                        'innationID': vehicle.innationID,
                        'vehicleType': vehicle.type,
                        'userName': vehicle.shortUserName
                    })
                    break

        callback({
            'money': (items.stats.credits, items.stats.gold),
            'tankmanCost': items.shop.tankmanCost,
            'vehicles': result
        })
    def updateNationDropdown(self):
        vehsItems = g_itemsCache.items.getVehicles(self.__getNationsCriteria())
        data = [{'id': None, 'label': DIALOGS.RECRUITWINDOW_MENUEMPTYROW}]
        for name in GUI_NATIONS:
            nationIdx = nations.INDICES[name]
            vehiclesAvailable = len(
                vehsItems.filter(REQ_CRITERIA.NATIONS([nationIdx]))) > 0
            if name in nations.AVAILABLE_NAMES and vehiclesAvailable:
                data.append({'id': nationIdx, 'label': MENU.nations(name)})

        self.flashObject.as_setNations(data)
Exemple #5
0
    def updateNationDropdown(self):
        try:
            vehsItems = g_itemsCache.items.getVehicles(REQ_CRITERIA.UNLOCKED)
            data = [{'id': None, 'label': DIALOGS.RECRUITWINDOW_MENUEMPTYROW}]
            for name in GUI_NATIONS:
                nationIdx = nations.INDICES[name]
                vehiclesAvailable = len(
                    vehsItems.filter(REQ_CRITERIA.NATIONS([nationIdx]))) > 0
                if name in nations.AVAILABLE_NAMES and vehiclesAvailable:
                    data.append({'id': nationIdx, 'label': MENU.nations(name)})

            self.flashObject.as_setNations(data)
        except Exception:
            LOG_ERROR(
                'There is exception while setting data to the recruit window')
            LOG_CURRENT_EXCEPTION()

        return
Exemple #6
0
 def _getRequestCriteria(self):
     criteria = ~REQ_CRITERIA.SECRET | ~REQ_CRITERIA.HIDDEN
     if 'nation' in self._params:
         criteria |= REQ_CRITERIA.NATIONS(
             [nations.INDICES[self._params['nation']]])
     if 'levelEqual' in self._params:
         criteria |= REQ_CRITERIA.VEHICLE.LEVELS(
             [int(self._params['levelEqual'])])
     else:
         criteria |= REQ_CRITERIA.VEHICLE.LEVELS(
             range(
                 int(self._params.get('levelMoreThan', 0)) + 1,
                 int(
                     self._params.get('levelLessThan',
                                      constants.MAX_VEHICLE_LEVEL + 1))))
     if 'vehClass' in self._params:
         criteria |= REQ_CRITERIA.VEHICLE.CLASSES(
             [self._params['vehClass']])
     return criteria
Exemple #7
0
 def _parse(self):
     criteria = ~REQ_CRITERIA.SECRET | self._getCustomFilter()
     if 'types' in self._value:
         criteria |= REQ_CRITERIA.VEHICLE.SPECIFIC_BY_CD(
             self._value['types']['value'])
     else:
         if 'nations' in self._value:
             criteria |= REQ_CRITERIA.NATIONS(
                 self._value['nations']['value'])
         if 'levels' in self._value:
             criteria |= REQ_CRITERIA.VEHICLE.LEVELS(
                 self._value['levels']['value'])
         if 'classes' in self._value:
             classes = [
                 name
                 for name, index in constants.VEHICLE_CLASS_INDICES.items()
                 if index in self._value['classes']['value']
             ]
             criteria |= REQ_CRITERIA.VEHICLE.CLASSES(classes)
     return sorted(g_itemsCache.items.getVehicles(criteria).itervalues())
 def __getClassesCriteria(self, nationID):
     return self.__getNationsCriteria() | REQ_CRITERIA.NATIONS([nationID])
Exemple #9
0
    def updateVehicles(self, resetPos = False):
        Waiting.show('updateMyVehicles')
        filterCriteria = REQ_CRITERIA.INVENTORY
        if self.vehiclesFilter['nation'] != -1:
            filterCriteria |= REQ_CRITERIA.NATIONS([self.vehiclesFilter['nation']])
        if self.vehiclesFilter['tankType'] != 'none':
            filterCriteria |= REQ_CRITERIA.VEHICLE.CLASSES([self.vehiclesFilter['tankType']])
        if self.vehiclesFilter['ready']:
            filterCriteria |= REQ_CRITERIA.VEHICLE.FAVORITE
        items = g_itemsCache.items
        newVehs = items.getVehicles(REQ_CRITERIA.INVENTORY)
        filteredVehs = items.getVehicles(filterCriteria)
        vehsData = []

        def sorting(v1, v2):
            if v1.isFavorite and not v2.isFavorite:
                return -1
            if not v1.isFavorite and v2.isFavorite:
                return 1
            return v1.__cmp__(v2)

        for vehicle in sorted(filteredVehs.itervalues(), sorting):
            try:
                vState, vStateLvl = vehicle.getState()
                v = {'id': vehicle.invID,
                 'inventoryId': vehicle.invID,
                 'label': vehicle.userName,
                 'image': vehicle.icon,
                 'nation': vehicle.nationID,
                 'level': vehicle.level,
                 'stat': vState,
                 'stateLevel': vStateLvl,
                 'doubleXPReceived': vehicle.dailyXPFactor,
                 'compactDescr': vehicle.intCD,
                 'favorite': vehicle.isFavorite,
                 'canSell': vehicle.canSell,
                 'clanLock': vehicle.clanLock,
                 'elite': vehicle.isElite,
                 'premium': vehicle.isPremium,
                 'tankType': vehicle.type,
                 'exp': vehicle.xp,
                 'current': 0,
                 'enabled': True}
            except Exception:
                LOG_ERROR("Exception while '%s' vehicle processing" % vehicle.descriptor.type.name)
                LOG_CURRENT_EXCEPTION()
                continue

            vehsData.append(v)

        self.as_vehiclesResponseS({'slotPrice': items.shop.getVehicleSlotsPrice(items.stats.vehicleSlots),
         'availableSlotsForBuy': items.stats.vehicleSlots - len(newVehs),
         'allTanksCount': len(newVehs),
         'selectedTankID': g_currentVehicle.invID,
         'slots': vehsData})
        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')
        Waiting.hide('updateMyVehicles')
        return