/// <summary> /// When invited to a team /// </summary> /// <param name="Message"></param> public TeamQueuePage(bool IsCreator) { InitializeComponent(); Client.InviteListView = InviteListView; Client.PVPNet.Accept(InviteId.ToString()); string ObfuscatedName = Client.GetObfuscatedChatroomName(InviteId.ToString(), ChatPrefixes.Arranging_Game); string JID = Client.GetChatroomJID(ObfuscatedName, "0", true); newRoom = Client.ConfManager.GetRoom(new jabber.JID(JID)); newRoom.Nickname = Client.LoginPacket.AllSummonerData.Summoner.Name; newRoom.OnRoomMessage += newRoom_OnRoomMessage; newRoom.OnParticipantJoin += newRoom_OnParticipantJoin; newRoom.Join(); IsOwner = IsCreator; if (IsCreator) { InviteButton.IsEnabled = true; StartGameButton.IsEnabled = true; } else { InviteButton.IsEnabled = false; StartGameButton.IsEnabled = false; } Client.OnMessage += Client_OnMessage; }
public ChatText() { InitializeComponent(); newRoom = Client.ConfManager.GetRoom(new jabber.JID("[email protected]")); newRoom.Nickname = Client.LoginPacket.AllSummonerData.Summoner.Name; newRoom.OnRoomMessage += newRoom_OnRoomMessage; newRoom.OnParticipantJoin += newRoom_OnParticipantJoin; newRoom.Join(); }
/// <summary> /// When invited to a team /// </summary> /// <param name="Message"></param> public TeamQueuePage(Message Message, bool IsCreator) { InitializeComponent(); MessageData = Message; Client.InviteListView = InviteListView; using (XmlReader reader = XmlReader.Create(new StringReader(Message.Body))) { while (reader.Read()) { if (reader.IsStartElement()) { #region Parse Popup switch (reader.Name) { case "inviteId": reader.Read(); InviteId = Convert.ToInt64(reader.Value); break; } #endregion Parse Popup } } } Client.PVPNet.AcceptInviteForMatchmakingGame(InviteId.ToString()); string ObfuscatedName = Client.GetObfuscatedChatroomName(InviteId.ToString(), ChatPrefixes.Arranging_Game); string JID = Client.GetChatroomJID(ObfuscatedName, "0", true); newRoom = Client.ConfManager.GetRoom(new jabber.JID(JID)); newRoom.Nickname = Client.LoginPacket.AllSummonerData.Summoner.Name; newRoom.OnRoomMessage += newRoom_OnRoomMessage; newRoom.OnParticipantJoin += newRoom_OnParticipantJoin; newRoom.Join(); IsOwner = IsCreator; if (IsCreator) { InviteButton.IsEnabled = true; StartGameButton.IsEnabled = true; } else { InviteButton.IsEnabled = false; StartGameButton.IsEnabled = false; } Client.OnMessage += Client_OnMessage; }
public EndOfGamePage(EndOfGameStats Statistics) { InitializeComponent(); RenderStats(Statistics); Client.SwitchPage(new MainPage()); Client.runonce = false; string ObfuscatedName = Client.GetObfuscatedChatroomName(Statistics.RoomName, ChatPrefixes.Post_Game); //Why do you need to replace INVID with invid Riot? string JID = Client.GetChatroomJID(ObfuscatedName, Statistics.RoomPassword, false); newRoom = Client.ConfManager.GetRoom(new jabber.JID(JID)); newRoom.Nickname = Client.LoginPacket.AllSummonerData.Summoner.Name; newRoom.OnRoomMessage += newRoom_OnRoomMessage; newRoom.OnParticipantJoin += newRoom_OnParticipantJoin; newRoom.Join(Statistics.RoomPassword); }
/// <summary> /// Initializes all data required for champion select. Also retrieves latest GameDTO /// </summary> private async void StartChampSelect() { //Force client to popup once in champion select Client.FocusClient(); //Get champions and sort alphabetically ChampList = new List<ChampionDTO>(Client.PlayerChampions); ChampList.Sort((x, y) => champions.GetChampion(x.ChampionId).displayName.CompareTo(champions.GetChampion(y.ChampionId).displayName)); //Retrieve masteries and runes MyMasteries = Client.LoginPacket.AllSummonerData.MasteryBook; MyRunes = Client.LoginPacket.AllSummonerData.SpellBook; //Put masteries & runes into combo boxes int i = 0; foreach (MasteryBookPageDTO MasteryPage in MyMasteries.BookPages) { string MasteryPageName = MasteryPage.Name; //Stop garbage mastery names if (MasteryPageName.StartsWith("@@")) { MasteryPageName = "Mastery Page " + ++i; } MasteryComboBox.Items.Add(MasteryPageName); if (MasteryPage.Current) MasteryComboBox.SelectedValue = MasteryPageName; } i = 0; foreach (SpellBookPageDTO RunePage in MyRunes.BookPages) { string RunePageName = RunePage.Name; //Stop garbage rune names if (RunePageName.StartsWith("@@")) { RunePageName = "Rune Page " + ++i; } RuneComboBox.Items.Add(RunePageName); if (RunePage.Current) RuneComboBox.SelectedValue = RunePageName; } //Allow runes & masteries to be changed QuickLoad = true; //Signal to the server we are in champion select await Client.PVPNet.SetClientReceivedGameMessage(Client.GameID, "CHAMP_SELECT_CLIENT"); //Retrieve the latest GameDTO GameDTO latestDTO = await Client.PVPNet.GetLatestGameTimerState(Client.GameID, Client.ChampSelectDTO.GameState, Client.ChampSelectDTO.PickTurn); //Find the game config for timers configType = Client.LoginPacket.GameTypeConfigs.Find(x => x.Id == latestDTO.GameTypeConfigId); if (configType == null) //Invalid config... abort! { Client.QuitCurrentGame(); MessageOverlay overlay = new MessageOverlay(); overlay.MessageTextBox.Text = "Invalid Config ID (" + latestDTO.GameTypeConfigId.ToString() + "). Report to Snowl [https://github.com/Snowl/LegendaryClient/issues/new]"; overlay.MessageTitle.Content = "Invalid Config"; Client.OverlayContainer.Content = overlay.Content; Client.OverlayContainer.Visibility = Visibility.Visible; return; } counter = configType.MainPickTimerDuration - 5; //Seems to be a 5 second inconsistancy with riot and what they actually provide CountdownTimer = new System.Windows.Forms.Timer(); CountdownTimer.Tick += new EventHandler(CountdownTimer_Tick); CountdownTimer.Interval = 1000; // 1 second CountdownTimer.Start(); LatestDto = latestDTO; //Get the champions for the other team to ban & sort alpabetically ChampionBanInfoDTO[] ChampsForBan = await Client.PVPNet.GetChampionsForBan(); ChampionsForBan = new List<ChampionBanInfoDTO>(ChampsForBan); ChampionsForBan.Sort((x, y) => champions.GetChampion(x.ChampionId).displayName.CompareTo(champions.GetChampion(y.ChampionId).displayName)); //Join champion select chatroom string JID = Client.GetChatroomJID(latestDTO.RoomName.Replace("@sec", ""), latestDTO.RoomPassword, false); Chatroom = Client.ConfManager.GetRoom(new jabber.JID(JID)); Chatroom.Nickname = Client.LoginPacket.AllSummonerData.Summoner.Name; Chatroom.OnRoomMessage += Chatroom_OnRoomMessage; Chatroom.OnParticipantJoin += Chatroom_OnParticipantJoin; Chatroom.Join(latestDTO.RoomPassword); //Render our champions RenderChamps(false); //Start recieving champ select ChampSelect_OnMessageReceived(this, latestDTO); Client.OnFixChampSelect += ChampSelect_OnMessageReceived; Client.PVPNet.OnMessageReceived += ChampSelect_OnMessageReceived; }
private void GameLobby_OnMessageReceived(object sender, object message) { if (message.GetType() == typeof(GameDTO)) { GameDTO dto = message as GameDTO; Dispatcher.BeginInvoke(DispatcherPriority.Input, new ThreadStart(async () => { MapId = dto.MapId; GameId = dto.Id; if (!HasConnectedToChat) { //Run once BaseMap map = BaseMap.GetMap(dto.MapId); MapLabel.Content = map.DisplayName; ModeLabel.Content = Client.TitleCaseString(dto.GameMode); GameTypeConfigDTO configType = Client.LoginPacket.GameTypeConfigs.Find(x => x.Id == dto.GameTypeConfigId); TypeLabel.Content = GetGameMode(configType.Id); SizeLabel.Content = dto.MaxNumPlayers / 2 + "v" + dto.MaxNumPlayers / 2; HasConnectedToChat = true; string ObfuscatedName = Client.GetObfuscatedChatroomName(dto.Name.ToLower() + Convert.ToInt32(dto.Id), ChatPrefixes.Arranging_Practice); string JID = Client.GetChatroomJID(ObfuscatedName, dto.RoomPassword, false); newRoom = Client.ConfManager.GetRoom(new jabber.JID(JID)); newRoom.Nickname = Client.LoginPacket.AllSummonerData.Summoner.Name; newRoom.OnRoomMessage += newRoom_OnRoomMessage; newRoom.OnParticipantJoin += newRoom_OnParticipantJoin; newRoom.Join(dto.RoomPassword); } if (dto.GameState == "TEAM_SELECT") { OptomisticLock = dto.OptimisticLock; LaunchedTeamSelect = false; BlueTeamListView.Items.Clear(); PurpleTeamListView.Items.Clear(); List<Participant> AllParticipants = new List<Participant>(dto.TeamOne.ToArray()); AllParticipants.AddRange(dto.TeamTwo); int i = 0; bool PurpleSide = false; foreach (Participant playerTeam in AllParticipants) { i++; CustomLobbyPlayer lobbyPlayer = new CustomLobbyPlayer(); if (playerTeam is PlayerParticipant) { PlayerParticipant player = playerTeam as PlayerParticipant; lobbyPlayer = RenderPlayer(player, dto.OwnerSummary.SummonerId == player.SummonerId); IsOwner = dto.OwnerSummary.SummonerId == Client.LoginPacket.AllSummonerData.Summoner.SumId; StartGameButton.IsEnabled = IsOwner; WhitelistAddButton.IsEnabled = IsOwner; if (Client.Whitelist.Count > 0) { if (!Client.Whitelist.Contains(player.SummonerName.ToLower()) && player.SummonerId != Client.LoginPacket.AllSummonerData.Summoner.SumId && IsOwner) { await Client.PVPNet.BanUserFromGame(Client.GameID, player.AccountId); } } } if (i > dto.TeamOne.Count) { i = 0; PurpleSide = true; } if (!PurpleSide) { BlueTeamListView.Items.Add(lobbyPlayer); } else { PurpleTeamListView.Items.Add(lobbyPlayer); } } } else if (dto.GameState == "CHAMP_SELECT" || dto.GameState == "PRE_CHAMP_SELECT") { if (!LaunchedTeamSelect) { Client.ChampSelectDTO = dto; Client.LastPageContent = Client.Container.Content; Client.SwitchPage(new ChampSelectPage()); LaunchedTeamSelect = true; } } })); } }
public async void LoadStats() { i = 10; PingTimer = new Timer(1000); PingTimer.Elapsed += new ElapsedEventHandler(PingElapsed); PingTimer.Enabled = true; PingElapsed(1, null); InviteButton.IsEnabled = false; StartGameButton.IsEnabled = false; if (CurrentLobby == null) { //Yay fixed lobby. Riot hates me still though. They broke this earlier, except I have fixed it CurrentLobby = await Client.PVPNet.getLobbyStatus(); } string ObfuscatedName = Client.GetObfuscatedChatroomName(CurrentLobby.InvitationID.Replace("INVID", "invid"), ChatPrefixes.Arranging_Game); //Why do you need to replace INVID with invid Riot? string JID = Client.GetChatroomJID(ObfuscatedName, CurrentLobby.ChatKey, false); newRoom = Client.ConfManager.GetRoom(new jabber.JID(JID)); newRoom.Nickname = Client.LoginPacket.AllSummonerData.Summoner.Name; newRoom.OnRoomMessage += newRoom_OnRoomMessage; newRoom.OnParticipantJoin += newRoom_OnParticipantJoin; newRoom.Join(CurrentLobby.ChatKey); ///Way smarter way then just putting the code here RenderLobbyData(); }
private void Authenticated(object sender, AuthenticationEventArgs e) { room = JabberSession.ConferenceManager.GetRoom(ConferenceJid); room.OnJoin += r => JabberSession.Invoke(() => room_OnJoin(r)); room.OnLeave += (r, p) => JabberSession.Invoke(() => room_OnLeave(r, p)); room.OnSubjectChange += room_OnSubjectChange; room.OnPresenceError += (r, p) => JabberSession.Invoke(() => room_OnPresenceError(r, p)); room.OnSelfMessage += (s, msg) => JabberSession.Invoke(() => room_OnSelfMessage(s, msg)); room.OnAdminMessage += (s, msg) => JabberSession.Invoke(() => room_OnAdminMessage(s, msg)); room.OnRoomMessage += (s, msg) => JabberSession.Invoke(() => room_OnRoomMessage(s, msg)); room.OnParticipantJoin += (r, p) => JabberSession.Invoke(() => room_OnParticipantJoin(r, p)); room.OnParticipantLeave += (r, p) => JabberSession.Invoke(() => room_OnParticipantLeave(r, p)); room.Join(); }
/// <summary> /// Use this to connect to chat /// </summary> /// <param name="ChatJID"></param> /// <param name="Pass"></param> private void ConenctToChat(string ChatJID, string Pass) { string JID = Client.GetChatroomJID(ChatJID, Pass, false); newRoom = Client.ConfManager.GetRoom(new jabber.JID(JID)); newRoom.Nickname = Client.LoginPacket.AllSummonerData.Summoner.Name; newRoom.OnRoomMessage += newRoom_OnRoomMessage; newRoom.OnParticipantJoin += newRoom_OnParticipantJoin; newRoom.Join(Pass); connectedToChat = true; }
private async void StartChampSelect() { Client.FocusClient(); Champions = Client.PlayerChampions; MyMasteries = Client.LoginPacket.AllSummonerData.MasteryBook; MyRunes = Client.LoginPacket.AllSummonerData.SpellBook; int i = 0; foreach (MasteryBookPageDTO MasteryPage in MyMasteries.BookPages) { string MasteryPageName = MasteryPage.Name; if (MasteryPageName.StartsWith("@@")) { MasteryPageName = "Mastery Page " + ++i; } MasteryComboBox.Items.Add(MasteryPageName); if (MasteryPage.Current) MasteryComboBox.SelectedValue = MasteryPageName; } i = 0; foreach (SpellBookPageDTO RunePage in MyRunes.BookPages) { string RunePageName = RunePage.Name; if (RunePageName.StartsWith("@@")) { RunePageName = "Rune Page " + ++i; } RuneComboBox.Items.Add(RunePageName); if (RunePage.Current) RuneComboBox.SelectedValue = RunePageName; } QuickLoad = true; await Client.PVPNet.SetClientReceivedGameMessage(Client.GameID, "CHAMP_SELECT_CLIENT"); GameDTO latestDTO = await Client.PVPNet.GetLatestGameTimerState(Client.GameID, Client.ChampSelectDTO.GameState, Client.ChampSelectDTO.PickTurn); configType = Client.LoginPacket.GameTypeConfigs.Find(x => x.Id == latestDTO.GameTypeConfigId); if (configType == null) //Invalid config... abort! { Client.PVPNet.OnMessageReceived -= ChampSelect_OnMessageReceived; await Client.PVPNet.QuitGame(); Client.ClearPage(this); Client.SwitchPage(new MainPage()); MessageOverlay overlay = new MessageOverlay(); overlay.MessageTextBox.Text = "Invalid Config ID (" + latestDTO.GameTypeConfigId.ToString() + "). Report to Snowl [https://github.com/Snowl/LegendaryClient/issues/new]"; overlay.MessageTitle.Content = "Invalid Config"; Client.OverlayContainer.Content = overlay.Content; Client.OverlayContainer.Visibility = Visibility.Visible; return; } counter = configType.MainPickTimerDuration - 5; //Seems to be a 5 second inconsistancy with riot and what they actually provide CountdownTimer = new System.Windows.Forms.Timer(); CountdownTimer.Tick += new EventHandler(CountdownTimer_Tick); CountdownTimer.Interval = 1000; // 1 second CountdownTimer.Start(); LatestDto = latestDTO; string JID = Client.GetChatroomJID(latestDTO.RoomName.Replace("@sec", ""), latestDTO.RoomPassword, false); Chatroom = Client.ConfManager.GetRoom(new jabber.JID(JID)); Chatroom.Nickname = Client.LoginPacket.AllSummonerData.Summoner.Name; Chatroom.OnRoomMessage += Chatroom_OnRoomMessage; Chatroom.OnParticipantJoin += Chatroom_OnParticipantJoin; Chatroom.Join(latestDTO.RoomPassword); List<ChampionDTO> champList = new List<ChampionDTO>(Champions); champList.Sort((x, y) => champions.GetChampion(x.ChampionId).displayName.CompareTo(champions.GetChampion(y.ChampionId).displayName)); foreach (ChampionDTO champ in champList) { if (champ.Owned || champ.FreeToPlay) { MyChamps.Add(champ); //Add to ListView ListViewItem item = new ListViewItem(); ChampionImage championImage = new ChampionImage(); championImage.ChampImage.Source = champions.GetChampion(champ.ChampionId).icon; if (champ.FreeToPlay) championImage.FreeToPlayLabel.Visibility = Visibility.Visible; championImage.Width = 64; championImage.Height = 64; item.Tag = champ.ChampionId; item.Content = championImage.Content; ChampionSelectListView.Items.Add(item); } } ChampSelect_OnMessageReceived(this, latestDTO); Client.PVPNet.OnMessageReceived += ChampSelect_OnMessageReceived; }