Esempio n. 1
0
 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)
Esempio n. 2
0
    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 ''
Esempio n. 3
0
    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
Esempio n. 4
0
 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
         }
Esempio n. 5
0
 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(
                     '>', '&gt;').replace('<', '&lt;')
             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('>',
                                                         '&gt;').replace(
                                                             '<', '&lt;')
             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
Esempio n. 6
0
 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
Esempio n. 7
0
 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
Esempio n. 8
0
 def localizeHUD(self, id):
     return localizeHUD(self.__LOC_HUD_TABLE[id][self.__measurementSystem])
Esempio n. 9
0
    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