def start(self, startCtx=None): """ Battle session is started. :param startCtx: instance of BattleSessionProviderStartCtx. :return: """ isReplayRecording = startCtx.replayCtrl.isRecording isReplayPlaying = startCtx.replayCtrl.isPlaying self.__arenaDP = ArenaDataProvider(avatar=startCtx.avatar) self.__ctx.start(self.__arenaDP) self.__ammoCtrl = consumables.createAmmoCtrl(isReplayPlaying, isReplayRecording) self.__equipmentsCtrl = consumables.createEquipmentCtrl( isReplayPlaying) self.__optDevicesCtrl = consumables.createOptDevicesCtrl() self.__vehicleStateCtrl = vehicle_state_ctrl.createCtrl( isReplayRecording) self.__arenaLoadCtrl = ArenaLoadController() self.__arenaTeamsBasesCtrl = createTeamsBasesCtrl(isReplayPlaying) self.__periodCtrl = createPeriodCtrl(isReplayPlaying, isReplayRecording) self.__respawnsCtrl = RespawnsController(startCtx) self.__repairCtrl = RepairController() self.__dynSquadFunctional = DynSquadFunctional(isReplayPlaying) self.__notificationsCtrl = NotificationsController(self.__arenaDP) self.__gasAttackCtrl = GasAttackController(startCtx) ctx = weakref.proxy(self.__ctx) self.__arenaListeners = ListenersCollection() self.__arenaListeners.addController(ctx, self.__arenaLoadCtrl) self.__arenaListeners.addController(ctx, self.__arenaTeamsBasesCtrl) self.__arenaListeners.addController(ctx, self.__periodCtrl) self.__arenaListeners.addController(ctx, self.__respawnsCtrl) self.__arenaListeners.addController(ctx, self.__dynSquadFunctional) self.__arenaListeners.start(startCtx.avatar.arena, arenaDP=self.__arenaDP) self.__feedback = createFeedbackAdaptor(isReplayPlaying) self.__feedback.start(self.__arenaDP) self.__messagesCtrl = createBattleMessagesCtrl(isReplayPlaying) self.__messagesCtrl.start(ctx) self.__drrScaleCtrl = DRRScaleController() self.__drrScaleCtrl.start(self.__messagesCtrl) self.__hitDirectionCtrl = HitDirectionController() self.__hitDirectionCtrl.start() g_playerEvents.onBattleResultsReceived += self.__pe_onBattleResultsReceived self.__chatCommands = ChatCommandsController() self.__chatCommands.start(self.__arenaDP, self.__feedback) self.__requestsCtrl = AvatarRequestsController() self.__avatarStatsCtrl = AvatarStatsController() self.__debugCtrl = DebugController() self.__debugCtrl.start() self.__viewComponentsBridge = createComponentsBridge() self.__viewComponentsBridge.registerControllers( (BATTLE_CTRL.PERIOD, self.__periodCtrl), (BATTLE_CTRL.TEAM_BASES, self.__arenaTeamsBasesCtrl), (BATTLE_CTRL.DEBUG, self.__debugCtrl), (BATTLE_CTRL.HIT_DIRECTION, self.__hitDirectionCtrl))
def start(self, avatar=None): import BattleReplay replayCtrl = BattleReplay.g_replayCtrl isReplayRecording = replayCtrl.isRecording isReplayPlaying = replayCtrl.isPlaying self.__arenaDP = ArenaDataProvider(avatar=avatar) self.__ctx.start(self.__arenaDP) self.__ammoCtrl = consumables.createAmmoCtrl(isReplayPlaying, isReplayRecording) self.__equipmentsCtrl = consumables.createEquipmentCtrl( isReplayPlaying) self.__optDevicesCtrl = consumables.createOptDevicesCtrl() self.__vehicleStateCtrl = vehicle_state_ctrl.createCtrl( isReplayRecording) isMultiTeam = self.__arenaDP.isMultipleTeams() self.__arenaLoadCtrl = ArenaLoadController(isMultiTeam) self.__arenaTeamsBasesCtrl = createTeamsBasesCtrl(isReplayPlaying) self.__periodCtrl = createPeriodCtrl(isReplayPlaying, isReplayRecording) self.__drrScaleCtrl = DRRScaleController() self.__respawnsCtrl = RespawnsController() self.__repairCtrl = RepairController() self.__dynSquadFunctional = DynSquadFunctional() self.__notificationsCtrl = NotificationsController(self.__arenaDP) ctx = weakref.proxy(self.__ctx) self.__arenaListeners = ListenersCollection() self.__arenaListeners.addController(ctx, self.__arenaLoadCtrl) self.__arenaListeners.addController(ctx, self.__arenaTeamsBasesCtrl) self.__arenaListeners.addController(ctx, self.__periodCtrl) self.__arenaListeners.addController(ctx, self.__respawnsCtrl) self.__arenaListeners.start(getClientArena(avatar=avatar), arenaDP=self.__arenaDP) self.__feedback = createFeedbackAdaptor(isReplayPlaying) self.__feedback.start(self.__arenaDP) self.__messagesCtrl = createBattleMessagesCtrl(isReplayPlaying) self.__messagesCtrl.start(ctx) self.__hitDirectionCtrl = HitDirectionController() self.__hitDirectionCtrl.start() g_playerEvents.onBattleResultsReceived += self.__pe_onBattleResultsReceived self.__chatCommands = ChatCommandsController() self.__chatCommands.start(self.__arenaDP, self.__feedback) self.__requestsCtrl = AvatarRequestsController() self.__avatarStatsCtrl = AvatarStatsController()
def start(self, avatar=None): import BattleReplay replayCtrl = BattleReplay.g_replayCtrl isReplayRecording = replayCtrl.isRecording isReplayPlaying = replayCtrl.isPlaying self.__arenaDP = ArenaDataProvider(avatar=avatar) self.__ctx.start(self.__arenaDP) self.__ammoCtrl = consumables.createAmmoCtrl(isReplayPlaying, isReplayRecording) self.__equipmentsCtrl = consumables.createEquipmentCtrl(isReplayPlaying) self.__optDevicesCtrl = consumables.createOptDevicesCtrl() self.__vehicleStateCtrl = vehicle_state_ctrl.createCtrl(isReplayRecording) isMultiTeam = self.__arenaDP.isMultipleTeams() self.__arenaLoadCtrl = ArenaLoadController(isMultiTeam) self.__arenaTeamsBasesCtrl = createTeamsBasesCtrl(isReplayPlaying) self.__periodCtrl = createPeriodCtrl(isReplayPlaying, isReplayRecording) self.__drrScaleCtrl = DRRScaleController() self.__respawnsCtrl = RespawnsController() self.__repairCtrl = RepairController() self.__dynSquadFunctional = DynSquadFunctional() self.__notificationsCtrl = NotificationsController(self.__arenaDP) ctx = weakref.proxy(self.__ctx) self.__arenaListeners = ListenersCollection() self.__arenaListeners.addController(ctx, self.__arenaLoadCtrl) self.__arenaListeners.addController(ctx, self.__arenaTeamsBasesCtrl) self.__arenaListeners.addController(ctx, self.__periodCtrl) self.__arenaListeners.addController(ctx, self.__respawnsCtrl) self.__arenaListeners.start(getClientArena(avatar=avatar), arenaDP=self.__arenaDP) self.__feedback = createFeedbackAdaptor(isReplayPlaying) self.__feedback.start(self.__arenaDP) self.__messagesCtrl = createBattleMessagesCtrl(isReplayPlaying) self.__messagesCtrl.start(ctx) self.__hitDirectionCtrl = HitDirectionController() self.__hitDirectionCtrl.start() g_playerEvents.onBattleResultsReceived += self.__pe_onBattleResultsReceived self.__chatCommands = ChatCommandsController() self.__chatCommands.start(self.__arenaDP, self.__feedback) self.__requestsCtrl = AvatarRequestsController() self.__avatarStatsCtrl = AvatarStatsController()
class BattleSessionProvider(object): __slots__ = ('__ammoCtrl', '__equipmentsCtrl', '__optDevicesCtrl', '__vehicleStateCtrl', '__chatCommands', '__drrScaleCtrl', '__feedback', '__ctx', '__arenaDP', '__arenaListeners', '__arenaLoadCtrl', '__respawnsCtrl', '__notificationsCtrl', '__isBattleUILoaded', '__arenaTeamsBasesCtrl', '__periodCtrl', '__messagesCtrl', '__repairCtrl', '__hitDirectionCtrl', '__requestsCtrl', '__avatarStatsCtrl', '__dynSquadFunctional', '__weakref__', '__gasAttackCtrl') def __init__(self): super(BattleSessionProvider, self).__init__() self.__ctx = BattleContext() self.__ammoCtrl = None self.__equipmentsCtrl = None self.__optDevicesCtrl = None self.__vehicleStateCtrl = None self.__chatCommands = None self.__drrScaleCtrl = None self.__feedback = None self.__messagesCtrl = None self.__hitDirectionCtrl = None self.__requestsCtrl = None self.__arenaDP = None self.__arenaLoadCtrl = None self.__arenaTeamsBasesCtrl = None self.__periodCtrl = None self.__respawnsCtrl = None self.__notificationsCtrl = None self.__repairCtrl = None self.__dynSquadFunctional = None self.__avatarStatsCtrl = None self.__arenaListeners = None self.__isBattleUILoaded = False self.__gasAttackCtrl = None return def isBattleUILoaded(self): return self.__isBattleUILoaded def getCtx(self): return self.__ctx def getAmmoCtrl(self): return self.__ammoCtrl def getEquipmentsCtrl(self): return self.__equipmentsCtrl def getOptDevicesCtrl(self): return self.__optDevicesCtrl def getVehicleStateCtrl(self): return self.__vehicleStateCtrl def getChatCommands(self): return self.__chatCommands def getDrrScaleCtrl(self): return self.__drrScaleCtrl def getRespawnsCtrl(self): return self.__respawnsCtrl def getNotificationsCtrl(self): return self.__notificationsCtrl def getRepairCtrl(self): return self.__repairCtrl def getFeedback(self): return self.__feedback def getBattleMessagesCtrl(self): return self.__messagesCtrl def getHitDirectionCtrl(self): return self.__hitDirectionCtrl def getAvatarStatsCtrl(self): return self.__avatarStatsCtrl def getArenaTeamsBasesCtrl(self): return self.__arenaTeamsBasesCtrl def getPeriodCtrl(self): return self.__periodCtrl def getGasAttackCtrl(self): return self.__gasAttackCtrl @async def sendRequest(self, ctx, callback, allowDelay = None): self.__requestsCtrl.request(ctx, callback=callback, allowDelay=allowDelay) def setPlayerVehicle(self, vID, vDesc): self.__ammoCtrl.setGunSettings(vDesc.gun) self.__vehicleStateCtrl.setPlayerVehicle(vID) self.__feedback.setPlayerVehicle(vID) self.__respawnsCtrl.spawnVehicle(vID) def setAimOffset(self, offset): if self.__hitDirectionCtrl is not None: self.__hitDirectionCtrl.setOffset(offset) return def setAimPositionUpdated(self, mode, x, y): if self.__feedback is not None: self.__feedback.setAimPositionUpdated(mode, x, y) return def getArenaDP(self): return self.__arenaDP def addArenaCtrl(self, controller): if self.__arenaListeners: self.__arenaListeners.addController(weakref.proxy(self.__ctx), controller) def removeArenaCtrl(self, controller): if self.__arenaListeners: self.__arenaListeners.removeController(controller) def start(self, startCtx = None): isReplayRecording = startCtx.replayCtrl.isRecording isReplayPlaying = startCtx.replayCtrl.isPlaying self.__arenaDP = ArenaDataProvider(avatar=startCtx.avatar) self.__ctx.start(self.__arenaDP) self.__ammoCtrl = consumables.createAmmoCtrl(isReplayPlaying, isReplayRecording) self.__equipmentsCtrl = consumables.createEquipmentCtrl(isReplayPlaying) self.__optDevicesCtrl = consumables.createOptDevicesCtrl() self.__vehicleStateCtrl = vehicle_state_ctrl.createCtrl(isReplayRecording) isMultiTeam = self.__arenaDP.isMultipleTeams() self.__arenaLoadCtrl = ArenaLoadController(isMultiTeam) self.__arenaTeamsBasesCtrl = createTeamsBasesCtrl(isReplayPlaying) self.__periodCtrl = createPeriodCtrl(isReplayPlaying, isReplayRecording) self.__drrScaleCtrl = DRRScaleController() self.__respawnsCtrl = RespawnsController(startCtx) self.__repairCtrl = RepairController() self.__dynSquadFunctional = DynSquadFunctional(isReplayPlaying) self.__notificationsCtrl = NotificationsController(self.__arenaDP) self.__gasAttackCtrl = GasAttackController(startCtx) ctx = weakref.proxy(self.__ctx) self.__arenaListeners = ListenersCollection() self.__arenaListeners.addController(ctx, self.__arenaLoadCtrl) self.__arenaListeners.addController(ctx, self.__arenaTeamsBasesCtrl) self.__arenaListeners.addController(ctx, self.__periodCtrl) self.__arenaListeners.addController(ctx, self.__respawnsCtrl) self.__arenaListeners.start(startCtx.avatar.arena, arenaDP=self.__arenaDP) self.__feedback = createFeedbackAdaptor(isReplayPlaying) self.__feedback.start(self.__arenaDP) self.__messagesCtrl = createBattleMessagesCtrl(isReplayPlaying) self.__messagesCtrl.start(ctx) self.__hitDirectionCtrl = HitDirectionController() self.__hitDirectionCtrl.start() g_playerEvents.onBattleResultsReceived += self.__pe_onBattleResultsReceived self.__chatCommands = ChatCommandsController() self.__chatCommands.start(self.__arenaDP, self.__feedback) self.__requestsCtrl = AvatarRequestsController() self.__avatarStatsCtrl = AvatarStatsController() def stop(self): g_playerEvents.onBattleResultsReceived -= self.__pe_onBattleResultsReceived if self.__requestsCtrl: self.__requestsCtrl.fini() self.__requestsCtrl = None if self.__ammoCtrl: self.__ammoCtrl.clear() self.__ammoCtrl = None if self.__equipmentsCtrl: self.__equipmentsCtrl.clear() self.__equipmentsCtrl = None if self.__optDevicesCtrl: self.__optDevicesCtrl.clear() self.__optDevicesCtrl = None if self.__vehicleStateCtrl: self.__vehicleStateCtrl.clear() self.__vehicleStateCtrl = None if self.__arenaListeners is not None: self.__arenaListeners.stop() self.__arenaListeners = None if self.__feedback is not None: self.__feedback.stop() self.__feedback = None if self.__messagesCtrl is not None: self.__messagesCtrl.stop() self.__messagesCtrl = None if self.__hitDirectionCtrl is not None: self.__hitDirectionCtrl.stop() self.__hitDirectionCtrl = None if self.__arenaDP is not None: self.__arenaDP.clear() self.__arenaDP = None if self.__chatCommands is not None: self.__chatCommands.stop() self.__chatCommands = None self.__drrScaleCtrl = None self.__arenaLoadCtrl = None self.__arenaTeamsBasesCtrl = None self.__periodCtrl = None self.__respawnsCtrl = None self.__notificationsCtrl = None self.__repairCtrl = None self.__gasAttackCtrl = None self.__dynSquadFunctional = None if self.__avatarStatsCtrl is not None: self.__avatarStatsCtrl.stop() self.__avatarStatsCtrl = None self.__ctx.stop() return def setBattleUI(self, battleUI): raise not self.__isBattleUILoaded or AssertionError('Battle UI already is set') self.__isBattleUILoaded = True self.__arenaTeamsBasesCtrl.setUI(battleUI.getTeamBasesPanel()) self.__periodCtrl.setUI(battleUI.getBattleTimer(), battleUI.getPreBattleTimer(), battleUI.getPlayersPanelsSwitcher()) self.__hitDirectionCtrl.setUI(battleUI.getIndicators()) self.__drrScaleCtrl.start(battleUI) self.__dynSquadFunctional.setUI(battleUI, self) def clearBattleUI(self): self.__isBattleUILoaded = False self.__arenaTeamsBasesCtrl.clearUI() self.__periodCtrl.clearUI() self.__hitDirectionCtrl.clearUI() self.__drrScaleCtrl.stop() self.__dynSquadFunctional.clearUI(self) def switchToPostmortem(self): self.__ammoCtrl.clear() self.__equipmentsCtrl.clear() self.__optDevicesCtrl.clear() self.__gasAttackCtrl.clear() self.__feedback.setPlayerVehicle(0) self.__vehicleStateCtrl.switchToPostmortem() def useLoaderIntuition(self): self.__messagesCtrl.showVehicleMessage('LOADER_INTUITION_WAS_USED') self.__ammoCtrl.useLoaderIntuition() def movingToRespawnBase(self): self.__ammoCtrl.clear(False) self.__equipmentsCtrl.clear(False) self.__optDevicesCtrl.clear(False) self.__vehicleStateCtrl.movingToRespawn() self.__respawnsCtrl.movingToRespawn() def invalidateVehicleState(self, state, value, vehicleID = 0): self.__vehicleStateCtrl.invalidate(state, value, vehicleID) if state == VEHICLE_VIEW_STATE.DESTROYED: self.__ammoCtrl.clear(False) self.__equipmentsCtrl.clear(False) def repairPointAction(self, repairPointIndex, action, nextActionTime): self.__repairCtrl.action(repairPointIndex, action, nextActionTime) def updateAvatarPrivateStats(self, stats): self.__avatarStatsCtrl.update(stats) def addHitDirection(self, hitDirYaw, isDamage): self.__hitDirectionCtrl.addHit(hitDirYaw, isDamage) def __pe_onBattleResultsReceived(self, isActiveVehicle, _): if isActiveVehicle: arena = getClientArena() LOG_DEBUG('Try to exit from arena', arena) if arena: self.__ctx.lastArenaUniqueID = arena.arenaUniqueID leaveArena()
class BattleSessionProvider(object): __slots__ = ('__ammoCtrl', '__equipmentsCtrl', '__optDevicesCtrl', '__vehicleStateCtrl', '__chatCommands', '__drrScaleCtrl', '__feedback', '__ctx', '__arenaDP', '__arenaListeners', '__arenaLoadCtrl', '__respawnsCtrl', '__notificationsCtrl', '__isBattleUILoaded', '__arenaTeamsBasesCtrl', '__periodCtrl', '__messagesCtrl', '__repairCtrl', '__hitDirectionCtrl', '__requestsCtrl', '__avatarStatsCtrl', '__dynSquadFunctional', '__weakref__') def __init__(self): super(BattleSessionProvider, self).__init__() self.__ctx = BattleContext() self.__ammoCtrl = None self.__equipmentsCtrl = None self.__optDevicesCtrl = None self.__vehicleStateCtrl = None self.__chatCommands = None self.__drrScaleCtrl = None self.__feedback = None self.__messagesCtrl = None self.__hitDirectionCtrl = None self.__requestsCtrl = None self.__arenaDP = None self.__arenaLoadCtrl = None self.__arenaTeamsBasesCtrl = None self.__periodCtrl = None self.__respawnsCtrl = None self.__notificationsCtrl = None self.__repairCtrl = None self.__dynSquadFunctional = None self.__avatarStatsCtrl = None self.__arenaListeners = None self.__isBattleUILoaded = False def isBattleUILoaded(self): return self.__isBattleUILoaded def getCtx(self): return self.__ctx def getAmmoCtrl(self): return self.__ammoCtrl def getEquipmentsCtrl(self): return self.__equipmentsCtrl def getOptDevicesCtrl(self): return self.__optDevicesCtrl def getVehicleStateCtrl(self): return self.__vehicleStateCtrl def getChatCommands(self): return self.__chatCommands def getDrrScaleCtrl(self): return self.__drrScaleCtrl def getRespawnsCtrl(self): return self.__respawnsCtrl def getNotificationsCtrl(self): return self.__notificationsCtrl def getRepairCtrl(self): return self.__repairCtrl def getFeedback(self): return self.__feedback def getBattleMessagesCtrl(self): return self.__messagesCtrl def getHitDirectionCtrl(self): return self.__hitDirectionCtrl def getAvatarStatsCtrl(self): return self.__avatarStatsCtrl def getArenaTeamsBasesCtrl(self): return self.__arenaTeamsBasesCtrl def getPeriodCtrl(self): return self.__periodCtrl @async def sendRequest(self, ctx, callback, allowDelay=None): self.__requestsCtrl.request(ctx, callback=callback, allowDelay=allowDelay) def setPlayerVehicle(self, vID, vDesc): self.__ammoCtrl.setGunSettings(vDesc.gun) self.__vehicleStateCtrl.setPlayerVehicle(vID) self.__feedback.setPlayerVehicle(vID) self.__respawnsCtrl.spawnVehicle(vID) def setAimOffset(self, offset): if self.__hitDirectionCtrl is not None: self.__hitDirectionCtrl.setOffset(offset) def setAimPositionUpdated(self, mode, x, y): if self.__feedback is not None: self.__feedback.setAimPositionUpdated(mode, x, y) def getArenaDP(self): return self.__arenaDP def addArenaCtrl(self, controller): if self.__arenaListeners: self.__arenaListeners.addController(weakref.proxy(self.__ctx), controller) def removeArenaCtrl(self, controller): if self.__arenaListeners: self.__arenaListeners.removeController(controller) def start(self, avatar=None): import BattleReplay replayCtrl = BattleReplay.g_replayCtrl isReplayRecording = replayCtrl.isRecording isReplayPlaying = replayCtrl.isPlaying self.__arenaDP = ArenaDataProvider(avatar=avatar) self.__ctx.start(self.__arenaDP) self.__ammoCtrl = consumables.createAmmoCtrl(isReplayPlaying, isReplayRecording) self.__equipmentsCtrl = consumables.createEquipmentCtrl( isReplayPlaying) self.__optDevicesCtrl = consumables.createOptDevicesCtrl() self.__vehicleStateCtrl = vehicle_state_ctrl.createCtrl( isReplayRecording) isMultiTeam = self.__arenaDP.isMultipleTeams() self.__arenaLoadCtrl = ArenaLoadController(isMultiTeam) self.__arenaTeamsBasesCtrl = createTeamsBasesCtrl(isReplayPlaying) self.__periodCtrl = createPeriodCtrl(isReplayPlaying, isReplayRecording) self.__drrScaleCtrl = DRRScaleController() self.__respawnsCtrl = RespawnsController() self.__repairCtrl = RepairController() self.__dynSquadFunctional = DynSquadFunctional() self.__notificationsCtrl = NotificationsController(self.__arenaDP) ctx = weakref.proxy(self.__ctx) self.__arenaListeners = ListenersCollection() self.__arenaListeners.addController(ctx, self.__arenaLoadCtrl) self.__arenaListeners.addController(ctx, self.__arenaTeamsBasesCtrl) self.__arenaListeners.addController(ctx, self.__periodCtrl) self.__arenaListeners.addController(ctx, self.__respawnsCtrl) self.__arenaListeners.start(getClientArena(avatar=avatar), arenaDP=self.__arenaDP) self.__feedback = createFeedbackAdaptor(isReplayPlaying) self.__feedback.start(self.__arenaDP) self.__messagesCtrl = createBattleMessagesCtrl(isReplayPlaying) self.__messagesCtrl.start(ctx) self.__hitDirectionCtrl = HitDirectionController() self.__hitDirectionCtrl.start() g_playerEvents.onBattleResultsReceived += self.__pe_onBattleResultsReceived self.__chatCommands = ChatCommandsController() self.__chatCommands.start(self.__arenaDP, self.__feedback) self.__requestsCtrl = AvatarRequestsController() self.__avatarStatsCtrl = AvatarStatsController() def stop(self): g_playerEvents.onBattleResultsReceived -= self.__pe_onBattleResultsReceived if self.__requestsCtrl: self.__requestsCtrl.fini() self.__requestsCtrl = None if self.__ammoCtrl: self.__ammoCtrl.clear() self.__ammoCtrl = None if self.__equipmentsCtrl: self.__equipmentsCtrl.clear() self.__equipmentsCtrl = None if self.__optDevicesCtrl: self.__optDevicesCtrl.clear() self.__optDevicesCtrl = None if self.__vehicleStateCtrl: self.__vehicleStateCtrl.clear() self.__vehicleStateCtrl = None if self.__arenaListeners is not None: self.__arenaListeners.stop() self.__arenaListeners = None if self.__feedback is not None: self.__feedback.stop() self.__feedback = None if self.__messagesCtrl is not None: self.__messagesCtrl.stop() self.__messagesCtrl = None if self.__hitDirectionCtrl is not None: self.__hitDirectionCtrl.stop() self.__hitDirectionCtrl = None if self.__arenaDP is not None: self.__arenaDP.clear() self.__arenaDP = None if self.__chatCommands is not None: self.__chatCommands.stop() self.__chatCommands = None self.__drrScaleCtrl = None self.__arenaLoadCtrl = None self.__arenaTeamsBasesCtrl = None self.__periodCtrl = None self.__respawnsCtrl = None self.__notificationsCtrl = None self.__repairCtrl = None self.__dynSquadFunctional = None if self.__avatarStatsCtrl is not None: self.__avatarStatsCtrl.stop() self.__avatarStatsCtrl = None self.__ctx.stop() def setBattleUI(self, battleUI): assert not self.__isBattleUILoaded, 'Battle UI already is set' self.__isBattleUILoaded = True self.__arenaTeamsBasesCtrl.setUI(battleUI.teamBasesPanel) self.__periodCtrl.setUI(battleUI.timersBar, battleUI.ppSwitcher) self.__hitDirectionCtrl.setUI(battleUI.indicators) self.__drrScaleCtrl.start(battleUI) self.__repairCtrl.start(battleUI) self.__dynSquadFunctional.setUI(battleUI, self) def clearBattleUI(self): self.__isBattleUILoaded = False self.__arenaTeamsBasesCtrl.clearUI() self.__periodCtrl.clearUI() self.__hitDirectionCtrl.clearUI() self.__drrScaleCtrl.stop() self.__repairCtrl.stop() self.__dynSquadFunctional.clearUI(self) def switchToPostmortem(self): self.__ammoCtrl.clear() self.__equipmentsCtrl.clear() self.__optDevicesCtrl.clear() self.__feedback.setPlayerVehicle(0L) self.__vehicleStateCtrl.switchToPostmortem() def useLoaderIntuition(self): self.__messagesCtrl.showVehicleMessage('LOADER_INTUITION_WAS_USED') self.__ammoCtrl.useLoaderIntuition() def movingToRespawnBase(self): self.__ammoCtrl.clear(False) self.__equipmentsCtrl.clear(False) self.__optDevicesCtrl.clear(False) self.__vehicleStateCtrl.movingToRespawn() self.__respawnsCtrl.movingToRespawn() def invalidateVehicleState(self, state, value): self.__vehicleStateCtrl.invalidate(state, value) def repairPointAction(self, repairPointIndex, action, nextActionTime): self.__repairCtrl.action(repairPointIndex, action, nextActionTime) def updateAvatarPrivateStats(self, stats): self.__avatarStatsCtrl.update(stats) def addHitDirection(self, hitDirYaw, isDamage): self.__hitDirectionCtrl.addHit(hitDirYaw, isDamage) def __pe_onBattleResultsReceived(self, isActiveVehicle, _): if isActiveVehicle: arena = getClientArena() LOG_DEBUG('Try to exit from arena', arena) if arena: self.__ctx.lastArenaUniqueID = arena.arenaUniqueID leaveArena()