Ejemplo n.º 1
0
    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))
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
 def __getClassesCriteria(self, nationID):
     return self.__getNationsCriteria() | REQ_CRITERIA.NATIONS([nationID])
Ejemplo n.º 5
0
    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()