def getData(self): arena = getattr(BigWorld.player(), 'arena', None) if arena: self.as_setMapNameS(arena.arenaType.name) self.as_setMapBGS(BattleLoading.MAP_BG_SOURCE % arena.arenaType.geometryName) descExtra = getPrebattleFullDescription(arena.extraData or {}) arenaSubType = getArenaSubTypeName(BigWorld.player().arenaTypeID) if descExtra: self.as_setBattleTypeNameS(descExtra) self.as_setBattleTypeFrameNumS(arena.guiType + 1) self.__needArenaTypeUpdate = False elif arena.guiType == constants.ARENA_GUI_TYPE.RANDOM: self.as_setBattleTypeNameS('#arenas:type/%s/name' % arenaSubType) if arenaSubType != 'assault': self.as_setBattleTypeFrameNameS(arenaSubType) self.__needArenaTypeUpdate = False else: self.__needArenaTypeUpdate = False self.as_setBattleTypeNameS('#menu:loading/battleTypes/%d' % arena.guiType) self.as_setBattleTypeFrameNumS(arena.guiType + 1) if arena.guiType == constants.ARENA_GUI_TYPE.TRAINING and self.__logArenaUniID == False: self.__logArenaUniID = True from time import strftime, localtime from debug_utils import LOG_NOTE LOG_NOTE('arenaUniqueID: %d | timestamp: %s' % (arena.arenaUniqueID, strftime('%d.%m.%Y %H:%M:%S', localtime()))) self.as_setTipS(tips.getTip()) self.__updatePlayers() return
def __addArenaExtraData(self, arenaDP): arena = getClientArena() if arena: extraData = arena.extraData or {} descExtra = getPrebattleFullDescription(extraData) arenaTypeID = getArenaTypeID() arenaSubType = getArenaSubTypeName(arenaTypeID) team = arenaDP.getNumberOfTeam() enemy = arenaDP.getNumberOfTeam(True) hasBase = isBaseExists(arenaTypeID, team) opponents = extraData.get('opponents', {}) team1 = opponents.get(str(team), {}).get('name', '#menu:loading/team1') team2 = opponents.get(str(enemy), {}).get('name', '#menu:loading/team2') self.as_setTeamsS(team1, team2) if arena.guiType == constants.ARENA_GUI_TYPE.EVENT_BATTLES: self.as_setWinTextS(i18n.makeString('#arenas:type/fallout/description')) else: self.as_setWinTextS(getBattleSubTypeWinText(arenaTypeID, 1 if hasBase else 2)) if descExtra: self.as_setBattleTypeNameS(descExtra) self.as_setBattleTypeFrameNumS(arena.guiType + 1) elif arena.guiType in [constants.ARENA_GUI_TYPE.RANDOM, constants.ARENA_GUI_TYPE.TRAINING]: self.as_setBattleTypeNameS('#arenas:type/%s/name' % arenaSubType) self.as_setBattleTypeFrameNameS(getNecessaryArenaFrameName(arenaSubType, hasBase)) if arena.guiType == constants.ARENA_GUI_TYPE.TRAINING and self.__logArenaUniID == False: self.__logArenaUniID = True from time import strftime, localtime from debug_utils import LOG_NOTE LOG_NOTE('arenaUniqueID: %d | timestamp: %s' % (arena.arenaUniqueID, strftime('%d.%m.%Y %H:%M:%S', localtime()))) else: self.as_setBattleTypeNameS('#menu:loading/battleTypes/%d' % arena.guiType) if arena.guiType in constants.ARENA_GUI_TYPE_LABEL.LABELS: self.as_setBattleTypeFrameNameS(constants.ARENA_GUI_TYPE_LABEL.LABELS[arena.guiType]) else: self.as_setBattleTypeFrameNumS(arena.guiType + 1)
def getText(self, invite): startTimeStr = '{} {}'.format( backport.text(R.strings.prebattle.title.battleSession.startTime()), getPrebattleStartTimeString(invite.startTime)) return u'{}, {}'.format( unicode(getPrebattleFullDescription(invite.description), 'utf-8'), unicode(startTimeStr, 'utf-8'))
def __populateData(self, isMutlipleTeams = False): arena = avatar_getter.getArena() arenaDP = g_sessionProvider.getArenaDP() arenaData = ['', 0, '', '', ''] if arena: arenaData = [toUpper(arena.arenaType.name)] descExtra = getPrebattleFullDescription(arena.extraData or {}) arenaSubType = getArenaSubTypeName(BigWorld.player().arenaTypeID) if descExtra: arenaData.extend([arena.guiType + 1, descExtra]) elif arena.guiType in [constants.ARENA_GUI_TYPE.RANDOM, constants.ARENA_GUI_TYPE.TRAINING]: arenaTypeName = '#arenas:type/%s/name' % arenaSubType arenaData.extend([getNecessaryArenaFrameName(arenaSubType, isBaseExists(BigWorld.player().arenaTypeID, BigWorld.player().team)), arenaTypeName]) elif arena.guiType in constants.ARENA_GUI_TYPE.RANGE: arenaData.append(constants.ARENA_GUI_TYPE_LABEL.LABELS[arena.guiType]) if arena.guiType == constants.ARENA_GUI_TYPE.EVENT_BATTLES and hasResourcePoints(): arenaData.append(i18n.makeString(MENU.LOADING_BATTLETYPES_RESOURCEPOINTS_UPPER)) elif arena.guiType == constants.ARENA_GUI_TYPE.EVENT_BATTLES and isMutlipleTeams: arenaData.append(i18n.makeString(MENU.LOADING_BATTLETYPES_MIX_UPPER)) else: arenaData.append('#menu:loading/battleTypes/%d' % arena.guiType) else: arenaData.extend([arena.guiType + 1, '#menu:loading/battleTypes/%d' % arena.guiType]) myTeamNumber = arenaDP.getNumberOfTeam() getTeamName = g_sessionProvider.getCtx().getTeamName arenaData.extend([getTeamName(myTeamNumber), getTeamName(arenaDP.getNumberOfTeam(enemy=True))]) teamHasBase = 1 if isBaseExists(BigWorld.player().arenaTypeID, myTeamNumber) else 2 if not isEventBattle(): typeEvent = 'normal' winText = getBattleSubTypeWinText(BigWorld.player().arenaTypeID, teamHasBase) else: typeEvent = 'fallout' if getIsMultiteam(): winText = i18n.makeString(ARENAS.TYPE_FALLOUTMUTLITEAM_DESCRIPTION) else: winText = i18n.makeString('#arenas:type/%s/description' % arenaSubType) arenaData.append(winText) arenaData.append(typeEvent) vehInfo = arenaDP.getVehicleInfo(arenaDP.getPlayerVehicleID()) pqTipData = [None] * 3 pQuests = vehInfo.player.getPotapovQuests() serverSettings = g_lobbyContext.getServerSettings() isPQEnabled = serverSettings is not None and serverSettings.isPotapovQuestEnabled() if isPQEnabled and (arena.guiType == constants.ARENA_GUI_TYPE.RANDOM or arena.guiType == constants.ARENA_GUI_TYPE.TRAINING and constants.IS_DEVELOPMENT): if len(pQuests): quest = pQuests[0] pqTipData = [quest.getUserName(), quest.getUserMainCondition(), quest.getUserAddCondition()] else: pqTipData = [i18n.makeString('#ingame_gui:potapovQuests/tip'), None, None] arenaData.extend(pqTipData) arenaData.extend([getArenaIcon(_SMALL_MAP_SOURCE)]) self.__callEx('arenaData', arenaData) return
def __addNotification(self, invite): formatted = g_settings.htmlTemplates.format('inviteToSpecialBattle', ctx={'icon': self.NOTIFICATION_ICON.get(invite.prbType, self.NOTIFICATION_ICON_DEFAULT), 'text': u'%s, %s' % (unicode(getPrebattleFullDescription(invite.description), 'utf-8'), unicode(getBattleSessionStartTimeString(invite.startTime), 'utf-8'))}) self.__notifications.append(formatted) if self._activated: if self._view: self._view.as_addMessageS(formatted) else: events_dispatcher.notifyCarousel(self._channel.getClientID())
def __populateData(self, isMutlipleTeams = False): arena = avatar_getter.getArena() arenaDP = g_sessionProvider.getArenaDP() arenaData = ['', 0, '', '', ''] if arena: arenaData = [toUpper(arena.arenaType.name)] descExtra = getPrebattleFullDescription(arena.extraData or {}) arenaSubType = getArenaSubTypeName(BigWorld.player().arenaTypeID) if descExtra: arenaData.extend([arena.guiType + 1, descExtra]) elif arena.guiType in [constants.ARENA_GUI_TYPE.RANDOM, constants.ARENA_GUI_TYPE.TRAINING]: arenaTypeName = '#arenas:type/%s/name' % arenaSubType arenaData.extend([getNecessaryArenaFrameName(arenaSubType, isBaseExists(BigWorld.player().arenaTypeID, BigWorld.player().team)), arenaTypeName]) elif arena.guiType in constants.ARENA_GUI_TYPE.RANGE: arenaData.append(constants.ARENA_GUI_TYPE_LABEL.LABELS[arena.guiType]) if arena.guiType == constants.ARENA_GUI_TYPE.EVENT_BATTLES and hasResourcePoints(): arenaData.append(i18n.makeString(MENU.LOADING_BATTLETYPES_RESOURCEPOINTS_UPPER)) elif arena.guiType == constants.ARENA_GUI_TYPE.EVENT_BATTLES and isMutlipleTeams: arenaData.append(i18n.makeString(MENU.LOADING_BATTLETYPES_MIX_UPPER)) else: arenaData.append('#menu:loading/battleTypes/%d' % arena.guiType) else: arenaData.extend([arena.guiType + 1, '#menu:loading/battleTypes/%d' % arena.guiType]) myTeamNumber = arenaDP.getNumberOfTeam() getTeamName = g_sessionProvider.getCtx().getTeamName arenaData.extend([getTeamName(myTeamNumber), getTeamName(arenaDP.getNumberOfTeam(enemy=True))]) teamHasBase = 1 if isBaseExists(BigWorld.player().arenaTypeID, myTeamNumber) else 2 if not isEventBattle(): typeEvent = 'normal' winText = getBattleSubTypeWinText(BigWorld.player().arenaTypeID, teamHasBase) else: typeEvent = 'fallout' if getIsMultiteam(): winText = i18n.makeString(ARENAS.TYPE_FALLOUTMUTLITEAM_DESCRIPTION) else: winText = i18n.makeString('#arenas:type/%s/description' % arenaSubType) arenaData.append(winText) arenaData.append(typeEvent) vehInfo = arenaDP.getVehicleInfo(arenaDP.getPlayerVehicleID()) pqTipData = [None] * 3 pQuests = vehInfo.player.getPotapovQuests() serverSettings = g_lobbyContext.getServerSettings() isPQEnabled = serverSettings is not None and serverSettings.isPotapovQuestEnabled() if isPQEnabled and (arena.guiType == constants.ARENA_GUI_TYPE.RANDOM or arena.guiType == constants.ARENA_GUI_TYPE.TRAINING and constants.IS_DEVELOPMENT): if len(pQuests): quest = pQuests[0] pqTipData = [quest.getUserName(), quest.getUserMainCondition(), quest.getUserAddCondition()] else: pqTipData = [i18n.makeString('#ingame_gui:potapovQuests/tip'), None, None] arenaData.extend(pqTipData) arenaData.extend([getArenaIcon(_SMALL_MAP_SOURCE)]) self.__callEx('arenaData', arenaData)
def __onBSListReceived(self, sessions): result = [] for bs in sessions: result.append({'prbID': bs.prbID, 'prbType': bs.prbType, 'descr': formatters.getPrebattleFullDescription(bs.description), 'opponents': formatters.getPrebattleOpponentsString(bs.description), 'startTime': formatters.getBattleSessionStartTimeString(bs.startTime)}) self.as_refreshListS(result)
def _addArenaExtraData(self, arenaDP): arena = getClientArena() if arena: arenaType = arena.arenaType extraData = arena.extraData or {} descExtra = getPrebattleFullDescription(extraData) arenaTypeID = getArenaTypeID() arenaSubType = getArenaSubTypeName(arenaTypeID) team = arenaDP.getNumberOfTeam() enemy = arenaDP.getNumberOfTeam(True) hasBase = isBaseExists(arenaTypeID, team) allyTeamName, enemyTeamName = self._battleCtx.getTeamName( team), self._battleCtx.getTeamName(enemy) if arena.guiType == constants.ARENA_GUI_TYPE.EVENT_BATTLES: winText = i18n.makeString('#arenas:type/%s/description' % arenaSubType) else: winText = getBattleSubTypeWinText(arenaTypeID, 1 if hasBase else 2) if descExtra: battleTypeLocaleStr = descExtra if arena.guiType != constants.ARENA_GUI_TYPE.UNKNOWN and arena.guiType in constants.ARENA_GUI_TYPE_LABEL.LABELS: battleTypeFrameLabel = constants.ARENA_GUI_TYPE_LABEL.LABELS[ arena.guiType] else: battleTypeFrameLabel = 'neutral' elif arena.guiType in [ constants.ARENA_GUI_TYPE.RANDOM, constants.ARENA_GUI_TYPE.TRAINING ]: battleTypeLocaleStr = '#arenas:type/%s/name' % arenaSubType battleTypeFrameLabel = getNecessaryArenaFrameName( arenaSubType, hasBase) elif arena.guiType == constants.ARENA_GUI_TYPE.EVENT_BATTLES and hasResourcePoints( ): battleTypeFrameLabel = 'resourcePoints' battleTypeLocaleStr = MENU.LOADING_BATTLETYPES_RESOURCEPOINTS else: battleTypeLocaleStr = '#menu:loading/battleTypes/%d' % arena.guiType if arena.guiType != constants.ARENA_GUI_TYPE.UNKNOWN and arena.guiType in constants.ARENA_GUI_TYPE_LABEL.LABELS: battleTypeFrameLabel = constants.ARENA_GUI_TYPE_LABEL.LABELS[ arena.guiType] else: battleTypeFrameLabel = 'neutral' arenaInfoData = { 'mapName': arenaType.name, 'winText': winText, 'battleTypeLocaleStr': battleTypeLocaleStr, 'battleTypeFrameLabel': battleTypeFrameLabel, 'allyTeamName': allyTeamName, 'enemyTeamName': enemyTeamName } self._setArenaInfo(arenaInfoData)
def createDescription(arenaVisitor): guiVisitor = arenaVisitor.gui if guiVisitor.isRandomBattle() or guiVisitor.isTrainingBattle(): description = ArenaWithBasesDescription(arenaVisitor) elif guiVisitor.isTutorialBattle(): description = TutorialBattleDescription(arenaVisitor) elif guiVisitor.isFalloutBattle(): description = FalloutBattlesDescription(arenaVisitor) elif guiVisitor.hasLabel(): description = ArenaWithLabelDescription(arenaVisitor) else: description = DefaultArenaGuiDescription(arenaVisitor) l10nDescription = getPrebattleFullDescription(arenaVisitor.getArenaExtraData() or {}) if l10nDescription: description = ArenaWithL10nDescription(description, l10nDescription) return description
def createDescription(arena): guiType = arena.guiType if guiType in (ARENA_GUI_TYPE.RANDOM, ARENA_GUI_TYPE.TRAINING): description = ArenaWithBasesDescription(arena) elif guiType == ARENA_GUI_TYPE.TUTORIAL: description = TutorialBattleDescription(arena) elif guiType in ARENA_GUI_TYPE.FALLOUT_RANGE: description = FalloutBattlesDescription(arena) elif guiType != ARENA_GUI_TYPE.UNKNOWN and guiType in ARENA_GUI_TYPE_LABEL.LABELS: description = ArenaWithLabelDescription(arena) else: description = DefaultArenaGuiDescription(arena) l10nDescription = getPrebattleFullDescription(arena.extraData or {}) if l10nDescription: description = ArenaWithL10nDescription(description, l10nDescription) return description
def createDescription(arenaVisitor): guiVisitor = arenaVisitor.gui if guiVisitor.isRandomBattle() or guiVisitor.isTrainingBattle(): description = ArenaWithBasesDescription(arenaVisitor) elif guiVisitor.isTutorialBattle(): description = TutorialBattleDescription(arenaVisitor) elif guiVisitor.isFalloutBattle(): description = FalloutBattlesDescription(arenaVisitor) elif guiVisitor.hasLabel(): description = ArenaWithLabelDescription(arenaVisitor) else: description = DefaultArenaGuiDescription(arenaVisitor) l10nDescription = getPrebattleFullDescription( arenaVisitor.getArenaExtraData() or {}) if l10nDescription: description = ArenaWithL10nDescription(description, l10nDescription) return description
def __populateData(self, isMutlipleTeams = False): arena = avatar_getter.getArena() arenaDP = g_sessionProvider.getArenaDP() arenaData = ['', 0, '', '', ''] if arena: arenaData = [toUpper(arena.arenaType.name)] descExtra = getPrebattleFullDescription(arena.extraData or {}) arenaSubType = getArenaSubTypeName(BigWorld.player().arenaTypeID) if descExtra: arenaData.extend([arena.guiType + 1, descExtra]) elif arena.guiType in [constants.ARENA_GUI_TYPE.RANDOM, constants.ARENA_GUI_TYPE.TRAINING]: arenaTypeName = '#arenas:type/%s/name' % arenaSubType arenaData.extend([getNecessaryArenaFrameName(arenaSubType, isBaseExists(BigWorld.player().arenaTypeID, BigWorld.player().team)), arenaTypeName]) elif arena.guiType in constants.ARENA_GUI_TYPE.RANGE: arenaData.append(constants.ARENA_GUI_TYPE_LABEL.LABELS[arena.guiType]) if arena.guiType == constants.ARENA_GUI_TYPE.EVENT_BATTLES and hasResourcePoints(): arenaData.append(i18n.makeString(MENU.LOADING_BATTLETYPES_RESOURCEPOINTS_UPPER)) elif arena.guiType == constants.ARENA_GUI_TYPE.EVENT_BATTLES and isMutlipleTeams: arenaData.append(i18n.makeString(MENU.LOADING_BATTLETYPES_MIX_UPPER)) else: arenaData.append('#menu:loading/battleTypes/%d' % arena.guiType) else: arenaData.extend([arena.guiType + 1, '#menu:loading/battleTypes/%d' % arena.guiType]) myTeamNumber = arenaDP.getNumberOfTeam() getTeamName = g_sessionProvider.getCtx().getTeamName arenaData.extend([getTeamName(myTeamNumber), getTeamName(arenaDP.getNumberOfTeam(enemy=True))]) teamHasBase = 1 if isBaseExists(BigWorld.player().arenaTypeID, myTeamNumber) else 2 if not isEventBattle(): typeEvent = 'normal' winText = getBattleSubTypeWinText(BigWorld.player().arenaTypeID, teamHasBase) else: typeEvent = 'fallout' if getIsMultiteam(): winText = i18n.makeString(ARENAS.TYPE_FALLOUTMUTLITEAM_DESCRIPTION) else: winText = i18n.makeString('#arenas:type/%s/description' % arenaSubType) arenaData.append(winText) arenaData.append(typeEvent) arenaData.extend(_getQuestsTipData(arena, arenaDP)) arenaData.extend([getArenaIcon(_SMALL_MAP_SOURCE)]) self.__callEx('arenaData', arenaData)
def __onBSListReceived(self, sessions): result = [] clanDBID = self.__webCtrl.getClanDbID() for bs in sessions: detachment, vehicleLvl, _ = formatters.getBattleSessionDetachment(bs.description, clanDBID) if bs.prbType == PREBATTLE_TYPE.CLAN: startTime = self.__getClanBattleStartTime(bs) else: startTime = formatters.getBattleSessionStartTimeString(bs.startTime) result.append({'prbID': bs.prbID, 'prbType': bs.prbType, 'descr': formatters.getPrebattleFullDescription(bs.description), 'opponents': formatters.getPrebattleOpponentsString(bs.description), 'startTime': startTime, 'unitName': detachment, 'vehicleLevel': vehicleLvl}) self.as_refreshListS(result)
def __addNotification(self, invite): formatted = g_settings.htmlTemplates.format( 'inviteToSpecialBattle', ctx={ 'icon': self.NOTIFICATION_ICON.get(invite.prbType, self.NOTIFICATION_ICON_DEFAULT), 'text': u'%s, %s' % (unicode(getPrebattleFullDescription(invite.description), 'utf-8'), unicode(getBattleSessionStartTimeString(invite.startTime), 'utf-8')) }) self.__notifications.append(formatted) if self._activated: if self._view: self._view.as_addMessageS(formatted) else: events_dispatcher.notifyCarousel(self._channel.getClientID())
def _addArenaExtraData(self, arenaDP): arena = getClientArena() if arena: arenaType = arena.arenaType extraData = arena.extraData or {} descExtra = getPrebattleFullDescription(extraData) arenaTypeID = getArenaTypeID() arenaSubType = getArenaSubTypeName(arenaTypeID) team = arenaDP.getNumberOfTeam() enemy = arenaDP.getNumberOfTeam(True) hasBase = isBaseExists(arenaTypeID, team) allyTeamName, enemyTeamName = self._battleCtx.getTeamName(team), self._battleCtx.getTeamName(enemy) if arena.guiType == constants.ARENA_GUI_TYPE.EVENT_BATTLES: winText = i18n.makeString('#arenas:type/%s/description' % arenaSubType) else: winText = getBattleSubTypeWinText(arenaTypeID, 1 if hasBase else 2) if descExtra: battleTypeLocaleStr = descExtra if arena.guiType != constants.ARENA_GUI_TYPE.UNKNOWN and arena.guiType in constants.ARENA_GUI_TYPE_LABEL.LABELS: battleTypeFrameLabel = constants.ARENA_GUI_TYPE_LABEL.LABELS[arena.guiType] else: battleTypeFrameLabel = 'neutral' elif arena.guiType in [constants.ARENA_GUI_TYPE.RANDOM, constants.ARENA_GUI_TYPE.TRAINING]: battleTypeLocaleStr = '#arenas:type/%s/name' % arenaSubType battleTypeFrameLabel = getNecessaryArenaFrameName(arenaSubType, hasBase) elif arena.guiType == constants.ARENA_GUI_TYPE.EVENT_BATTLES and hasResourcePoints(): battleTypeFrameLabel = 'resourcePoints' battleTypeLocaleStr = MENU.LOADING_BATTLETYPES_RESOURCEPOINTS else: battleTypeLocaleStr = '#menu:loading/battleTypes/%d' % arena.guiType if arena.guiType != constants.ARENA_GUI_TYPE.UNKNOWN and arena.guiType in constants.ARENA_GUI_TYPE_LABEL.LABELS: battleTypeFrameLabel = constants.ARENA_GUI_TYPE_LABEL.LABELS[arena.guiType] else: battleTypeFrameLabel = 'neutral' arenaInfoData = {'mapName': arenaType.name, 'winText': winText, 'battleTypeLocaleStr': battleTypeLocaleStr, 'battleTypeFrameLabel': battleTypeFrameLabel, 'allyTeamName': allyTeamName, 'enemyTeamName': enemyTeamName} self._setArenaInfo(arenaInfoData)
def createDescription(arenaVisitor): guiVisitor = arenaVisitor.gui if guiVisitor.isRandomBattle() or guiVisitor.isTrainingBattle(): description = ArenaWithBasesDescription(arenaVisitor) elif guiVisitor.isTutorialBattle(): description = TutorialBattleDescription(arenaVisitor) elif guiVisitor.isBootcampBattle(): description = BootcampBattleDescription(arenaVisitor) elif guiVisitor.isInEpicRange(): description = EpicBattlesDescription(arenaVisitor) elif guiVisitor.isBattleRoyale(): description = BattleRoyaleDescription(arenaVisitor) elif guiVisitor.isMapbox(): description = MapboxArenaDescription(arenaVisitor) elif guiVisitor.hasLabel(): description = ArenaWithLabelDescription(arenaVisitor) else: description = DefaultArenaGuiDescription(arenaVisitor) l10nDescription = getPrebattleFullDescription(arenaVisitor.getArenaExtraData() or {}) if l10nDescription: description = ArenaWithL10nDescription(description, l10nDescription) return description
def getText(self, invite): return u'%s, %s' % (unicode( getPrebattleFullDescription(invite.description), 'utf-8' ), unicode(getBattleSessionStartTimeString(invite.startTime), 'utf-8'))
def getText(self, invite): return u'%s, %s' % (unicode(getPrebattleFullDescription(invite.description), 'utf-8'), unicode(getBattleSessionStartTimeString(invite.startTime), 'utf-8'))
def __updatePlayers(self, *args): if self.__needArenaTypeUpdate: arena = getattr(BigWorld.player(), 'arena', None) if arena: descExtra = getPrebattleFullDescription(arena.extraData or {}) if not descExtra: arenaSubType = getArenaSubTypeName(BigWorld.player().arenaTypeID) if arenaSubType == 'assault': team = getattr(BigWorld.player(), 'team', None) if team: arenaSubType += '1' if isBaseExists(BigWorld.player().arenaTypeID, team) else '2' self.as_setBattleTypeFrameNameS(arenaSubType) self.__needArenaTypeUpdate = False stat = {1: [], 2: []} squads = {1: {}, 2: {}} player = BigWorld.player() if player is None: return elif self.__arena is None: return else: vehicles = self.__arena.vehicles userGetter = self.usersStorage.getUser for vId, vData in vehicles.items(): team = vData['team'] if 'name' in vData: name = g_battleContext.getFullPlayerName(vData, showVehShortName=False) else: name = i18n.makeString('#ingame_gui:players_panel/unknown_name') if vData['vehicleType'] is not None: vShortName = vData['vehicleType'].type.shortUserString vName = vData['vehicleType'].type.userString vIcon = self.CONTOUR_ICONS_MASK % {'unicName': vData['vehicleType'].type.name.replace(':', '-')} vType = set(VEHICLE_CLASS_TAGS.intersection(vData['vehicleType'].type.tags)).pop() else: vName = vShortName = i18n.makeString('#ingame_gui:players_panel/unknown_vehicle') vIcon = self.CONTOUR_ICONS_MASK % {'unicName': 'unknown'} vType = 100 if vData['isAlive']: isAlive = vData['isAvatarReady'] vehActions = VehicleActions.getBitMask(vData.get('events', {})) if vData['prebattleID']: if vData['prebattleID'] not in squads[team].keys(): squads[team][vData['prebattleID']] = 1 else: squads[team][vData['prebattleID']] += 1 user = userGetter(vData['accountDBID']) isMuted = user and user.getRoster() & USERS_ROSTER_VOICE_MUTED != 0 else: isMuted = False stat[team].append([name, vIcon, vShortName, not isAlive, vId, vData['prebattleID'], vType, vName, not vData['isAlive'], vData['name'], vData['accountDBID'], isMuted, vehActions, self.app.voiceChatManager.isPlayerSpeaking(vData['accountDBID']), vData['isTeamKiller'], vData['vehicleType'].level, vData['igrType'], vData['clanAbbrev']]) squadsSorted = dict() squadsSorted[1] = sorted(squads[1].iteritems(), cmp=lambda x, y: cmp(x[0], y[0])) squadsSorted[2] = sorted(squads[2].iteritems(), cmp=lambda x, y: cmp(x[0], y[0])) squadsFiltered = dict() squadsFiltered[1] = [ id for id, num in squadsSorted[1] if 1 < num < 4 and self.__arena.guiType == constants.ARENA_GUI_TYPE.RANDOM ] squadsFiltered[2] = [ id for id, num in squadsSorted[2] if 1 < num < 4 and self.__arena.guiType == constants.ARENA_GUI_TYPE.RANDOM ] playerVehicleID = -1 if hasattr(player, 'playerVehicleID'): playerVehicleID = player.playerVehicleID playerSquadID = -1 for team in (1, 2): data = sorted(stat[team], cmp=_playerComparator) for item in data: if playerVehicleID == item[4]: playerSquadID = squadsFiltered[team].index(item[5]) + 1 if item[5] in squadsFiltered[team] else 0 break result = {'playerID': playerVehicleID, 'squadID': playerSquadID, 'team1': list(), 'team2': list()} for team in (1, 2): thisTeam = 'team2' thisTeamMembers = list() data = sorted(stat[team], cmp=_playerComparator) for item in data: item[5] = squadsFiltered[team].index(item[5]) + 1 if item[5] in squadsFiltered[team] else 0 if item[9] == player.name and result['playerID'] == -1 or item[4] == playerVehicleID: result['playerID'] = item[4] thisTeam = 'team1' self.setTeams(team) if not self.__winTextInit: self.__winTextInit = True teamHasBase = 1 if isBaseExists(BigWorld.player().arenaTypeID, team) else 2 winText = getBattleSubTypeWinText(BigWorld.player().arenaTypeID, teamHasBase) self.as_setWinTextS(winText) thisTeamMembers.append({'id': item[10], 'muted': item[11], 'playerID': item[4], 'label': item[0], 'icon': item[1], 'vehicle': item[2], 'enabled': not item[3], 'squad': item[5], 'vehAction': item[12], 'speak': item[13], 'isTeamKiller': item[14], 'isIGR': item[16] != constants.IGR_TYPE.NONE, 'clanAbbrev': item[17]}) result[thisTeam] = thisTeamMembers self.as_setTeamValuesS(result) return