/// <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); } } }