示例#1
0
        public void SelectGameServer(Model.GameServer gameServer)
        {
            if (gameServer != null)
            {
                GameServer = gameServer;
            }
            else
            {
                throw new ArgumentNullException();
            }

            SendPacket(new Packet.Client.RequestServerLogin()
            {
                ServerId = (byte)gameServer.Id,
                LoginKey = LoginKey
            });
        }
示例#2
0
        /// <returns>Character list</returns>
        public IEnumerable <Model.Player> SelectServer(Model.GameServer server)        // Todo: SocketException
        {
            lock (Sync)
            {
                LoginServer.SelectGameServer(server);
                var result = Wait(r => r is Result.ServerSelected | r is Result.PlayFail);

                if (result is Result.ServerSelected)
                {
                    lock (Sync)
                    {
                        var sk = (Result.ServerSelected)result;
                        GameServer.Connect(server, Identity.Login, sk.LoginKey, sk.GameKey, Config.Protocol);
                        var cl = Wait(r => r is Result.GameConnected) as Result.GameConnected;
                        return(cl.Characters);
                    }
                }
                else
                {
                    throw new PlayFailException((Result.PlayFail)result);
                }
            }
        }