def buildCache(): vehiclesByLevel = {} vehiclesByTag = {'beast': set(), 'sinai': set(), 'patton': set()} vehiclesInTreeByNation = {} vehiclesInTree = set() nationsWithVehiclesInTree = [] unlocksSources = vehicles.getUnlocksSources() for nationIdx in xrange(len(nations.NAMES)): nationList = vehicles.g_list.getList(nationIdx) vehiclesInNationTree = set() for vehDescr in nationList.itervalues(): vehiclesByLevel.setdefault(vehDescr['level'], set()).add(vehDescr['compactDescr']) for tag in ('beast', 'sinai', 'patton'): if tag in vehDescr['tags']: vehiclesByTag[tag].add(vehDescr['compactDescr']) if len(unlocksSources.get(vehDescr['compactDescr'], set())) > 0 or len(vehicles.g_cache.vehicle(nationIdx, vehDescr['id']).unlocksDescrs) > 0: vehiclesInNationTree.add(vehDescr['compactDescr']) vehiclesInTree.update(vehiclesInNationTree) vehiclesInTreeByNation[nationIdx] = vehiclesInNationTree if bool(vehiclesInNationTree): nationsWithVehiclesInTree.append(nationIdx) vehicles8p = vehiclesByLevel[8] | vehiclesByLevel[9] | vehiclesByLevel[10] _g_cache.update({'vehiclesByLevel': vehiclesByLevel, 'vehicles8+': vehicles8p, 'vehiclesByTag': vehiclesByTag, 'mausTypeCompDescr': vehicles.makeVehicleTypeCompDescrByName('germany:Maus'), 'vehiclesInTreesByNation': vehiclesInTreeByNation, 'vehiclesInTrees': vehiclesInTree, 'nationsWithVehiclesInTree': nationsWithVehiclesInTree})
def buildCache(): vehiclesByLevel = {} vehiclesByTag = {'beast': set(), 'sinai': set(), 'patton': set()} vehiclesInTreeByNation = {} vehiclesInTree = set() nationsWithVehiclesInTree = [] unlocksSources = vehicles.getUnlocksSources() for nationIdx in xrange(len(nations.NAMES)): nationList = vehicles.g_list.getList(nationIdx) vehiclesInNationTree = set() for vehDescr in nationList.itervalues(): vehiclesByLevel.setdefault(vehDescr['level'], set()).add(vehDescr['compactDescr']) for tag in ('beast', 'sinai', 'patton'): if tag in vehDescr['tags']: vehiclesByTag[tag].add(vehDescr['compactDescr']) if len(unlocksSources.get(vehDescr['compactDescr'], set())) > 0 or len(vehicles.g_cache.vehicle(nationIdx, vehDescr['id']).unlocksDescrs) > 0: vehiclesInNationTree.add(vehDescr['compactDescr']) vehiclesInTree.update(vehiclesInNationTree) vehiclesInTreeByNation[nationIdx] = vehiclesInNationTree if bool(vehiclesInNationTree): nationsWithVehiclesInTree.append(nationIdx) vehicles8p = vehiclesByLevel[8] | vehiclesByLevel[9] | vehiclesByLevel[10] _g_cache.update({'vehiclesByLevel': vehiclesByLevel, 'vehicles8+': vehicles8p, 'vehiclesByTag': vehiclesByTag, 'mausTypeCompDescr': vehicles.makeVehicleTypeCompDescrByName('germany:G42_Maus'), 'vehiclesInTreesByNation': vehiclesInTreeByNation, 'vehiclesInTrees': vehiclesInTree, 'nationsWithVehiclesInTree': nationsWithVehiclesInTree})
def fromVehicleType(vehNameOrTypeDescr, enableException=True): vehTypeCD = vehicles.makeVehicleTypeCompDescrByName( vehNameOrTypeDescr ) if type(vehNameOrTypeDescr) is str else vehNameOrTypeDescr if enableException and vehTypeCD not in getAllResearchedVehicles(): raise BlueprintsException( 'Cannot create blueprint for non-researched vehicle {}'.format( vehTypeCD)) return VehicleBlueprintFragment(vehTypeCD, enableException)
def __readBonus_blueprint(bonus, _name, section, eventType): bonus.setdefault('blueprints', {}) compDescr = section.readInt('compDescr', 0) or vehicles.makeVehicleTypeCompDescrByName( section.readString('vehType')) if compDescr == 0: raise SoftException('Invalid vehicle type name or description %s' % section) count = section.readInt('count', 0) if count != 0: bonus['blueprints'].update({compDescr: count})
def _initialize(self): self.vehicleID = 0 if not self.vehicleName else makeVehicleTypeCompDescrByName( self.vehicleName) self.awardTokens = tuple( (AWARD_TOKENS_FORMAT.format(self.tokenPrefix, postfix) for postfix in self.awardTokensPostfix)) self.postAwardTokens = tuple( (AWARD_TOKENS_FORMAT.format(self.tokenPrefix, postfix) for postfix in self.awardPostTokensPostfix)) self.tabTooltip = getattr( QUESTS, MISSION_TAB_FORMAT.format(self.prefix.upper()), QUESTS.MISSIONS_TAB_MARATHONS)
def __addActionVehicle(self, params): vName = params.get('name') vCompDescr = vehicles.makeVehicleTypeCompDescrByName(vName) if not vCompDescr: _logger.error('Could not apply action, vehicle name = %s', vName) return elif vCompDescr in self.__invVehiclesIntCD: return else: styleStr = params.get('styleID') styleId = int(styleStr) if styleStr else None self.__data[vCompDescr] = _HeroTankInfo(name=vName, url=params.get('url'), shopUrl=params.get('shopUrl'), styleID=styleId, crew=self.__createCrew(params.get('crew'), vCompDescr)) return
def _readGoodieTarget(reader, subsectionName): for n, t in goodie_helpers.GOODIE_TEXT_TO_TARGET.iteritems(): section = reader.getSubsection('/'.join((subsectionName, n))) if section: name = section.readString('name', '') if name == '': name = None if name and t == goodie_helpers.GOODIE_TARGET_TYPE.ON_BUY_VEHICLE: name = makeVehicleTypeCompDescrByName(name) limit = section.readInt('limit', 0) if limit == 0: limit = None resource = _readGoodieResource(section) return ((t, name, limit), resource) return
def customizationPreview(itemCD, itemsCache=None, vehicleCD=None): if vehicleCD is None: suitableVehicles = [] item = itemsCache.items.getItemByCD(itemCD) itemFilter = item.descriptor.filter nationsFilter = [] if itemFilter is not None and itemFilter.include: for node in itemFilter.include: if node.nations: nationsFilter += node.nations if node.vehicles: suitableVehicles += node.vehicles if not suitableVehicles and nationsFilter: nationName = nations.NAMES[nationsFilter[0]] topVehicle = getTopVehicleByNation(nationName) if topVehicle: try: vehicleCD = makeVehicleTypeCompDescrByName(topVehicle) vehicle = itemsCache.items.getItemByCD(vehicleCD) if item.mayInstall(vehicle): suitableVehicles.append(vehicleCD) except SoftException as e: _logger.warning(e) if not suitableVehicles: req = _CUSTOMIZATION_VEHICLE_CRITERIA | ~REQ_CRITERIA.SECRET for vehCD, vehicle in itemsCache.items.getVehicles( req).iteritems(): if not vehicle.isOutfitLocked and item.mayInstall(vehicle): suitableVehicles.append(vehCD) if not suitableVehicles: secretReq = _CUSTOMIZATION_VEHICLE_CRITERIA | REQ_CRITERIA.SECRET for vehCD, vehicle in itemsCache.items.getVehicles( secretReq).iteritems(): if not vehicle.isOutfitLocked and item.mayInstall(vehicle): suitableVehicles.append(vehCD) vehicleCD = random.choice(suitableVehicles) showVehiclePreview(vehTypeCompDescr=vehicleCD, previewBackCb=partial( showStorage, defaultSection=STORAGE_CONSTANTS.CUSTOMIZATION), previewAlias=VIEW_ALIAS.LOBBY_STORAGE, vehParams={'styleCD': itemCD}) return
def __readBonus_blueprint(bonus, _name, section, eventType, checkLimit): bonus.setdefault('blueprints', {}) compDescr = section.readInt('compDescr', 0) or vehicles.makeVehicleTypeCompDescrByName(section.readString('vehType')) if not dossiers2.custom.cache.getCache(): dossiers2.custom.cache.buildCache() cache = dossiers2.custom.cache.getCache() if compDescr == 0: raise SoftException('Invalid vehicle type name or description %s' % section) if not isUniversalFragment(compDescr): vehicle = vehicles.getVehicleType(compDescr) if compDescr not in cache['vehiclesInTrees']: raise SoftException('Invalid vehicle type %s. Vehicle is not in research tree.' % section) count = section.readInt('count', 0) if checkLimit and count > INVOICE_LIMITS.BLUEPRINTS_MAX: raise SoftException('Invalid count of blueprint id %s with amount %d when limit is %d.' % (compDescr, count, INVOICE_LIMITS.BLUEPRINTS_MAX)) if count != 0: bonus['blueprints'].update({compDescr: count})
def buildCache(): vehiclesByLevel = {} vehiclesByTag = {'beast': set(), 'sinai': set(), 'patton': set()} vehiclesInTreeByNation = {} vehiclesInTree = set() nationsWithVehiclesInTree = [] collectorVehiclesByNations = {} collectorVehiclesLevelsByNations = {} unlocksSources = vehicles.getUnlocksSources() for nationIdx in xrange(len(nations.NAMES)): nationList = vehicles.g_list.getList(nationIdx) vehiclesInNationTree = set() for vehDescr in nationList.itervalues(): if 'bob' in vehDescr.tags: continue elif 'battle_royale' in vehDescr.tags: continue vehiclesByLevel.setdefault(vehDescr.level, set()).add(vehDescr.compactDescr) for tag in ('beast', 'sinai', 'patton'): if tag in vehDescr.tags: vehiclesByTag[tag].add(vehDescr.compactDescr) if CollectorVehicleConsts.COLLECTOR_VEHICLES_TAG in vehDescr.tags: collectorVehiclesByNations.setdefault(nationIdx, set()).add(vehDescr.compactDescr) collectorVehiclesLevelsByNations.setdefault(nationIdx, set()).add(vehDescr.level) continue if len(unlocksSources.get(vehDescr.compactDescr, set())) > 0 or len(vehicles.g_cache.vehicle(nationIdx, vehDescr.id).unlocksDescrs) > 0: vehiclesInNationTree.add(vehDescr.compactDescr) vehiclesInTree.update(vehiclesInNationTree) vehiclesInTreeByNation[nationIdx] = vehiclesInNationTree if bool(vehiclesInNationTree): nationsWithVehiclesInTree.append(nationIdx) vehicles8p = vehiclesByLevel[8] | vehiclesByLevel[9] | vehiclesByLevel[10] _g_cache.update({'vehiclesByLevel': vehiclesByLevel, 'vehicles8+': vehicles8p, 'vehiclesByTag': vehiclesByTag, 'mausTypeCompDescr': vehicles.makeVehicleTypeCompDescrByName('germany:G42_Maus'), 'vehiclesInTreesByNation': vehiclesInTreeByNation, 'vehiclesInTrees': vehiclesInTree, 'nationsWithVehiclesInTree': nationsWithVehiclesInTree, 'collectorVehiclesByNations': collectorVehiclesByNations, 'collectorVehiclesLevelsByNations': collectorVehiclesLevelsByNations})
def getVehicleCDForStyle(item, itemsCache=None): suitableVehicles = [] itemFilter = item.descriptor.filter nationsFilter = [] if itemFilter is not None and itemFilter.include: for node in itemFilter.include: if node.nations: nationsFilter += node.nations if node.vehicles: suitableVehicles += node.vehicles if not suitableVehicles and nationsFilter: nationName = nations.NAMES[nationsFilter[0]] topVehicle = getTopVehicleByNation(nationName) if topVehicle: try: vehicleCD = makeVehicleTypeCompDescrByName(topVehicle) vehicle = itemsCache.items.getItemByCD(vehicleCD) if item.mayInstall(vehicle): suitableVehicles.append(vehicleCD) except SoftException as e: _logger.warning(e) if not suitableVehicles: req = _CUSTOMIZATION_VEHICLE_CRITERIA | ~REQ_CRITERIA.SECRET for vehCD, vehicle in itemsCache.items.getVehicles(req).iteritems(): if not vehicle.isOutfitLocked and item.mayInstall(vehicle): suitableVehicles.append(vehCD) if not suitableVehicles: secretReq = _CUSTOMIZATION_VEHICLE_CRITERIA | REQ_CRITERIA.SECRET for vehCD, vehicle in itemsCache.items.getVehicles( secretReq).iteritems(): if not vehicle.isOutfitLocked and item.mayInstall(vehicle): suitableVehicles.append(vehCD) return random.choice(suitableVehicles)
def __readVehicleTypeList(self, section): typeNames = section.asString.split() return [ vehicles.makeVehicleTypeCompDescrByName(typeName) for typeName in typeNames ]
def vehicleID(self): return 0 if not self.vehicleName else makeVehicleTypeCompDescrByName(self.vehicleName)
def getMainVehicleInNationGroup(nationGroupID): group = nation_change.g_settings.getGroupById(nationGroupID) return vehicles.makeVehicleTypeCompDescrByName( group.tankList[MAIN_VEHICLE_INDEX])
def iterVehTypeCDsInNationGroup(requestVehTypeCD): for vehTypeName in getGroupByVehTypeCompactDescr(requestVehTypeCD): vehTypeCD = vehicles.makeVehicleTypeCompDescrByName(vehTypeName) if vehTypeCD == requestVehTypeCD: continue yield vehTypeCD