def spamNotification(self, time): ownerID = BigWorld.player().id timeValue = '%.2f' % time self.__showTextMessage( ownerID, MESSAGE_TYPE.BATTLE_NEUTRAL_WARNING, 0, -1, localizeHUD('QUICK_MESSAGE_ERROR_TIMER').format( time_sec=timeValue), False)
def __getSectorName(self, targetID): self._arenaTypeData = self._db.getArenaData( BigWorld.player().arenaType) for sectorData in self._arenaTypeData.sectors.sectors.values(): if sectorData.ident == targetID: return localizeHUD(sectorData.hudSettings.localizationID) return ''
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 _getLocal(self, typeID, notificationID, targetID): if notificationID == -1: loc = self.FAST_LOC_COMMAND_ERROR.get(typeID, '') return localizeHUD(loc) else: commandMap = self.FAST_LOC_COMMAND_MAP.get(typeID, {}) loc = commandMap.get(notificationID, '') if targetID != -1: if typeID == CommandTypes.OFFENSE_DEFENSE: objectName = self._clientArena.getObjectName(int(targetID)) message = localizeHUD(loc).format(player_name=objectName) else: sectorName = self.__getSectorName(targetID) message = localizeHUD(loc).format(sector=sectorName) else: message = localizeHUD(loc) return '$FC:%(fastCommandType)s$%(message)s' % { 'fastCommandType': loc, 'message': message }
def __showTextMessage(self, senderID, msgType, messageStringID, targetID, message, isHistory, leaderType=-1, isHTML=False): messageT = ChatMessageVO() messageT.msgType = msgType messageT.senderID = senderID messageT.message = message messageT.isHistory = isHistory messageT.leaderType = leaderType owner = BigWorld.player() clientArena = GameEnvironment.getClientArena() if owner and clientArena: avatarInfo = clientArena.getAvatarInfo(senderID) if avatarInfo: messageT.authorType = avatarInfo['settings'].airplane.planeType messageT.authorName = avatarInfo['playerName'] messageT.vechicleName = localizeAirplane( avatarInfo['settings'].airplane.name) if avatarInfo['classID'] == EntitySupportedClasses.AvatarBot: messageT.authorName = messageT.authorName.replace( '>', '>').replace('<', '<') messageT.authorClanAbbrev = avatarInfo['clanAbbrev'] if avatarInfo['teamIndex'] == BigWorld.player().teamIndex: squadType = SQUAD_TYPES().getSquadType( SQUAD_TYPES().getSquadIDbyAvatarID(senderID), senderID) if squadType == SQUAD_TYPES.OWN: messageT.teamType = TEAM_TYPE.BATTLE_SQUAD else: messageT.teamType = TEAM_TYPE.BATTLE_ALLY else: messageT.teamType = TEAM_TYPE.BATTLE_OPPONENT else: LOG_DEBUG('showTextMessage - avatarInfo is None', senderID, msgType, messageStringID, targetID, message, isHistory, leaderType) messageT.isOwner = messageT.senderID == owner.id if messageT.isOwner: messageT.authorName = localizeHUD('HUD_YOU_MESSAGE') messageT.authorClanAbbrev = '' if messageT.message and not isHTML: messageT.message = messageT.message.replace('>', '>').replace( '<', '<') if messageT.senderID == self.__lastMessage.senderID and messageT.msgType == self.__lastMessage.msgType and messageT.message == self.__lastMessage.message and messageT.time - self.__lastMessage.time < MESSAGE_SAME_COOLDOWN: return self.__addChatMessage(messageT) self.__lastMessage = messageT
def getLocalizedMessage(self, messageStringID, targetID=0): """ @param : int messageStringID, int targetID @return: localization text """ if messageStringID not in self.__localize: return 'ERROR LOCALIZE MESSAGE' elif targetID != 0 and messageStringID in [ ChatMessagesStringID.JOIN_ME, ChatMessagesStringID.ENEMY_MY_AIM ]: objectType = GameEnvironment.getClientArena().getTeamObjectType( targetID) if objectType is not None and objectType in OBJECTS_INFO: objectName = localizeHUD(OBJECTS_INFO[objectType]['LOC_ID']) else: objectName = GameEnvironment.getClientArena().getObjectName( targetID) return localizeHUD( self.__localize[messageStringID]).format(player=objectName) else: return localizeHUD(self.__localize[messageStringID]) return
def onReceiveMarkerMessage(self, senderID, posX, posZ, messageStringID, isHistory): if self.__arenaBounds is None: arena = GameEnvironment.getClientArena() self.__arenaBounds = self._makeBoundsObject(arena.getArenaBounds()) percentX = 100 * (posX - self.__arenaBounds.get('left')) / ( self.__arenaBounds.get('right') - self.__arenaBounds.get('left')) percentY = 100 * ( 1 - (posZ - self.__arenaBounds.get('top')) / (self.__arenaBounds.get('bottom') - self.__arenaBounds.get('top'))) zoneSymbol = self.__zoneSymbols[self.getZoneIndex(percentY)] zoneNumber = 1 + self.getZoneIndex(percentX) message = localizeHUD( self.MARKER_MESSAGES_LOC_IDS[messageStringID]).format( grid_square=zoneSymbol + str(zoneNumber)) messageType = MESSAGE_TYPE.BATTLE_ALLY if senderID != BigWorld.player().id: squadType = SQUAD_TYPES().getSquadType( SQUAD_TYPES().getSquadIDbyAvatarID(senderID), senderID) if squadType == SQUAD_TYPES.OWN: messageType = MESSAGE_TYPE.BATTLE_SQUAD self.__showTextMessage(senderID, messageType, 0, 0, message, isHistory) return
def localizeHUD(self, id): return localizeHUD(self.__LOC_HUD_TABLE[id][self.__measurementSystem])
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