def __fillConfiguration(self, slotSettings, configurationsSettings, configurationID): slotID = slotSettings.id if not self.__isConfigurationIDValid(configurationsSettings, configurationID): LOG_ERROR("ConfigurationID isn't valid. slotID, configurationID", slotID, configurationID) return else: weapons = configurationsSettings[configurationID].weapons configuration = LobbyAirplaneWeapons.__Configuration() configuration.isDefault = ( slotID, configurationID ) in _airplanesConfigurations_db.getDefaultAirplaneConfiguration( self.__aircraftID).weaponSlots configuration.weaponSlotID = slotID configuration.configurationID = configurationID if len(weapons) == 0: configuration.weaponNameID = EMPTY_WEAPON_NAME_ID configuration.weaponName = localizeLobby('WEAPON_NAME_EMPTY') self.__weaponSlotsMap[slotID].append(configuration) else: it = iter(weapons) weapon = it.next() configuration.weaponNameID = weapon.name configuration.weaponName = localizeComponents('WEAPON_NAME_' + weapon.name) configuration.neededCount = len(weapons) configuration.weaponGroup = weapon.weaponGroup weaponUpgradeMap = self.__getUpgrade(weapon.name) if weaponUpgradeMap is not None: configuration.haveCount = weaponUpgradeMap['boughtCount'] configuration.installedCount = weaponUpgradeMap[ 'installedCount'] configuration.parentName = weaponUpgradeMap['parent'] upgrade = db.DBLogic.g_instance.upgrades.get(weapon.name, None) if upgrade is not None: configuration.level = upgrade.level weaponType = upgrade.type configuration.weaponType = weaponType if weaponType == UPGRADE_TYPE.GUN: gunData = db.DBLogic.g_instance.getGunData(weapon.name) if gunData is None: LOG_ERROR( 'Weapon has not weapon settings. Weapon name', weapon.name) else: configuration.description = localizeLobby( gunData.gunProfileName.upper() + '_DESCRIPTION') else: configuration.description = localizeComponents( UPGRADE_TYPE.DESCRIPTION_MAP[weaponType]) configuration.icoPath = get48ModuleIconPath( getattr(upgrade, 'iconPath', ICON_MODULE_DEFAULT_PATH)) self.__weaponSlotsMap[slotID].append(configuration) return
def initialized(self): LOG_DEBUG('init Prebattle') self.updateCallback = -1 self.movie.backgroundAlpha = 1.0 self.addExternalCallbacks( {'prebattle.forceStart': self.onPrebattleForceStart}) data = _PrebattleVO() data.planeTypesIcon = [ PLANE_TYPE_BATTLE_RESULT_ICO_PATH.icon(planeTypeId) for planeTypeId in PLANE_TYPES_ORDER ] data.planeTypes = [ localizeLobby(HUD_PLANE_TYPES_LOC_ID[planeTypeId]) for planeTypeId in PLANE_TYPES_ORDER ] player = BigWorld.player() from Account import PlayerAccount if player != None and player.__class__ == PlayerAccount: data.battleType = player.battleType else: data.battleType = self.__iGameModesParams['curMode'] try: data.battleName = localizeLobby( BATTLE_NAME_BY_TYPE_HUD_LOC_ID[data.battleType]) data.battleDescription = localizeLobby( BATTLE_DESC_BY_TYPE_HUD_LOC_ID[data.battleType]) except KeyError: data.battleName = 'Battle name for type {} not provided'.format( data.battleType) data.battleDescription = 'Battle description for type {} not provided'.format( data.battleType) import BWPersonality lch = BWPersonality.g_lobbyCarouselHelper planeSelected = lch.getCarouselAirplaneSelected() if planeSelected: data.planeID = planeSelected.planeID data.level = planeSelected.level data.name = planeSelected.name data.longName = planeSelected.longName data.planeType = planeSelected.planeType data.type = planeSelected.type data.previewIconPath = planeSelected.previewIconPath data.hudIconPath = planeSelected.hudIconPath data.planeIconPath = planeSelected.planeIconPath data.isElite = planeSelected.isElite data.isPremium = planeSelected.isPremium from clientConsts import PLANE_TYPE_ICO_PATH, PLANE_CLASS planeStatus = planeSelected.isPremium * PLANE_CLASS.PREMIUM or planeSelected.isElite * PLANE_CLASS.ELITE or PLANE_CLASS.REGULAR data.planeTypeIconPath = PLANE_TYPE_ICO_PATH.icon( planeSelected.planeType, planeStatus) else: LOG_ERROR('Prebattle:initialized - planeSelected is None') GUIWindowAccount.initialized(self, data) if Settings.g_instance.clusterID == CLASTERS.CN: self._startTickerNews() return
def __ShowErrorMessageBox(self, error_msg): if self.__waitingID is not None: Waiting.hide(self.__waitingID) self.__waitingID = None _error_local = localizeLobby(error_msg) self.__account.call_1('hangar.showErrorMessage', _error_local, localizeLobby('BATTLE_TRAINING_FLIGHT')) LOG_DEBUG('__ShowErrorMessageBox: {0} / {1}'.format( error_msg, _error_local)) return
def getWeaponDescriptionList(self): ret = [] if self.weapons is not None: weaponConfigFinalData = {} weaponsInstalledConfigurationsList = self.weapons.getInstalledConfigurations() for weaponConfiguration in weaponsInstalledConfigurationsList: if weaponConfiguration.neededCount > 0: weaponGroup = weaponConfiguration.weaponName if weaponGroup in weaponConfigFinalData: weaponConfigFinalData[weaponGroup].value += weaponConfiguration.neededCount else: t = db.DBLogic.g_instance.upgrades[weaponConfiguration.weaponNameID].type value = weaponConfiguration.neededCount if t == UPGRADE_TYPE.BOMB: tag = AIRCRAFT_CHARACTERISTIC.BOMB_LIST elif t == UPGRADE_TYPE.ROCKET: tag = AIRCRAFT_CHARACTERISTIC.ROCKET_LIST else: tag = AIRCRAFT_CHARACTERISTIC.GUN_LIST weaponConfigFinalData[weaponGroup] = PlaneCharacteristicsField(name=weaponConfiguration.weaponName, value=value, isWeapon=True, tag=tag) for weaponGroup in weaponConfigFinalData: ret.append(weaponConfigFinalData[weaponGroup]) else: LOG_ERROR('weaponConfiguration not found for airplane', self.planeID) weaponList = self.getInstalledTurretsList() for upgradeName, count in weaponList.iteritems(): item = PlaneCharacteristicsField(name=localizeLobby('MARKET_AIRPLANE_TURRET') + localizeUpgrade(db.DBLogic.g_instance.upgrades[upgradeName]), value=count, isWeapon=True, tag=AIRCRAFT_CHARACTERISTIC.TURRET_LIST) ret.append(item) return ret
def getLobbyAirplane(aircraftID): aircraftID = int(aircraftID) airplaneData = db.DBLogic.g_instance.getAircraftData(aircraftID) if airplaneData is None: LOG_ERROR('updateCarouselResponse. plane is wrong. Airplane = ', aircraftID) return else: nationID = db.DBLogic.g_instance.getNationIDbyAircraftID(aircraftID) airplane = LobbyAirplane() import BWPersonality inv = BWPersonality.g_lobbyCarouselHelper.inventory try: airplane.nationID = nationID airplane.planeID = aircraftID airplane.name = localizeAirplane(airplaneData.airplane.name) airplane.longName = localizeAirplaneLong(airplaneData.airplane.name) if airplaneData.airplane.options.isDev: airplane.longName += ' (Dev)' airplane.hudIconPath = airplaneData.airplane.hudIcoPath if airplaneData.airplane else 'n/a' airplane.planeIconPath = airplaneData.airplane.iconPath if airplaneData.airplane else 'n/a' airplane.previewIconPath = airplaneData.airplane.previewIconPath if airplaneData.airplane else 'n/a' airplane.nationFlagPath = db.DBLogic.g_instance.getAircraftFlagPath(airplaneData.airplane.name) airplane.level = airplaneData.airplane.level if airplaneData.airplane else 0 airplane.levelRomanNum = airplane.level airplane.mass = 0.0 airplane.hitPoints = 0.0 airplane.type = localizeLobby(PREBATTLE_PLANE_TYPE_NAME[airplaneData.airplane.planeType]) airplane.isPremium = db.DBLogic.g_instance.isPlanePremium(aircraftID) airplane.isElite = inv.isAircraftElite(aircraftID) airplane.experience = inv.getAircraftExp(aircraftID) airplane.planeType = airplaneData.airplane.planeType airplane.isResearched = inv.isAircraftOpened(aircraftID) airplane.isBought = inv.isAircraftBought(aircraftID) airplane.updatePrice() airplane.researchExp = 0 upgrade = db.DBLogic.g_instance.upgrades.get(airplaneData.airplane.name, None) if upgrade is not None and upgrade.variant[0].parentUpgrade: airplane.researchExp = int(upgrade.variant[0].parentUpgrade[0].experience) planeStatus = airplane.isPremium * PLANE_CLASS.PREMIUM or airplane.isElite * PLANE_CLASS.ELITE or PLANE_CLASS.REGULAR airplane.planeTypeIconPath = PLANE_TYPE_ICO_PATH.icon(airplane.planeType, planeStatus) upgradesList, aircraftList = db.DBLogic.g_instance.getAircraftUpgrades(aircraftID) defaultConfiguration = _airplanesConfigurations_db.getDefaultAirplaneConfiguration(aircraftID) upgradeInfoMaps = [] for upgrade in upgradesList: info = inv.getUpgradeInfoMap(aircraftID, upgrade) info['isInstalled'] = any((m == upgrade.name for m in defaultConfiguration.modules)) upgradeInfoMaps.append(info) airplane.modules = LobbyAirplaneModules(aircraftID, upgradeInfoMaps) airplane.weapons = LobbyAirplaneWeapons(aircraftID, None, list(defaultConfiguration.weaponSlots)) from gui.Scaleform.LobbyAirplanePresets import LobbyAirplanePresets airplane.presets = LobbyAirplanePresets(aircraftID, airplane.modules, airplane.weapons, None, [ preset.name for preset in db.DBLogic.g_instance.getAircraftPresetsListByName(airplaneData.airplane.name) ], db.DBLogic.g_instance.getAircraftDefaultPresetFromName(airplaneData.airplane.name).name) airplane.presets.fillPresets() except: LOG_CURRENT_EXCEPTION() return from Account import PLANE_BLOCK_TYPE airplane.blockType = PLANE_BLOCK_TYPE.get(airplane.planeID, BLOCK_TYPE.UNLOCKED) return airplane
def __setLocalizedCreateRoomSettings(self, filtersMap): class FlashVO: def __init__(self): self.maps = [] self.planesLevelsFrom = [] self.planesLevelsFrom = [] self.planesLevelsTo = [] self.battleDurations = [] flashVO = FlashVO() flashVO.maps = self.generateMapASList(filtersMap) LOG_DEBUG('trainingsRoomCreating.setData', filtersMap, flashVO.maps) for planeLevelFrom in filtersMap['planesLevelsFrom']: flashVO.planesLevelsFrom.append(planeLevelFrom) for planesLevelTo in filtersMap['planesLevelsTo']: flashVO.planesLevelsTo.append(planesLevelTo) for battleDuration in filtersMap['durationBattle']: durationVO = ItemVO() durationVO.name = localizeLobby( consts.BATTLE_DURATIONS.BATTLE_DURATIONS_MAP.get( battleDuration)) durationVO.id = battleDuration flashVO.battleDurations.append(durationVO) LOG_DEBUG('trainingsRoomCreating.setData', flashVO) self.__account.call_1('trainingsRoomCreating.setData', flashVO)
def __fillSlot(self, slotSettings): slotID = slotSettings.id configurationsSettings = slotSettings.types if configurationsSettings is None: LOG_ERROR('Slot has not any configurations. SlotID', slotID) return False else: self.__weaponSlotsMap[slotID] = [] self.__slotsInfoMap[slotID] = { 'description': localizeLobby('AMMO_SLOT_' + slotSettings.name), 'title': localizeLobby('AVAILABLE_' + slotSettings.name) } for configurationID in configurationsSettings.keys(): self.__fillConfiguration(slotSettings, configurationsSettings, configurationID) return
def getModulesInfoMap(self, modulesList, useTypeList = []): modulesInfoMap = {} for moduleMap in modulesList: moduleType = moduleMap['type'] moduleTypeID = UPGRADE_TYPE.STRING_TO_INT_MAP[moduleType] if not useTypeList or moduleType in useTypeList: modulesInfoMap[moduleTypeID] = localizeLobby(UPGRADE_TYPE.TITLE_MAP[moduleType]) return modulesInfoMap
def __call__(self, account, ob, **kw): adaptedOB = super(ITypePlaneAdapter, self).__call__(account, ob, **kw) if ob is not None: adaptedOB['type'] = ob.planeType adaptedOB['typeString'] = localizeLobby( PREBATTLE_PLANE_TYPE_NAME[ob.planeType]) adaptedOB['typeIcoPath'] = PLANE_TYPE_ICO_PATH.icon( ob.planeType, PLANE_CLASS.REGULAR) return adaptedOB
def __setLocalizedFilters(self, filtersMap, inRoom=False): if self.__roomsListActive or inRoom: mapASList = self.generateMapASList(filtersMap) if inRoom: self.__account.call_1('trainingsRoomTeams.setAreaNames', mapASList) else: self.__account.call_1('trainingRoomsList.setAreaNames', mapASList) if not inRoom: fireModeASList = [] for fireMode in filtersMap['fireModeFilters']: localizedText = localizeLobby( consts.PREBATTLE_FIRE_MODE_FILTER. PREBATTLE_FIRE_MODE_FILTER_MAP.get(fireMode)) fireModeVO = ItemVO(fireMode, localizedText) fireModeASList.append(fireModeVO) self.__account.call_1('trainingRoomsList.setFireModes', fireModeASList) gameModeASList = [] for gameMode in filtersMap['gameModeFilters']: localizedText = localizeLobby( consts.PREBATTLE_GAMEMODES_FILTER_MAP.get(gameMode)) gameModeVO = ItemVO(gameMode, localizedText) gameModeASList.append(gameModeVO) self.__account.call_1('trainingRoomsList.setGameModes', gameModeASList) levelASList = [] for levelType in filtersMap['planeLevelFilters']: localizedText = localizeLobby( consts.PREBATTLE_LEVELS_FILTER.PREBATTLE_LEVELS_FILTER_MAP. get(levelType)) levelTypeVO = ItemVO(levelType, localizedText) levelASList.append(levelTypeVO) if inRoom: self.__account.call_1('trainingsRoomTeams.setPlaneLevels', levelASList) else: self.__account.call_1('trainingRoomsList.setPlaneLevels', levelASList)
def __call__(self, account, ob, **kw): if ob is None: return ob else: adaptedOB = super(IEquipmentAdapter, self).__call__(account, getObject(kw['idTypeList']), **kw) adaptedOB['buyAvailable'] = ob.buyAvailable adaptedOB['minLevel'] = ob.minLevel adaptedOB['maxLevel'] = ob.maxLevel from db.DBLogic import g_instance as dbInst adaptedOB['nations'] = [ dbInst.getNationIDbyName(x) for x in ob.nations ] adaptedOB['name'] = localizeLobby(adaptedOB['name']) adaptedOB['description'] = localizeLobby(adaptedOB['description']) adaptedOB[ 'suitablePlaneIDs'] = dbInst.getAvailablePlanesByEquipmentID( kw['idTypeList'][0][0]) return adaptedOB
def __call__(self, account, ob, **kw): if ob is None: return ob else: def localizeIfNotEmpty(tag): ret = localizeLobby(tag) if ret == tag: return '' return ret adaptedOB = super(IConsumableAdapter, self).__call__(account, getObject(kw['idTypeList']), **kw) adaptedOB['buyAvailable'] = ob.buyAvailable adaptedOB['name'] = localizeLobby(adaptedOB['name']) adaptedOB['description'] = localizeLobby(adaptedOB['description']) adaptedOB['fullDescription'] = localizeLobby( adaptedOB['fullDescription']) adaptedOB['effectContinuous'] = localizeIfNotEmpty( adaptedOB['effectContinuous']) adaptedOB['effectOnUse'] = localizeIfNotEmpty( adaptedOB['effectOnUse']) from db.DBLogic import g_instance as dbInst adaptedOB['minLevel'] = ob.minLevel adaptedOB['maxLevel'] = ob.maxLevel adaptedOB['nations'] = [ dbInst.getNationIDbyName(x) for x in ob.nations ] adaptedOB['planeTypes'] = ob.planeType adaptedOB['coolDownTime'] = ob.coolDownTime adaptedOB['effectTime'] = ob.effectTime adaptedOB['chargesCount'] = ob.chargesCount adaptedOB[ 'suitablePlaneIDs'] = dbInst.getAvailablePlanesByConsumableID( kw['idTypeList'][0][0]) adaptedOB['behaviour'] = ob.behaviour adaptedOB['readyOnRespawn'] = ob.readyOnRespawn adaptedOB['isExclusive'] = ob.isExclusive return adaptedOB
def getAirplaneDescriptionPair(characteristicsTable, tag, measurementSystem = None): name = localizeLobby(CHARACTERISTICS_LOCALIZATION_MAP[tag]) if characteristicsTable is not None: value = getattr(characteristicsTable, SPECS_KEY_MAP[tag]) value, unit, largerIsBetter = _adjustSpec(value, tag, measurementSystem) else: LOG_ERROR('Characteristics table is empty') value = 0 unit = None return (name, value, unit, largerIsBetter)
def __convertRoomToFlashVO(self, room): planeLevel = self.planeLevel def extract(source, attr): if attr in source: return source[attr] return 0 flashVO = TrainingRoomFlashVO() flashVO.roomID = extract(room, 'roomID') flashVO.roomDescription = extract(room, 'roomDescription') flashVO.currentCountPlayers = extract(room, 'currentCountPlayers') flashVO.maxCountPlayers = extract(room, 'maxCountPlayers') flashVO.nameCommander = extract(room, 'nameCommander') flashVO.clanAbbrevCommander = extract(room, 'clanAbbrevCommander') if 'durationTime' in room: flashVO.time = room['durationTime'] / 60 elif 'time' in room: flashVO.time = room['time'] / 60 flashVO.gameMode = localizeHUD( consts.PREBATTLE_GAMEMODES_FILTER_MAP.get(extract( room, 'gameMode'))) flashVO.planeLevelFrom = extract(room, 'planeLevelFrom') flashVO.planeLevelTo = extract(room, 'planeLevelTo') flashVO.planeHidden = extract(room, 'planeHidden') if planeLevel is None: flashVO.buttonEnabled = extract(room, 'enterButtonEnabled') else: flashVO.buttonEnabled = flashVO.planeLevelFrom <= planeLevel <= flashVO.planeLevelTo planeLevelFrom = localizeHUD( consts.PREBATTLE_PLANES_LEVELS.PREBATTLE_PLANES_LEVELS_MAP.get( flashVO.planeLevelFrom)) planeLevelTo = localizeHUD( consts.PREBATTLE_PLANES_LEVELS.PREBATTLE_PLANES_LEVELS_MAP.get( flashVO.planeLevelTo)) flashVO.planeLevel = planeLevelFrom + ' - ' + planeLevelTo flashVO.fireMode = localizeLobby( consts.PREBATTLE_FIRE_MODE_FILTER.PREBATTLE_FIRE_MODE_FILTER_MAP. get(extract(room, 'fireMode'))) flashVO.mapID = extract(room, 'mapID') arenaData = db.DBLogic.g_instance.getArenaData(flashVO.mapID) if arenaData: flashVO.previewIcoPath = arenaData.trainingRoomIcoPathSelected flashVO.schemeName = localizeMap(arenaData.trainingRoomSecondName) flashVO.mapName = localizeMap(arenaData.trainingRoomName) return flashVO
def __call__(self, account, ob, **kw): name = ob.client.name.locale description = ob.client.description.locale planeId = part2bomber(ob.id) bigIconPath = ob.client.icon.big smallIconPath = ob.client.icon.small position = ob.client.place adaptedOB = super(IBomberPartAdapter, self).__call__(account, getObject(kw['idTypeList']), **kw) if adaptedOB: adaptedOB['name'] = localizeLobby(name) adaptedOB['description'] = localizeTooltips(description) adaptedOB['planeID'] = planeId adaptedOB['bigIconPath'] = bigIconPath adaptedOB['smallIconPath'] = smallIconPath adaptedOB['position'] = position return adaptedOB
def createRankGainedEventModel(rankID): rankModel = RankModel.getRankByID(rankID) planeType = rankModel.relatedPlaneType iconPathTemplate = rankModel.iconPath templateData = { 'type': 'achievements', 'class': planeTypeToPath[planeType], 'state': 'normal', 'size': '72x88' } iconPath = iconPathTemplate.format(**templateData) titleTemplate = localizeTooltips(rankModel.title) localizedPlaneTypeName = localizeLobby( PREBATTLE_PLANE_TYPE_NAME[planeType]) return { 'type': EconomicsModelView.AWARD_EVENT_TYPE, 'title': titleTemplate.format(class_name=localizedPlaneTypeName), 'icon': iconPath }
def _adjustSpec(value, tag, measurementSystem = None): largerIsBetter = True unit = None ms = measurementSystem or MeasurementSystem() if tag == AIRCRAFT_CHARACTERISTIC.MASS: value = int(round(ms.getKgs(value))) unit = ms.localizeMarket(CHARACTERISTICS_LOCALIZATION_MAP[tag]) largerIsBetter = False elif tag == AIRCRAFT_CHARACTERISTIC.GROUND_MAX_SPEED: value = int(round(ms.getKmh(value))) unit = ms.localizeMarket(CHARACTERISTICS_LOCALIZATION_MAP[tag]) elif tag == AIRCRAFT_CHARACTERISTIC.HEIGHT_MAX_SPEED: value = int(round(ms.getKmh(value))) unit = ms.localizeMarket(CHARACTERISTICS_LOCALIZATION_MAP[tag]) elif tag in (AIRCRAFT_CHARACTERISTIC.OPTIMAL_HEIGHT, AIRCRAFT_CHARACTERISTIC.ALT_PERFORMANCE): value = int(round(ms.getMeters(value))) if tag == AIRCRAFT_CHARACTERISTIC.OPTIMAL_HEIGHT: unit = ms.localizeMarket(CHARACTERISTICS_LOCALIZATION_MAP[tag]) elif tag == AIRCRAFT_CHARACTERISTIC.RATE_OF_CLIMB: value = wowpRound(ms.getMeters(value), 1) unit = ms.localizeMarket(CHARACTERISTICS_LOCALIZATION_MAP[tag]) elif tag == AIRCRAFT_CHARACTERISTIC.AVERAGE_TURN_TIME: value = wowpRound(value, 1) unit = localizeLobby('MARKET_AIRPLANE_FULL_TURN_TIME_SEC') largerIsBetter = False elif tag == AIRCRAFT_CHARACTERISTIC.DIVE_SPEED: value = int(round(ms.getKmh(value))) unit = ms.localizeMarket(CHARACTERISTICS_LOCALIZATION_MAP[tag]) elif tag == AIRCRAFT_CHARACTERISTIC.STALL_SPEED: value = int(round(ms.getKmh(value))) unit = ms.localizeMarket(CHARACTERISTICS_LOCALIZATION_MAP[tag]) largerIsBetter = False elif tag == AIRCRAFT_CHARACTERISTIC.OPTIMAL_MANEUVER_SPEED: value = wowpRound(ms.getKmh(value), 1) unit = ms.localizeMarket(CHARACTERISTICS_LOCALIZATION_MAP[tag]) elif tag == AIRCRAFT_CHARACTERISTIC.ROLL_MANEUVERABILITY: value = int(round(value)) unit = ms.localizeMarket(CHARACTERISTICS_LOCALIZATION_MAP[tag]) else: value = int(round(value)) return (value, unit, largerIsBetter)
def __call__(self, account, ob, **kw): ob = ob or getObject(kw['idTypeList']) adaptedOB = super(IQuestDynDescriptionAdapter, self).__call__(account, ob, **kw) for n in ('description', ): adaptedOB[n], _dynVar = adaptedOB[n] if adaptedOB[n].isupper(): adaptedOB[n] = localizeLobby(adaptedOB[n], **_dynVar) else: adaptedOB[n] = adaptedOB[n].format(**_dynVar) if 'PACK_DUNKIRK_1595Q' in adaptedOB['tokens']: adaptedOB['awards'].extend([{ 'type': 'plane', 'id': 1595 }, { 'type': 'camouflage', 'id': -1362167281 }, { 'type': 'crewmember', 'id': 4 }, { 'type': 'slots', 'value': 1 }]) if 'PACK_DUNKIRK_5593Q' in adaptedOB['tokens']: adaptedOB['awards'].extend([{ 'type': 'plane', 'id': 5593 }, { 'type': 'camouflage', 'id': -1513881259 }, { 'type': 'crewmember', 'id': 5 }, { 'type': 'slots', 'value': 1 }]) return adaptedOB
def __call__(self, account, ob, **kw): ob = ob or getObject(kw['idTypeList']) adaptedOB = super(IQuestDescriptionAdapter, self).__call__(account, ob, **kw) for n in ('name',): adaptedOB[n], _dynVar = adaptedOB[n] if adaptedOB[n].isupper(): adaptedOB[n] = localizeLobby(adaptedOB[n], **_dynVar) if adaptedOB[n].isupper(): adaptedOB[n] = localizeAchievements(adaptedOB[n]) else: adaptedOB[n] = adaptedOB[n].format(**_dynVar) if 'names' in adaptedOB['maps']: import db.DBLogic from Helpers.i18n import localizeMap locationMap = {} for locationData in db.DBLogic.g_instance.getArenaList(): locationMap[locationData.typeID] = locationData.typeName locationMap[-1] = 'map_undefined' names = (localizeMap(locationMap[mapID].upper()) for mapID in adaptedOB['maps']['names']) adaptedOB['maps']['names'] = list(names) return adaptedOB
def onSellPlaneResponse(self, resultID, aircraftID): """see AccountCommands.py for actual resultID format""" LOG_DEBUG('shop.sellPlaneResponse', resultID) if resultID == OPERATION_RETURN_CODE.SUCCESS: self.__lobbyCarouselHelper.removeCarouselAirplane(aircraftID) self.__lobbyCarouselHelper.inventory.syncAircraftsData( [aircraftID], partial(self.__sellPlaneResponse, resultID, aircraftID)) else: if SyncOperationKeeper.getFlagStatus(FLAGS_CODE.SELL_PLANE): self.__lobby.call_1('shop.sellPlaneResponse', resultID) SyncOperationKeeper.stop(FLAGS_CODE.SELL_PLANE) if resultID == OPERATION_RETURN_CODE.FAILURE_MAX_SOLD_PLANES_PER_DAY_REACHED: msgHeader = localizeMessages('SYSTEM_MESSAGE_ERROR_HEADER') planeName = localizeAirplane( db.DBLogic.g_instance.getAircraftName(aircraftID)) msgData = localizeLobby('LOBBY_ERROR_SELL_LIMIT', plane=planeName) self.__lobby.showMessageBox( msgHeader, msgData, localizeOptions('SAVE_SETTINGS_BUTTON'), None, None, None, False) return
def getData(self): """ @return: _HelpVO , list[_HelpKeyVO] """ self.__vo.battleDescription = localizeLobby( BATTLE_DESC_BY_TYPE_HUD_LOC_ID[self.__vo.intBattleType]) self.__vo.curProfileName = INPUT_SYSTEM_PROFILES[ InputMapping.g_instance.currentProfileType] keysControls = InputMapping.g_instance.getKeyControlsHelp( self.__DATA_KEY_CONTROLS.values()) keys = list() for key, value in self.__DATA_KEY_CONTROLS.items(): if value in keysControls: keysData = keysControls[value]['keys'] fireAxisData = keysControls[value]['isFireAxis'] axisSignData = keysControls[value]['axisSign'] if not keysData: LOG_WARNING('getData - keysControls is empty', key) else: index = 0 if InputMapping.g_instance.currentProfileType in [ INPUT_SYSTEM_STATE.MOUSE, INPUT_SYSTEM_STATE.KEYBOARD ] else len(keysData) - 1 keys.append( _HelpKeyVO(key, keysData[index], fireAxisData[index], axisSignData[index])) else: LOG_WARNING( 'getData - CMD ID not in keysControls (key=%s,CMD ID=%s)' % (key, str(value))) if InputMapping.g_instance.currentProfileType == INPUT_SYSTEM_STATE.MOUSE: keys.append(_HelpKeyVO('keyTurnsPlane', 'SETTINGS_MOUSE')) keys.append(_HelpKeyVO('keyExitChat', 'KEY_ESCAPE')) keys.append(_HelpKeyVO('keyIntoChat', 'KEY_RETURN')) keys.append(_HelpKeyVO('keyMessageToCommand', 'KEY_RETURN')) keys.append(_HelpKeyVO('keyMessageToAllPlayers', 'KEY_TAB')) return (self.__vo, keys)
def _updateBestRankData(self): avatarInfo = self._clientArena.avatarInfos[self._player.id] bestPlaneID = avatarInfo['bestRankPlaneID'] planeData = self._db.getAircraftData(bestPlaneID) planeType = planeData.airplane.planeType bestRankID = avatarInfo['planeTypeRank'][planeType] logger.debug('Best rank id = {0}, planeID = {1}'.format( bestRankID, bestPlaneID)) self._model.bestPlane = localizeAirplane(planeData.airplane.name) self._model.bestClass = localizeLobby( PREBATTLE_PLANE_TYPE_NAME[planeType]) self._model.bestPlaneType = planeType self._model.bestRank = bestRankID self._model.bestTasks.clean() for objective in self._player.coachManager.getPlaneTypeObjectives( planeType): self._model.bestTasks.append( id=objective.id, title=objective.model.client.name.locale, description=objective.model.client.description.locale, progress=objective.progressCurrent, maxProgress=objective.progressMax, value=objective.progressRawValue, requiredValue=objective.getNextProgressBound())
def __onNewAvatarsInfo(self, argStr): newAvatarsList = translateDictThroughAnother( wgPickle.loads(wgPickle.FromServerToClient, argStr), NEW_AVATARS_INFO_KEYS_INVERT_DICT, True) LOG_INFO('__onNewAvatarsInfo', self.__ownerID, [avatarData['avatarID'] for avatarData in newAvatarsList]) LOG_INFO('INFO extUpgrades', [(avatarData['avatarID'], avatarData['extUpgrades']) for avatarData in newAvatarsList]) for avatarData in newAvatarsList: avatarID = avatarData['avatarID'] airplaneInfo = avatarData['airplaneInfo'] currentOwner = None avatarData['planeTypeRank'] = dict(avatarData['planeTypeRank']) avatarPrevInfo = self.avatarInfos.get(avatarID, None) if not avatarPrevInfo: self.avatarInfos[avatarID] = avatarData else: if 'airplaneInfo' in avatarPrevInfo and avatarPrevInfo[ 'airplaneInfo']['globalID'] != airplaneInfo['globalID']: self.onBeforePlaneChanged(avatarID) currentOwner = self.__destroyControllers(avatarPrevInfo) self.avatarInfos[avatarID].update(avatarData) extUpgrades = dict(avatarData['extUpgrades']) pilotUpgradeId = extUpgrades.get(LOGICAL_PART.PILOT, 1) controllersData = self.createControllers( avatarID, airplaneInfo['globalID'], camouflage=airplaneInfo['camouflage'], decals=airplaneInfo['decals'], pilotUpgradeId=pilotUpgradeId) if currentOwner: currentOwner.registerControllers(controllersData) self.onAvatarChangedPlane(currentOwner.id) if currentOwner == BigWorld.player(): self.onRecreateAvatar() avatarInfo = self.avatarInfos[avatarID] if avatarInfo['isNPC']: if avatarInfo['NPCType'] == ACNPCTypes.Bomber: avatarInfo['playerName'] = localizeLobby( avatarInfo['playerName']) elif avatarInfo['NPCType'] == ACNPCTypes.Defender: avatarInfo['playerName'] = localizeHUD( avatarInfo['playerName']) else: avatarInfo['playerName'] = getBotName( avatarData['playerName'], getAirplaneConfiguration(airplaneInfo['globalID']).planeID) avatarInfo['maxHealth'] = avatarData['maxHealth'] avatarInfo['equipment'] = avatarData['equipment'] if avatarID == BigWorld.player().id: LOG_TRACE('ClientArena: VOIP.initialize()') wasInit = bool(VOIP.api()) VOIP.initialize(avatarInfo['databaseID']) if not wasInit: VOIP.api().onEnterArenaScreen() self.__sortAvatars() for ids in self.__sortedAvatarsIDs.values(): for i, avatarID in enumerate(ids): self.avatarInfos[avatarID]['airplaneInfo']['decals'][4] = i + 1 self.avatarInfos[avatarID][ 'modelManipulator'].surface.setDecalsByIds( self.avatarInfos[avatarID]['airplaneInfo'] ['camouflage'], self.avatarInfos[avatarID]['airplaneInfo']['decals']) teamMembers = dict() for avatarID, info in self.avatarInfos.iteritems(): if info['teamIndex'] == BigWorld.player().teamIndex: teamMembers[info['databaseID']] = avatarID VOIP.api().unsubscribeMemberStateObserversByType( consts.VOIP.MEMBER_STATUS_OBSERVER_TYPES.ARENA_HUD) VOIP.api().subscribeMemberStateObserver( consts.VOIP.MEMBER_STATUS_OBSERVER_TYPES.ARENA_HUD, teamMembers) self.__avatarsDataReceived = True self.onNewAvatarsInfo(newAvatarsList) return
def __call__(self, account, ob, **kw): if ob is None: return else: cmpUpgrade = None cmpUpgradeID = None weaponConfig = None slotID = None upgrade = None upgradeID = None plane = None _, typeList = splitIDTypeList(kw['idTypeList']) if isinstance(ob, list): for idx in xrange(0, len(typeList)): if typeList[idx] == 'plane': plane = ob[idx] elif typeList[idx] == 'upgrade': if upgradeID is None: upgrade = ob[idx] upgradeID = kw['idTypeList'][idx][0] else: cmpUpgrade = ob[idx] cmpUpgradeID = kw['idTypeList'][idx][0] elif typeList[idx] == 'weaponConfig': weaponConfig = ob[idx] elif typeList[idx] == 'weaponslot': slotID = ob[idx].id else: upgrade = ob adaptedOb = super(IModuleDescriptionAdapter, self).__call__(account, ob, **kw) if upgrade is not None: outName, specs, planesSet, shortDescription = getUpgradeSpecs( upgrade, plane.id if plane is not None else None, cmpUpgrade, slotID, weaponConfig) elif weaponConfig is None or slotID is None or cmpUpgradeID is None or cmpUpgrade.type not in UPGRADE_TYPE.WEAPON: return adaptedOb adaptedOb['configComparison'] = [] adaptedOb['requiredModules'] = [] dbInstance = db.DBLogic.g_instance cmpGlobalID = 0 if cmpUpgradeID is not None: import BWPersonality lch = BWPersonality.g_lobbyCarouselHelper lobbyAirplane = lch.getCarouselAirplane( plane.id) or getLobbyAirplane(plane.id) upgradeName = upgrade.name if upgrade is not None else None cmpName = cmpUpgrade.name if cmpUpgrade is not None else None if lobbyAirplane is not None: upgrades = [ x['name'] for x in lobbyAirplane.modules.getInstalled() ] weaponList = lobbyAirplane.weapons.getInstalledWeaponsList( ) if not upgrades: planeConfig = airplanesConfigurations[ airplanesDefaultConfigurations[plane.id]] upgrades = planeConfig.modules weaponList = planeConfig.weaponSlots cmpGlobalID, newUpgrades, newWeaponList = adjustPlaneConfig( lobbyAirplane.planeID, upgrades, weaponList, upgradeName, cmpName, slotID, weaponConfig) oldGlobalID = db.DBLogic.createGlobalID( lobbyAirplane.planeID, upgrades, weaponList) requiredModules = getDiffModules(oldGlobalID, cmpGlobalID, upgradeName, (slotID, weaponConfig)) for upgradeName in requiredModules: reqUpgrade = dbInstance.getUpgradeByName(upgradeName) name, _, _, _ = getUpgradeSpecs( reqUpgrade, plane.id if plane is not None else None, None, slotID, weaponConfig) adaptedOb['requiredModules'].append(name) cmpLobbyAirplane = lobbyAirplane.previewPreset( newUpgrades, [{ 'slot': x[0], 'configuration': x[1] } for x in newWeaponList]) comparisonSpecs = cmpLobbyAirplane.getGroupedDescriptionFields( True, lobbyAirplane, cmpGlobalID, False) for el in comparisonSpecs: for i, j in el.__dict__.iteritems(): if i != 'main': continue specObj = None if j is not None: specObj = j.__dict__ if specObj and specObj['comparisonValue']: adaptedOb['configComparison'].append(specObj) if not adaptedOb['configComparison']: adaptedOb['configComparison'] = None if upgrade is not None: gunData = dbInstance.getGunData(upgrade.name) if gunData is None: moduleType = localizeComponents( MODULE_GROUP_NAME.get( getattr(upgrade, 'moduleGroup', None), MODULE_GROUP_NAME[upgrade.type])) else: profileName = gunData.gunProfileName.upper() if profileName == 'MACHINEGUN_SMALL': profileName = 'MACHINE_GUN_LOW' else: profileName = profileName.replace( 'MACHINEGUN_SMALL', 'MACHINE_GUN') profileName = profileName.replace('CANNON_HIGH_VULCAN', 'CANNON_HIGH') moduleType = localizeLobby( '{0}_DESCRIPTION'.format(profileName)) adaptedOb['name'] = '{0} {1}'.format(moduleType, outName) adaptedOb['type'] = upgrade.type adaptedOb['description'] = shortDescription if hasattr(upgrade, 'level'): adaptedOb['level'] = upgrade.level else: adaptedOb['level'] = 0 adaptedOb['specsList'] = [spec.__dict__ for spec in specs] adaptedOb['airplanesList'] = map( lambda x: localizeAirplane(dbInstance.getAircraftName(x)), filter(lambda x: x in planesSet, dbInstance.getShopPlaneList())) adaptedOb['suitablePlaneIDs'] = list(planesSet) adaptedOb['icoPath'] = get48ModuleIconPath( getattr(upgrade, 'iconPath', ICON_MODULE_DEFAULT_PATH)) isArmoredTargetEffective = EFFECTIVE_AGAINST_ARMORED_OBJECTS.NORMAL if upgrade.type in [UPGRADE_TYPE.BOMB, UPGRADE_TYPE.ROCKET]: isArmoredTargetEffective = EFFECTIVE_AGAINST_ARMORED_OBJECTS.IS_EFFECTIVE if upgrade.type == UPGRADE_TYPE.GUN: isArmoredTargetEffective = EFFECTIVE_AGAINST_ARMORED_OBJECTS.NOT_EFFECTIVE if gunData.caliber < MIN_CALIBER else EFFECTIVE_AGAINST_ARMORED_OBJECTS.LOW_EFFECTIVE adaptedOb['armoredTargetEffective'] = isArmoredTargetEffective adaptedOb['buyAvailable'] = getattr(upgrade, 'buyAvailable', True) if upgrade.type == UPGRADE_TYPE.GUN: compData = gunData elif upgrade.type in UPGRADE_TYPE.SHELL: compData = dbInstance.getComponentByName( UPGRADE_TYPE_TO_COMPONENT_TYPE[upgrade.type], upgrade.name) elif upgrade.type == UPGRADE_TYPE.TURRET: turret = dbInstance.getTurretData(upgrade.name) compData = dbInstance.getGunData(turret.hangarSimilarGun) else: compData = None if compData is not None and hasattr(compData, 'tag'): adaptedOb['propsList'] = [[localizeLobby(x.name), x.type] for x in compData.tag] else: adaptedOb['propsList'] = [] adaptedOb['cmpGlobalID'] = cmpGlobalID else: adaptedOb['name'] = '' adaptedOb['type'] = -1 adaptedOb['description'] = '' adaptedOb['level'] = 0 adaptedOb['specsList'] = [] adaptedOb['airplanesList'] = [] adaptedOb['suitablePlaneIDs'] = [] adaptedOb['icoPath'] = '' adaptedOb['armoredTargetEffective'] = False adaptedOb['buyAvailable'] = False adaptedOb['cmpGlobalID'] = 0 return adaptedOb
def setMessage(self, message): self.call_1('setWaitingMessage', localizeLobby(message))
def __call__(self, account, ob, **kw): from Helpers.i18n import localizeLobby adaptedOB = super(ILocalizationLanguageAdapter, self).__call__(account, ob, **kw) adaptedOB['lang'] = localizeLobby('LOCALIZATION_LANGUAGE') return adaptedOB
def deleteCache(): memCacheUtility.deleteCache() cacheUtility.deleteCache() init() setToCache(EMPTY_IDTYPELIST, 'ILocalizationLanguage', dict(lang=localizeLobby('LOCALIZATION_LANGUAGE')))
def __getUpgradeGroupName(self, aircraftID, upgrade): if upgrade.type in UPGRADE_TYPE.MODULES: return localizeComponents(UPGRADE_TYPE.DESCRIPTION_MAP[upgrade.type]) if upgrade.type in UPGRADE_TYPE.WEAPON: return localizeLobby('AMMO_SLOT_' + self.__db.getSlotsWeaponUpgrade(aircraftID, upgrade)[0].name)
def localizeMarket(self, id): return localizeLobby( self.__LOC_MARKET_TABLE[id][self.__measurementSystem])
def load(self, src, pList, settings, forceLoad): src.measurementSystem.data = [ localizeOptions(''.join(['SETTINGS_COMMON_MEASUREMENT_', ms])) for ms in MEASUREMENT_SYSTEMS ] src.measurementSystem.index = settings.getGameUI()['measurementSystem'] src.heightMode.index = settings.getGameUI()['heightMode'] src.heightMode.data = [localizeOptions('battleui/schema_height_v1'), localizeOptions('battleui/schema_height_v2'), localizeOptions('SETTINGS_ALTIMETER_DROPDOWN_MENU_VARIANT_BOTH')] for fKey, sKey in GAME_SETTINGS_MAIN_UI_DATA.iteritems(): setattr(src, fKey, settings.getGameUI()[sKey]) for fKey, sKey in GAME_SETTINGS_MAIN_DATA.iteritems(): setattr(src, fKey, getattr(settings, sKey)) for flashKey, SettingsKey in XMPP_CHAT_KEYS.iteritems(): setattr(src, flashKey, settings.getXmppChatSettings()[SettingsKey]) for key in Settings.REPLAY_KEYS.iterkeys(): setattr(src, key, settings.getReplaySettings()[key]) src.pathSaveBattleReplays = settings.getReplaysDirectory() src.pathSaveScreenshots = settings.getScreenShotDirectory() import BWPersonality import _warAction warAction = BWPersonality.gameParams.get('warAction', {}) warActionEnabled = warAction.get('enabled', False) warActionState = warAction.get('state', WAR_STATE.UNDEFINED) src.radarSettings.radarState.data = [localizeOptions('SETTINGS_MARKERS_ZOOM_CLOSE'), localizeOptions('SETTINGS_MARKERS_ZOOM_MEDIUM'), localizeOptions('SETTINGS_MARKERS_ZOOM_FAR')] src.radarSettings.radarState.index = settings.getGameUI()['radarState'] src.radarSettings.radarSize.data = [localizeOptions('SETTINGS_MARKERS_SMALL_SIZE'), localizeOptions('SETTINGS_MARKERS_MEDIUM_SIZE'), localizeOptions('SETTINGS_MARKERS_BIG_SIZE')] src.radarSettings.radarSize.index = settings.getGameUI()['radarSize'] src.radarSettings.radarLockRotation.data = [localizeOptions('SETTINGS_ROTATE_RADAR-MINIMAP'), localizeOptions('SETTINGS_CHECKBOX_ROTATE_PLAYER_MINIMAP_FIXED')] src.radarSettings.radarLockRotation.index = settings.getGameUI()['radarLockRotation'] src.radarSettings.showDefendersActive = settings.getGameUI()['showDefendersActive'] src.attitudeIndicatorSettings.attitudeMode.data = [localizeOptions('SETTINGS_CHECKBOX_SHOW_ROLL_PLANE'), localizeOptions('SETTINGS_CHECKBOX_SHOW_ROLL_HORIZON')] src.attitudeIndicatorSettings.attitudeMode.index = settings.getGameUI()['attitudeMode'] if warActionEnabled and warActionState not in [WAR_STATE.UNDEFINED, WAR_STATE.OFF, WAR_STATE.END]: return else: count = 0 isEnableLobbyUI = gui.WindowsManager.g_windowsManager.getLobbyUI() is not None if isEnableLobbyUI: ad = IHangarSpacesAdapter('ICurrentHangarSpace') ob = ad(None, None) for i, spaceID in enumerate(ob['spaces']): if DB.g_instance.userHangarSpaces.get(spaceID, None) is not None: count += 1 src.lobbySettings.isEnabled = (BWPersonality.g_initPlayerInfo.useGUIType == GUI_TYPES.PREMIUM or count > 1) and isEnableLobbyUI if src.lobbySettings.isEnabled: spaceData = DB.g_instance.userHangarSpaces.get(BWPersonality.g_settings.hangarSpaceSettings['spaceID'], None) src.lobbySettings.isEnabled = not spaceData.get('isModal', False) if src.lobbySettings.isEnabled: currentSpace = settings.getHangarSpaceSettings(BWPersonality.g_initPlayerInfo.databaseID) index = 0 for spaceID in ob['spaces']: spaceData = DB.g_instance.userHangarSpaces.get(spaceID, None) skip = False for ui in _warAction.WarAction.uiConfig.hangar: skip = ui.name == spaceData['spaceID'] if skip: break if skip: continue if spaceData is not None: kv = KeyValue() kv.key = spaceID kv.label = localizeLobby(spaceData['loc']) src.lobbySettings.previewImg.append(spaceData['img']) src.lobbySettings.hangar.data.append(kv) if spaceID == currentSpace['spaceID']: src.lobbySettings.hangar.index = index index += 1 self._isLoaded = True return