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;
                }
            }
        }
Ejemplo n.º 2
0
        public override void Destruct()
        {
            GameAvatarManager.ExecuteServerCommandsInOfflineMode(this.GameAvatar);
            GameAvatarManager.Save(this.GameAvatar);
            GameMatchmakingManager.Enqueue(this.GameAvatar);

            this.GameAvatar.CurrentSession = null;

            this.DestructGameState();
            base.Destruct();
        }
Ejemplo n.º 3
0
        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;
            }
        }
Ejemplo n.º 5
0
        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;
        }
Ejemplo n.º 6
0
        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;
            }
        }