public static new TBDLobby CreateLobby(int queueId) { var lobby = new TBDLobby(queueId); Session.Current.CurrentLobby = lobby; var guid = RiotServices.TeambuilderDraftService.CreateDraftPremade(queueId); RiotServices.AddHandler(guid, lcds => { lobby.GotGameData(lcds); var task = RiotServices.GameInvitationService.CreateGroupFinderLobby(queueId, lobby.GroupData.Phase.PremadeID.ToString()); task.ContinueWith(t => lobby.GotLobbyStatus(t.Result)); }); return(lobby); }
public static async Task <Session> Login(string user, string pass) { var client = new Session(); client.LoginQueue = await RiotServices.GetAuthKey(Region, user, pass); if (client.LoginQueue.Token == null) { throw new AuthenticationException(); } var context = RiotServices.RegisterObjects(); client.RtmpConn = RiotServices.Client = new RtmpClient(new Uri("rtmps://" + Region.MainServer + ":2099"), context, RtmpSharp.IO.ObjectEncoding.Amf3); client.RtmpConn.MessageReceived += client.RtmpConn_MessageReceived; client.RtmpConn.Disconnected += client.RtmpConn_Disconnected; await client.RtmpConn.ConnectAsync(); var creds = new AuthenticationCredentials(); creds.Username = user; creds.Password = pass; creds.ClientVersion = DataDragon.CurrentVersion; creds.Locale = Locale; creds.Domain = "lolclient.lol.riotgames.com"; creds.AuthToken = client.LoginQueue.Token; var loginSession = await RiotServices.LoginService.Login(creds); var bc = $"bc-{loginSession.AccountSummary.AccountId}"; var gn = $"gn-{loginSession.AccountSummary.AccountId}"; var cn = $"cn-{loginSession.AccountSummary.AccountId}"; var tasks = new[] { client.RtmpConn.SubscribeAsync("my-rtmps", "messagingDestination", "bc", bc), client.RtmpConn.SubscribeAsync("my-rtmps", "messagingDestination", gn, gn), client.RtmpConn.SubscribeAsync("my-rtmps", "messagingDestination", cn, cn), }; await Task.WhenAll(tasks); bool authed = await client.RtmpConn.LoginAsync(creds.Username.ToLower(), loginSession.Token); string state = await RiotServices.AccountService.GetAccountState(); client.Account = new Account(loginSession, await RiotServices.ClientFacadeService.GetLoginDataPacketForUser()); client.Leagues = await RiotServices.LeaguesService.GetAllLeaguesForPlayer(client.Account.SummonerID); client.Connected = true; client.ReconnectToken = Convert.ToBase64String(Encoding.UTF8.GetBytes(client.Account.Name + ":" + client.LoginQueue.Token)); client.StartHeartbeat(); new Thread(() => { RiotServices.MatchmakerService.GetAvailableQueues().ContinueWith(client.GotQueues); RiotServices.InventoryService.GetAvailableChampions().ContinueWith(client.GotChampions); RiotServices.SummonerTeamService.CreatePlayer().ContinueWith(client.GotRankedTeamInfo); RiotServices.GameInvitationService.GetPendingInvitations().ContinueWith(t => { foreach (var invite in t.Result) { if (invite is InvitationRequest) { client.OnInvited((InvitationRequest)invite); } } }); }).Start(); client.EnabledMaps = new List <int>(); foreach (var item in client.Account.LoginPacket.ClientSystemStates.gameMapEnabledDTOList) { client.EnabledMaps.Add((int)item["gameMapId"]); } if (state?.Equals("ENABLED") != true) { Console.WriteLine(state); RiotServices.Client = null; throw new AuthenticationException(state); } client.Settings = LoadSettings <UserSettings>(user); client.Settings.ProfileIcon = client.Account.ProfileIconID; client.Settings.SummonerName = client.Account.Name; client.SummonerCache = new SummonerCache(); Current = client; client.ChatManager = new RiotChat(); return(client); }