private static void OnGameMatchmakingMessageReceived(GameMatchmakingMessage message) { if (GameSessionManager.TryGet(message.SessionId, out GameSession session)) { session.DestructGameState(); if (session.FakeAttackState != null) { session.LoadGameState(session.FakeAttackState); session.FakeAttackState = null; return; } switch (message.MatchmakingType) { case GameMatchmakingMessage.GameMatchmakingType.DEFAULT: GameMatchmakingManager.Enqueue(session); break; case GameMatchmakingMessage.GameMatchmakingType.DUEL: GameDuelMatchmakingManager.Enqueue(session); break; } } }
public override void Destruct() { GameAvatarManager.ExecuteServerCommandsInOfflineMode(this.GameAvatar); GameAvatarManager.Save(this.GameAvatar); GameMatchmakingManager.Enqueue(this.GameAvatar); this.GameAvatar.CurrentSession = null; this.DestructGameState(); base.Destruct(); }
public static void Init() { ServerGame.GameDatabase = new CouchbaseDatabase("magic-players", "game"); GameResourceManager.Init(); GameMatchmakingManager.Init(); GameDuelMatchmakingManager.Init(); GameAvatarManager.Init(); GameSessionManager.Init(); LiveReplayManager.Init(); GameBaseGenerator.Init(); WordCensorUtil.Init(); }
public override void OnReceiveSessionMessage(ServerSessionMessage message) { switch (message.GetMessageType()) { case ServerMessageType.START_SERVER_SESSION: GameSessionManager.OnStartServerSessionMessageReceived((StartServerSessionMessage)message); break; case ServerMessageType.STOP_SERVER_SESSION: GameSessionManager.OnStopServerSessionMessageReceived((StopServerSessionMessage)message); break; case ServerMessageType.UPDATE_SOCKET_SERVER_SESSION: GameMessageManager.OnUpdateSocketServerSessionMessageReceived((UpdateSocketServerSessionMessage)message); break; case ServerMessageType.FORWARD_LOGIC_MESSAGE: GameMessageManager.OnForwardLogicMessageReceived((ForwardLogicMessage)message); break; case ServerMessageType.FORWARD_LOGIC_REQUEST_MESSAGE: GameMessageManager.OnForwardLogicMessageRequestMessageReceived((ForwardLogicRequestMessage)message); break; case ServerMessageType.CHANGE_GAME_STATE: GameMessageManager.OnChangeGameStateMessageReceived((ChangeGameStateMessage)message); break; case ServerMessageType.GAME_MATCHMAKING: GameMessageManager.OnGameMatchmakingMessageReceived((GameMatchmakingMessage)message); break; case ServerMessageType.GAME_MATCHMAKING_RESULT: GameMatchmakingManager.OnGameMatchmakingResultMessageReceived((GameMatchmakingResultMessage)message); break; case ServerMessageType.GAME_START_FAKE_ATTACK: GameMessageManager.OnGameStartFakeAttackMessageReceived((GameStartFakeAttackMessage)message); break; case ServerMessageType.GAME_FRIENDLY_SCOUT: GameMessageManager.OnGameFriendlyScoutMessageReceived((GameFriendlyScoutMessage)message); break; case ServerMessageType.GAME_SPECTATE_LIVE_REPLAY: GameMessageManager.OnGameSpectateLiveReplayMessageReceived((GameSpectateLiveReplayMessage)message); break; } }
public GameSession(StartServerSessionMessage message) : base(message) { this.LogicMessageManager = new LogicMessageManager(this); this.GameAvatar = GameAvatarManager.TryGet(this.AccountId, out GameAvatar document) ? document : GameAvatarManager.Create(this.AccountId); if (this.GameAvatar.CurrentSession != null) { GameSessionManager.Remove(this.GameAvatar.CurrentSession.Id); } this.GameAvatar.CurrentSession = this; GameMatchmakingManager.Dequeue(this.GameAvatar); ServerRequestManager.Create(new BindServerSocketRequestMessage { SessionId = this.Id, ServerType = 10, ServerId = -1 }, this.m_sockets[1], 10).OnComplete = this.OnHomeServerBound; }
public void DestructGameState() { if (this.GameState != null) { if (this.GameState.GetSimulationServiceNodeType() == SimulationServiceNodeType.BATTLE) { this.SendMessage(new StopSpecifiedServerSessionMessage { ServerType = 27, ServerId = this.m_sockets[27].ServerId }, 1); } else { this.SendMessage(new GameStateNullDataMessage(), 10); } this.GameState = null; } if (this.InMatchmaking) { GameMatchmakingManager.Dequeue(this); } if (this.InDuelMatchmaking) { GameDuelMatchmakingManager.Dequeue(this); } if (this.SpectateLiveReplayId != -1) { ServerMessageManager.SendMessage(new LiveReplayRemoveSpectatorMessage { AccountId = this.SpectateLiveReplayId, SlotId = this.SpectateLiveReplaySlotId, SessionId = this.Id }, 9); this.SpectateLiveReplayId = -1; this.SpectateLiveReplaySlotId = 0; } }