Пример #1
0
        public void JoinGame(ClientSocket client, MediusJoinGameRequest request)
        {
            var game = Program.GetGameById(request.MediusWorldID);

            if (game == null)
            {
                client.ClientObject.AddLobbyMessage(new RT_MSG_SERVER_APP()
                {
                    AppMessage = new MediusJoinGameResponse()
                    {
                        MessageID  = request.MessageID,
                        StatusCode = MediusCallbackStatus.MediusGameNotFound
                    }
                });
            }
            else if (game.GamePassword != null && game.GamePassword != string.Empty && game.GamePassword != request.GamePassword)
            {
                client.ClientObject.AddLobbyMessage(new RT_MSG_SERVER_APP()
                {
                    AppMessage = new MediusJoinGameResponse()
                    {
                        MessageID  = request.MessageID,
                        StatusCode = MediusCallbackStatus.MediusInvalidPassword
                    }
                });
            }
            else
            {
                var dme = game.DMEServer;
                dme.AddProxyMessage(new RT_MSG_SERVER_APP()
                {
                    AppMessage = new MediusServerJoinGameRequest()
                    {
                        MessageID   = $"{game.Id}-{client.ClientObject.ClientAccount.AccountId}-{request.MessageID}",
                        ConnectInfo = new NetConnectionInfo()
                        {
                            Type       = NetConnectionType.NetConnectionTypeClientServerTCPAuxUDP,
                            WorldID    = game.DMEWorldId,
                            SessionKey = request.SessionKey,
                            ServerKey  = Program.GlobalAuthPublic
                        }
                    }
                });
            }
        }
Пример #2
0
        public void JoinGame(ClientObject client, MediusJoinGameRequest request)
        {
            var game = GetGameByGameId(request.MediusWorldID);

            if (game == null)
            {
                client.Queue(new MediusJoinGameResponse()
                {
                    MessageID  = request.MessageID,
                    StatusCode = MediusCallbackStatus.MediusGameNotFound
                });
            }
            else if (game.GamePassword != null && game.GamePassword != string.Empty && game.GamePassword != request.GamePassword)
            {
                client.Queue(new MediusJoinGameResponse()
                {
                    MessageID  = request.MessageID,
                    StatusCode = MediusCallbackStatus.MediusInvalidPassword
                });
            }
            else if (game.PlayerCount >= game.MaxPlayers)
            {
                client.Queue(new MediusJoinGameResponse()
                {
                    MessageID  = request.MessageID,
                    StatusCode = MediusCallbackStatus.MediusWorldIsFull
                });
            }
            else
            {
                var dme = game.DMEServer;
                dme.Queue(new MediusServerJoinGameRequest()
                {
                    MessageID   = new MessageId($"{game.Id}-{client.AccountId}-{request.MessageID}"),
                    ConnectInfo = new NetConnectionInfo()
                    {
                        Type       = NetConnectionType.NetConnectionTypeClientServerTCPAuxUDP,
                        WorldID    = game.DMEWorldId,
                        SessionKey = client.SessionKey,
                        ServerKey  = Program.GlobalAuthPublic
                    }
                });
            }
        }