public async Task <ChampionStatic> GetChampionInfoAsync(int champId) { try { var champ = await Task.Run(() => staticApi.GetChampionAsync(Region.na, champId)).ConfigureAwait(false); return(champ); } catch (RiotSharpException ex) { // Handle the exception however you want. await _logging.OnLogAsync(ex).ConfigureAwait(false); return(null); } }
async Task <ListView> loadChampions() { if (App.championList.Count == 0) { var allChampions = await staticApi.GetChampionsAsync(Region.euw, new List <ChampionData> { ChampionData.image }); var tempChampsList = allChampions.Champions.Values.ToList(); foreach (var champ in tempChampsList) { champ.Icon = new UriImageSource { Uri = new Uri(string.Format("https://ddragon.leagueoflegends.com/cdn/{0}/img/champion/{1}", App.appVersion, champ.Image.Full)), CachingEnabled = false }; } App.championList = tempChampsList; } var listView = new ListView(); listView.ItemTemplate = imageTemplate; var tempChamps = App.championList; var tempList2 = tempChamps.OrderBy(x => x.Name).ToList(); var champs = new ObservableCollection <ChampionStatic>(tempList2); listView.ItemsSource = champs; listView.ItemTapped += async(sender, e) => { var myListView = (ListView)sender; var champion = (ChampionStatic)myListView.SelectedItem; UserDialogs.Instance.ShowLoading("Loading " + champion.Name, MaskType.Black); var champPlayed = await staticApi.GetChampionAsync(Region.euw, champion.Id, new List <ChampionData> { RiotSharp.StaticDataEndpoint.ChampionData.all }); UserDialogs.Instance.HideLoading(); await Navigation.PushAsync(new ChampionPage(champPlayed)); }; return(listView); }
public void GetChampionAsync_Test() { var champ = api.GetChampionAsync(Region.euw, 1, ChampionData.all); Assert.AreEqual(champ.Result.Name, "Annie"); }
//Loads the match history public static async Task <ListView> loadMatchHistory(Summoner summoner, Region region) { var allItems = await staticApi.GetItemsAsync(region, ItemData.image); var allSummonerSpells = await staticApi.GetSummonerSpellsAsync(region, SummonerSpellData.image); var previousMatches = await summoner.GetRecentGamesAsync(); var previousAll = new List <Previous>(); for (int i = 0; i < previousMatches.Count; i++) { var gameType = gameTypeName(previousMatches[i].GameSubType); var champPlayed = await staticApi.GetChampionAsync(region, previousMatches[i].ChampionId, ChampionData.image); var summonerSpellList = new List <string> { allSummonerSpells.SummonerSpells.FirstOrDefault(y => y.Value.Id == previousMatches[i].SummonerSpell1).Value.Image.Full, allSummonerSpells.SummonerSpells.FirstOrDefault(y => y.Value.Id == previousMatches[i].SummonerSpell2).Value.Image.Full }; var itemList = new List <ItemStatic> { allItems.Items.FirstOrDefault((x) => x.Value.Id == previousMatches[i].Statistics.Item0).Value, allItems.Items.FirstOrDefault((x) => x.Value.Id == previousMatches[i].Statistics.Item1).Value, allItems.Items.FirstOrDefault((x) => x.Value.Id == previousMatches[i].Statistics.Item2).Value, allItems.Items.FirstOrDefault((x) => x.Value.Id == previousMatches[i].Statistics.Item3).Value, allItems.Items.FirstOrDefault((x) => x.Value.Id == previousMatches[i].Statistics.Item4).Value, allItems.Items.FirstOrDefault((x) => x.Value.Id == previousMatches[i].Statistics.Item5).Value, allItems.Items.FirstOrDefault((x) => x.Value.Id == previousMatches[i].Statistics.Item6).Value }; var itemNameList = new List <string>(); for (int j = 0; j < itemList.Count; j++) { if (itemList[j] != null) { itemNameList.Add(itemList[j].Image.Full); } else { itemNameList.Add("Empty.png"); } } var prev = new Previous( gameType, previousMatches[i].Level, previousMatches[i].Statistics.Win, FormatNumber(previousMatches[i].Statistics.GoldEarned), previousMatches[i].Statistics.MinionsKilled.ToString(), itemNameList, summonerSpellList, champPlayed.Image.Full, previousMatches[i].CreateDate.ToString("g"), previousMatches[i].Statistics.ChampionsKilled + "/" + previousMatches[i].Statistics.NumDeaths + "/" + previousMatches[i].Statistics.Assists, previousMatches[i] ); previousAll.Add(prev); } var imageTemplate = new DataTemplate(typeof(PreviousGameCell)); var MatchList = new ListView { ItemTemplate = imageTemplate, ItemsSource = previousAll, HasUnevenRows = true }; MatchList.ItemTapped += async(object sender, ItemTappedEventArgs e) => { var myListView = (ListView)sender; var myItem = (Previous)myListView.SelectedItem; UserDialogs.Instance.ShowLoading("Loading Game", MaskType.Black); try { Debug.WriteLine(myItem.ThisGame.GameId); await Task.Delay(1000); var match = await api.GetMatchAsync(region, myItem.ThisGame.GameId); var previousPage = await PreviousGamePage.loadPrevious(match, myItem.ThisGame, region, summoner, myItem.ThisGame.FellowPlayers); UserDialogs.Instance.HideLoading(); await SearchPage.Navigation.PushAsync(previousPage); } catch (Exception ex) { UserDialogs.Instance.HideLoading(); Debug.WriteLine(ex); await UserDialogs.Instance.AlertAsync("Are you connected to the internet?\nTry again", "An Error Occured", "Okay"); } }; return(MatchList); }
//Loads the current game if there is one public static async Task <ContentView> loadCurrentGameView(Summoner summoner, Region region, Page SearchPage) { var gameView = new ContentView(); var currentTemplate = new DataTemplate(typeof(ImageCell)); currentTemplate.SetBinding(TextCell.TextProperty, "Name"); currentTemplate.SetBinding(ImageCell.ImageSourceProperty, "Icon"); currentTemplate.SetBinding(TextCell.DetailProperty, "Rank"); try { var currentGame = await api.GetCurrentGameAsync(App.PlatformToRegion(region), summoner.Id); grouped = new ObservableCollection <GroupedSummoners>(); var blueTeam = new GroupedSummoners { LongName = "Blue Team", ShortName = "B" }; var redTeam = new GroupedSummoners { LongName = "Red Team", ShortName = "R" }; var list = new ListView(); var idList = new List <string>(); summoners = new List <Summoner>(); for (int i = 0; i < currentGame.Participants.Count; i++) { idList.Add(currentGame.Participants[i].SummonerName); } summoners = await api.GetSummonersAsync(region, idList); for (int i = 0; i < currentGame.Participants.Count; i++) { for (int j = 0; j < summoners.Count; j++) { if (currentGame.Participants[i].SummonerName == summoners[j].Name) { var champPlayed = await staticApi.GetChampionAsync(region, (int)currentGame.Participants[i].ChampionId, new List <ChampionData> { ChampionData.image }); try { allLeagues = await api.GetLeaguesAsync(region, new List <int> { (int)summoners[j].Id }); ranked5v5League = allLeagues[summoners[j].Id].Single(x => x.Queue == Queue.RankedSolo5x5); div = ranked5v5League.Entries.Where(x => x.PlayerOrTeamId == summoners[j].Id.ToString()).Select(x => x.Division).Single(); if (currentGame.Participants[i].TeamId == 100) { blueTeam.Add(new CurrentGamePlayers(summoners[j].Name, ranked5v5League.Tier + " " + div, (int)currentGame.Participants[i].ChampionId, champPlayed.Icon, summoners[i].Region)); } else if (currentGame.Participants[i].TeamId == 200) { redTeam.Add(new CurrentGamePlayers(summoners[j].Name, ranked5v5League.Tier + " " + div, (int)currentGame.Participants[i].ChampionId, champPlayed.Icon, summoners[i].Region)); } } catch { if (currentGame.Participants[i].TeamId == 100) { blueTeam.Add(new CurrentGamePlayers(summoners[j].Name, "Level " + summoners[i].Level, (int)currentGame.Participants[i].ChampionId, champPlayed.Icon, summoners[i].Region)); } else if (currentGame.Participants[i].TeamId == 200) { redTeam.Add(new CurrentGamePlayers(summoners[j].Name, "Level " + summoners[i].Level, (int)currentGame.Participants[i].ChampionId, champPlayed.Icon, summoners[i].Region)); } } } } } grouped.Add(blueTeam); grouped.Add(redTeam); list.ItemsSource = grouped; list.IsGroupingEnabled = true; list.GroupDisplayBinding = new Binding("LongName"); list.ItemTemplate = currentTemplate; list.ItemTapped += async(object sender, ItemTappedEventArgs e) => { var myListView = (ListView)sender; var myItem = (CurrentGamePlayers)myListView.SelectedItem; try { UserDialogs.Instance.ShowLoading("Loading " + myItem.Name, MaskType.Black); var summonerAsync = await api.GetSummonerAsync(myItem.Region, myItem.Name); var page = SearchPage.Navigation.NavigationStack.Last(); var test = new SearchedSummonerPage(summonerAsync, myItem.Region); UserDialogs.Instance.HideLoading(); await SearchPage.Navigation.PushAsync(test); SearchPage.Navigation.RemovePage(page); } catch { UserDialogs.Instance.Alert("Whoops", "Something went wrong", "Okay"); } }; if (!DependencyService.Get <ISaveAndLoad>().FileExists("haveyou")) { var adView = new AdMobView { WidthRequest = 320, HeightRequest = 50 }; list.Header = adView; } gameView.Content = list; } catch { gameView.Content = new Label { Text = summoner.Name + " is not in an active game. Please try again later if the summoner is currently in game." }; } return(gameView); }
public ProfilePage(Summoner summoner, Region region) { InitializeComponent(); search.IsVisible = false; nameText.BackgroundColor = Color.FromRgba(0, 0, 0, 0.6); Title = "Profile"; storeService = DependencyService.Get <ICredentialsService>(); var logoutButton = new ToolbarItem { Text = "Logout", Priority = 1 }; var searchButton = new ToolbarItem { Text = "Search", Icon = "Search.png", Priority = 0 }; ToolbarItems.Add(logoutButton); ToolbarItems.Add(searchButton); logoutButton.Clicked += async(sender, e) => { var logout = await UserDialogs.Instance.ConfirmAsync("", "Are you sure you want to Logout?", "Yes", "No"); if (logout) { if (storeService.DoCredentialsExist()) { storeService.DeleteCredentials(); Application.Current.MainPage = new NavigationPage(new loginXaml()); await Navigation.PopToRootAsync(); } } }; search.ScopeChanged += (sender, e) => { searchRegion = App.regFromString(search.SelectedScopeText); }; searchButton.Clicked += (sender, e) => { if (search.IsFocused) { search.Unfocus(); searchFilterControl.Unfocus(); } else { search.IsVisible = true; search.Focus(); } }; search.SearchButtonPressed += async(sender, e) => { string searchText = System.Net.WebUtility.HtmlEncode(search.Text); //search.Text.Replace(" ", ""); search.Text = ""; search.Unfocus(); try { UserDialogs.Instance.ShowLoading("Loading", MaskType.Black); var searchedSummoner = await App.api.GetSummonerAsync(searchRegion, searchText); icon = string.Format(icon, searchedSummoner.Region, searchedSummoner.Id); var test = new SearchedSummonerPage(searchedSummoner, searchedSummoner.Region); UserDialogs.Instance.HideLoading(); await Navigation.PushAsync(test); } catch { UserDialogs.Instance.HideLoading(); await UserDialogs.Instance.AlertAsync("Try again", "Summoner not found!", "Okay"); } }; var task = Task.Run(async() => { if (freqPlayedChamp.Source == null) { GameList = await api.GetRecentGamesAsync(region, summoner.Id); var freqPlayed = GameList.GroupBy(q => q.ChampionId) .OrderByDescending(gp => gp.Count()) .Select(g => g.Key) .First(); var championPlayedMost = await staticApi.GetChampionAsync(Reg, (int)freqPlayed, new List <ChampionData> { ChampionData.skins }); freqPlayedChamp.Source = new UriImageSource { Uri = new Uri(string.Format(skinString, championPlayedMost.Key, championPlayedMost.Skins[0].Num)), CachingEnabled = false }; updated = true; } }); task.Wait(); search.Unfocused += (sender, e) => { search.IsVisible = false; }; Reg = region; Summoner = summoner; filterControl = new FilterControl { Items = new List <string> { "Match History", "Ranked", "Current Game", "Champions" } }; filterControl.SelectedIndex = 0; contentViewFilter.Content = filterControl; //contentVue.VerticalOptions = LayoutOptions.FillAndExpand; nameText.Text = "\n\t\t " + summoner.Name; summonerIcon.Source = new UriImageSource { Uri = new Uri(string.Format(icon, region, summoner.Id)), CachingEnabled = true }; switch (App.device.HardwareVersion) { case "iPhone SE": case "iPhone 5S": case "iPhone 5S GSM": case "iPhone 5S CDMA": case "iPhone 5": case "iPhone 5 GSM": case "iPhone 5 CDMA": contentVue.HeightRequest = 230; break; case "iPhone 6": case "iPhone 6S": case "iPhone 7": contentVue.HeightRequest = 330; break; case "iPhone 6+": case "iPhone 6s+": case "iPhone 6 Plus": case "iPhone 6S Plus": case "iPhone 7 Plus": case "iPhone 7+": contentVue.HeightRequest = 410; break; } try { allLeagues = api.GetLeagues(region, new List <int> { (int)summoner.Id }); ranked5v5League = allLeagues[summoner.Id].Single(x => x.Queue == Queue.RankedSolo5x5); filterControl.Items = new List <string> { "Match History", "Ranked", "Current Game" }; } catch { filterControl.Items = new List <string> { "Match History", "Current Game" }; } filterControl.SelectedIndexChanged += async(object sender, EventArgs e) => { UserDialogs.Instance.ShowLoading("Loading", MaskType.Black); try { allLeagues = await api.GetLeaguesAsync(region, new List <int> { (int)summoner.Id }); ranked5v5League = allLeagues[summoner.Id].Single(x => x.Queue == Queue.RankedSolo5x5); switch (filterControl.SelectedIndex) { case 0: var MatchList = await loadMatchHistory(summoner, region, this); contentVue.Content = MatchList; UserDialogs.Instance.HideLoading(); break; case 1: var statsPage = await loadRanked(summoner, summoner.Region, this); contentVue.Content = statsPage; UserDialogs.Instance.HideLoading(); break; case 2: currentGameView = await loadCurrentGameView(summoner, summoner.Region, this); contentVue.Content = currentGameView; UserDialogs.Instance.HideLoading(); break; } } catch { switch (filterControl.SelectedIndex) { case 0: var MatchList = await loadMatchHistory(summoner, region, this); contentVue.Content = MatchList; UserDialogs.Instance.HideLoading(); break; case 1: currentGameView = await loadCurrentGameView(summoner, summoner.Region, this); contentVue.Content = currentGameView; UserDialogs.Instance.HideLoading(); break; } } }; var soloRankString = ""; var soloIcon = ""; var flexRankString = ""; var flexIcon = ""; try { div = ranked5v5League.Entries.Where(x => x.PlayerOrTeamId == summoner.Id.ToString()).Select(x => x.Division).Single(); var soloLP = ranked5v5League.Entries.FirstOrDefault(x => x.PlayerOrTeamName == summoner.Name).LeaguePoints; soloRankString = ranked5v5League.Tier + " " + div + " " + soloLP + "LP\nSolo Queue"; switch (ranked5v5League.Tier) { case RiotSharp.LeagueEndpoint.Enums.Tier.Bronze: soloIcon = "Bronze.png"; break; case RiotSharp.LeagueEndpoint.Enums.Tier.Silver: soloIcon = "Silver.png"; break; case RiotSharp.LeagueEndpoint.Enums.Tier.Gold: soloIcon = "Gold.png"; break; case RiotSharp.LeagueEndpoint.Enums.Tier.Platinum: soloIcon = "Platinum.png"; break; case RiotSharp.LeagueEndpoint.Enums.Tier.Diamond: soloIcon = "Diamond.png"; break; case RiotSharp.LeagueEndpoint.Enums.Tier.Master: soloIcon = "Master.png"; break; case RiotSharp.LeagueEndpoint.Enums.Tier.Challenger: soloIcon = "Challenger.png"; break; } } catch { soloRankString = "Unranked"; soloIcon = "Unranked.png"; } try { rankedFlexLeague = allLeagues[summoner.Id].Single(x => x.Queue == Queue.RankedFlexSR); flexDiv = rankedFlexLeague.Entries.Where(x => x.PlayerOrTeamId == summoner.Id.ToString()).Select(x => x.Division).Single(); var flexLP = rankedFlexLeague.Entries.FirstOrDefault(x => x.PlayerOrTeamName == summoner.Name).LeaguePoints; flexRankString = rankedFlexLeague.Tier + " " + flexDiv + " " + flexLP + "LP\nFlex 5v5"; switch (rankedFlexLeague.Tier) { case RiotSharp.LeagueEndpoint.Enums.Tier.Bronze: flexIcon = "Bronze.png"; break; case RiotSharp.LeagueEndpoint.Enums.Tier.Silver: flexIcon = "Silver.png"; break; case RiotSharp.LeagueEndpoint.Enums.Tier.Gold: flexIcon = "Gold.png"; break; case RiotSharp.LeagueEndpoint.Enums.Tier.Platinum: flexIcon = "Platinum.png"; break; case RiotSharp.LeagueEndpoint.Enums.Tier.Diamond: flexIcon = "Diamond.png"; break; case RiotSharp.LeagueEndpoint.Enums.Tier.Master: flexIcon = "Master.png"; break; case RiotSharp.LeagueEndpoint.Enums.Tier.Challenger: flexIcon = "Challenger.png"; break; } } catch { flexRankString = "Unranked"; flexIcon = "Unranked.png"; } var grid = new Grid { RowDefinitions = { new RowDefinition { Height = new GridLength(50, GridUnitType.Absolute) } }, ColumnDefinitions = { new ColumnDefinition { Width = new GridLength(50, GridUnitType.Absolute) }, new ColumnDefinition { Width = GridLength.Auto }, new ColumnDefinition { Width = new GridLength(50, GridUnitType.Absolute) }, new ColumnDefinition { Width = GridLength.Auto }, } }; grid.Children.Add(new Image { Source = soloIcon }, 0, 0); grid.Children.Add(new Label { TextColor = Color.White, Text = soloRankString }, 1, 0); grid.Children.Add(new Image { Source = flexIcon }, 2, 0); grid.Children.Add(new Label { TextColor = Color.White, Text = flexRankString }, 3, 0); grid.BackgroundColor = Color.FromRgba(0, 0, 0, 0.6); rankedImagesStuff.Content = grid; }