Exemplo n.º 1
0
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})
Exemplo n.º 2
0
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})
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
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})
Exemplo n.º 5
0
 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)
Exemplo n.º 6
0
 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
Exemplo n.º 7
0
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
Exemplo n.º 9
0
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})
Exemplo n.º 10
0
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})
Exemplo n.º 11
0
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)
Exemplo n.º 12
0
 def __readVehicleTypeList(self, section):
     typeNames = section.asString.split()
     return [
         vehicles.makeVehicleTypeCompDescrByName(typeName)
         for typeName in typeNames
     ]
Exemplo n.º 13
0
 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