def __getVehiclesData(self, nationID, nativeVehicleCD): items = [] criteria = REQ_CRITERIA.NATIONS([nationID]) | REQ_CRITERIA.UNLOCKED vehicles = self.itemsCache.items.getVehicles(criteria) vehiclesData = vehicles.values() if nativeVehicleCD not in vehicles: vehiclesData.append(self.itemsCache.items.getItemByCD(nativeVehicleCD)) for vehicle in sorted(vehiclesData): vDescr = vehicle.descriptor if isVehicleObserver(vDescr.type.compactDescr): continue items.append({'id': vehicle.intCD, 'type': vehicle.type, 'name': vehicle.shortUserName}) return {'items': items, 'nativeVehicleId': nativeVehicleCD, 'currentVehicleId': self.__currentVehicleCD or -1}
def __setNationsData(self): vehsItems = self.itemsCache.items.getVehicles( self.__getNationsCriteria()) data = [] selectedNationIndex = 0 counter = 0 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: if self.__selectedNation == DEFAULT_NATION: self.__selectedNation = nationIdx data.append({'id': nationIdx, 'label': MENU.nations(name)}) if nationIdx == self.__selectedNation: selectedNationIndex = counter counter = counter + 1 self.as_setNationsDataS( self.__getSendingData(data, len(data) > 1, selectedNationIndex))
def setNationsData(self, nationID=None, enabled=True, showEmptyRow=True): self.__selectedNation = nationID vehsItems = g_itemsCache.items.getVehicles(self.__getNationsCriteria()) data = [self.__getNationEmptyRow()] if showEmptyRow else [] selectedNationIndex = 0 counter = 0 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: if self.__selectedNation is None: self.__selectedNation = nationIdx data.append({'id': nationIdx, 'label': MENU.nations(name)}) if nationIdx == self.__selectedNation: selectedNationIndex = counter counter = counter + 1 self.as_setNationsDataS( self.__getSendingData(data, enabled, selectedNationIndex)) self.onDataChange(self.__selectedNation, self.__selectedVehClass, self.__selectedVehicle, self.__selectedTmanRole)
def __getClassesCriteria(self, nationID): return self.__getNationsCriteria() | REQ_CRITERIA.NATIONS([nationID])
def __collectPredefinedRoleData(self): criteria = self.__getNationsCriteria() maxResLevels = self.itemsCache.items.stats.getMaxResearchedLevelByNations( ) selectedNationsIds = [] if self.__hasPredefinedNations(): selectedNationsIds = self.__predefinedNationsIdxs else: for nId in nations.INDICES.itervalues(): selectedNationsIds.append(nId) criteria |= REQ_CRITERIA.NATIONS(selectedNationsIds) criteria |= REQ_CRITERIA.CUSTOM( lambda i: not i.isCollectible or i.level <= maxResLevels.get( i.nationID, constants.MIN_VEHICLE_LEVEL ) or i.inventoryCount > 0) if not constants.IS_IGR_ENABLED: criteria |= ~REQ_CRITERIA.VEHICLE.IS_PREMIUM_IGR if constants.IS_DEVELOPMENT: criteria |= ~REQ_CRITERIA.VEHICLE.IS_BOT criteria |= ~(REQ_CRITERIA.SECRET | ~REQ_CRITERIA.INVENTORY_OR_UNLOCKED) modulesAll = self.itemsCache.items.getVehicles( criteria=criteria).values() modulesAll.sort() self.__filteredNations = dict() self.__filteredVehClasses = dict() self.__filteredVehClasses.setdefault( DEFAULT_NATION, [self.__getVehicleClassEmptyRow()]) self.__filteredVehicles = dict() filteredVehClassesByNation = dict() count = 0 for module in modulesAll: roleFound = False for role in module.descriptor.type.crewRoles: if not roleFound and role[0] in self.__predefinedTmanRoles: roleFound = True nationID, _ = module.descriptor.type.id self.__filteredNations.setdefault( nationID, _packItemVO(nationID, MENU.nations(nations.NAMES[nationID]))) vehicleClassesSet = filteredVehClassesByNation.setdefault( nationID, set()) self.__filteredVehClasses.setdefault( DEFAULT_NATION, [self.__getVehicleClassEmptyRow()]) currentType = module.type if currentType not in vehicleClassesSet: vehicleClassesSet.add(module.type) vehClasses = self.__filteredVehClasses.setdefault( nationID, [self.__getVehicleClassEmptyRow()]) vehClasses.append( _packItemVO( currentType, DIALOGS.recruitwindow_vehicleclassdropdown( currentType))) vehicles = self.__filteredVehicles.setdefault( (nationID, currentType), [self.__getVehicleEmptyRow()]) vehicles.append( _packItemVO(module.innationID, module.shortUserName)) count += 1 if count < 1: _logger.error('Something wrong with recruit tankman default role!') self.__clearFilteredData()