public SummonerSpellListStaticWrapper(SummonerSpellListStatic spells, Language language , string version) { SummonerSpellListStatic = spells; Language = language; Version = version; }
public SummonerSpellListStaticWrapper(SummonerSpellListStatic spells, Language language , SummonerSpellData summonerSpellData) { SummonerSpellListStatic = spells; Language = language; SummonerSpellData = summonerSpellData; }
/// <summary> /// Initialize the static data store by pulling down all data we care about. /// </summary> public static void Initialize(StaticRiotApi riotStaticApi) { var realms = Enum.GetValues(typeof(Region)).OfType <Region>().AsParallel().WithDegreeOfParallelism(4).Select(region => new { Region = region, Realm = riotStaticApi.GetRealm(region) }).ToList(); Version = realms.Max(realm => new RiotVersion(realm.Realm.V)); var filteredRealms = realms.Where(realm => Version.IsSamePatch(new RiotVersion(realm.Realm.V))); // Get data for all valid realms Realms = filteredRealms.ToDictionary(realm => realm.Region, realm => new RealmStaticData(riotStaticApi, realm.Realm, realm.Region)); // Try getting NA data if available RealmStaticData primaryrealm; if (!Realms.TryGetValue(Region.na, out primaryrealm)) { // Try to find an english realm primaryrealm = Realms.FirstOrDefault(kvp => kvp.Value.Realm.L.Contains("en")).Value; // If we can't find english data, give up and just choose the first realm if (primaryrealm == null) { primaryrealm = Realms.FirstOrDefault().Value; } // If there are no realms, just return if (primaryrealm == null) { return; } } Champions = primaryrealm.Champions; Items = primaryrealm.Items; SummonerSpells = primaryrealm.SummonerSpells; }
private Feitico AdicionarFeitico(int spellId, SummonerSpellListStatic spells, string versao) { if (spellId > 0) { try { var feitico = spells.SummonerSpells.First(x => x.Value.Id == spellId); return(new Feitico { Nome = feitico.Value.Name, UrlIcone = $"//ddragon.leagueoflegends.com/cdn/{versao}/img/spell/{feitico.Value.Image.Full}" }); } catch { } } return(new Feitico { Nome = $"Feitiço {spellId} não encontrado", UrlIcone = "/images/image_not_found.png" }); }
public void UpdateSpells() { UpdateStatus("Updating spells..."); SummonerSpellListStatic spells = StaticApi.GetSummonerSpells(_basereg, SummonerSpellData.image); int i = 0; double prog = 0; foreach (KeyValuePair <string, SummonerSpellStatic> sp in spells.SummonerSpells) { i++; prog = (double)i / spells.SummonerSpells.Count; UpdateProgress((int)(prog * 100)); if (!File.Exists(SpellsDirectory + @"\" + sp.Value.Id.ToString() + ".png")) { UpdateStatus("Spell " + sp.Value.Id.ToString() + ".png"); _wbc.DownloadFile(DataDragonRealm.Cdn + "/" + DataDragonRealm.Dd + "/img/spell/" + sp.Value.Image.Full, SpellsDirectory + @"\" + sp.Value.Id.ToString() + ".png"); } } UpdateStatus("Spells Updated"); }
public static async Task PreencherDicas(this PartidaAtualViewModel partida, SummonerSpellListStatic spells) { DicaIncendiar(); DicaBarao(); DicaFirstBlood(); void DicaIncendiar() { var incenciar = spells.SummonerSpells.First(k => k.Key == "SummonerDot"); var inimigosComIncendiar = partida.Inimigos.Where(x => x.Participante.SummonerSpell1 == incenciar.Value.Id || x.Participante.SummonerSpell2 == incenciar.Value.Id).ToArray(); if (inimigosComIncendiar.Count() == 1) { partida.Dicas.Add(new Dica($"Matenha distância do jogador {inimigosComIncendiar.First().Nome} até os 15 minutos, pois ele possui o feitiço incendiar, que pode ser mortal caso você esteja com pouca vida.")); } if (inimigosComIncendiar.Count() > 1) { partida.Dicas.Add(new Dica($"Tenha cuidado com os jogadores {string.Join(", ", inimigosComIncendiar.Select(x => x.Nome).ToArray(), 0, inimigosComIncendiar.Count() - 1)} e {inimigosComIncendiar.Last().Nome} até os 15 minutos, pois eles possuem o feitiço incendiar, que pode ser mortal caso você esteja com pouca vida.")); } } void DicaBarao() { if (partida.Inimigos.Select(x => x.TaxaPrimeiroBarao).RetornarMedia() > partida.Aliados.Select(x => x.TaxaPrimeiroBarao).RetornarMedia()) { partida.Dicas.Add(new Dica("Mantenha visão do barão a partir dos 20 minutos de partida. O time inimigo costuma matar ele mais cedo que o seu!")); } } void DicaFirstBlood() { if (partida.Inimigos.Select(x => x.TaxaFirstBlood).RetornarMedia() > partida.Aliados.Select(x => x.TaxaFirstBlood).RetornarMedia()) { partida.Dicas.Add(new Dica("Cuidado com confrontos no início da partida, o time inimigo costuma matar o primeiro oponente antes do seu!")); } } }
public PartidaViewModel(Partida partida, ChampionListStatic campeoes, string ultimaVersao, string contaJogadorPrincipal, ItemListStatic itens, SummonerSpellListStatic spells) { var idTimeAliado = partida.Participants.First(y => y.ParticipantId == partida.ParticipantIdentities.First(k => k.Player.CurrentAccountId == contaJogadorPrincipal).ParticipantId).TeamId; var timeAliado = partida.Teams.First(x => x.TeamId == idTimeAliado); TimeAliado = new TimeViewModel(timeAliado); TimeAliado.Participantes = partida.Participants.Where(x => x.TeamId == idTimeAliado).Select(participante => new ParticipanteViewModel(partida, campeoes, ultimaVersao, "", itens, participante, spells, true)).ToList(); var timeInimigo = partida.Teams.First(x => x.TeamId != idTimeAliado); TimeInimigo = new TimeViewModel(timeInimigo); TimeInimigo.Participantes = partida.Participants.Where(x => x.TeamId != idTimeAliado).Select(participante => new ParticipanteViewModel(partida, campeoes, ultimaVersao, "", itens, participante, spells, true)).ToList(); }
public async void RetrieveSummonerSpellsDataTest() { SummonerSpellListStatic summonerSpellsData = await creepScore.RetrieveSummonerSpellsData(CreepScore.Region.NA, StaticDataConstants.SpellData.All); Assert.NotNull(summonerSpellsData.data); }
public async void RetrieveSummonerSpellsDataNoneTest() { SummonerSpellListStatic summonerSpellsData = await creepScore.RetrieveSummonerSpellsData(CreepScore.Region.NA, StaticDataConstants.SpellData.None); Assert.Equal("summoner", summonerSpellsData.type); }
private bool NeedUpdate() { if (!isoStorage.DirectoryExists(IMGCHAMPPATH) || !isoStorage.DirectoryExists(IMGSUMMSPELLPATH) || !isoStorage.DirectoryExists(IMGSUMMICON)) { return true; } else { try { // Get the list of all champions actualy in the live version of the game this.listOfLiveChamp = staticApi.GetChampions(RiotSharp.Region.na, RiotSharp.StaticDataEndpoint.ChampionData.image); // Get the list of all summoner spell actualy in the live version of the game this.listOfLiveSummSpells = staticApi.GetSummonerSpells(RiotSharp.Region.na, SummonerSpellData.image); if (listOfLiveChamp != null && listOfLiveSummSpells != null) { existingChampImg = isoStorage.DirectoryGetFiles(IMGCHAMPPATH + "*"); existingSummSpellImg = isoStorage.DirectoryGetFiles(IMGSUMMSPELLPATH + "*"); existingSummIconImg = isoStorage.DirectoryGetFiles(IMGSUMMICON + "*"); if ((existingChampImg.Count() + existingSummSpellImg.Count()) != (listOfLiveChamp.Champions.Count() + listOfLiveSummSpells.SummonerSpells.Count())) { return true; } else { if (existingSummIconImg.Count() == 0) { return true; } else { int id = Singleton.Instance.CurrentUser.SummonerIconID; if (isoStorage.FileExists(IMGSUMMICON + ImageNameCreation(id.ToString()))) { return false; } else { return true; } } } } else { return true; } } catch (Exception) { return true; } } }
private async Task CollectStaticData(IServiceProvider serviceProvider) { var staticDataEndpoints = serviceProvider.GetService <IStaticDataEndpoints>(); var championRepository = serviceProvider.GetService <IChampionStaticDataRepository>(); var summonerSpellRepository = serviceProvider.GetService <ISummonerSpellStaticDataRepository>(); var itemRepository = serviceProvider.GetService <IItemStaticDataRepository>(); var runeRepository = serviceProvider.GetService <IRunesStaticDataRepository>(); //Champions IEnumerable <Db_LccChampion> championsInDatabase = championRepository.GetAllChampions(); if (championsInDatabase.Count() == 0) { ChampionListStatic championsListFromRiot = await staticDataEndpoints.Champion.GetChampionsAsync(Region.euw); foreach (ChampionStatic champion in championsListFromRiot.Champions.Values) { championRepository.InsertChampionInformation(new Db_LccChampion() { ChampionId = champion.Id, ChampionName = champion.Name, ImageFull = champion.Image.Full }); } championRepository.Save(); } //Items IEnumerable <Db_LccItem> itemsInDatabase = itemRepository.GetAllItems(); if (itemsInDatabase.Count() == 0) { ItemListStatic itemsListFromRiot = await staticDataEndpoints.Item.GetItemsAsync(Region.euw); foreach (ItemStatic item in itemsListFromRiot.Items.Values) { itemRepository.InsertItem(new Db_LccItem() { ItemId = item.Id, ItemName = item.Name, ImageFull = item.Image.Full }); } itemRepository.Save(); } //SummonerSpells IEnumerable <Db_LccSummonerSpell> lccSummonerSpellInformation = summonerSpellRepository.GetAllSummonerSpells(); if (lccSummonerSpellInformation.Count() == 0) { SummonerSpellListStatic summonerSpellListFromRiot = await staticDataEndpoints.SummonerSpell.GetSummonerSpellsAsync(Region.euw); foreach (SummonerSpellStatic summoner in summonerSpellListFromRiot.SummonerSpells.Values) { summonerSpellRepository.InsertSummonerSpell(new Db_LccSummonerSpell() { SummonerSpellId = summoner.Id, SummonerSpellName = summoner.Name, ImageFull = summoner.Image.Full }); } summonerSpellRepository.Save(); } //Runes IEnumerable <Db_LccRune> lccRuneInformation = runeRepository.GetAllRunes(); if (lccRuneInformation.Count() == 0) { IList <RuneReforged> runeListFromRiot = await staticDataEndpoints.Rune.GetRunesReforgedAsync(Region.euw); foreach (RuneReforged rune in runeListFromRiot) { runeRepository.InsertRune(new Db_LccRune() { RuneId = rune.Id, RuneName = rune.Name, RunePathName = rune.RunePathName, Key = rune.Key, ShortDesc = rune.ShortDesc, LongDesc = rune.LongDesc, Icon = rune.Icon }); } runeRepository.Save(); } }
/// <summary> /// Constroi um participante /// </summary> /// <param name="partida">Partida atual</param> /// <param name="campeoes">Lista de campeoes</param> /// <param name="versao">Versao do jogo</param> /// <param name="contaId">AccoutId do participante, somente é utilizado se o participante for nulo</param> /// <param name="itens">Lista de itens do jogo</param> /// <param name="participant">Participante que vem da api</param> public ParticipanteViewModel(Partida partida, ChampionListStatic campeoes, string versao, string contaId, ItemListStatic itens, Participant participant, SummonerSpellListStatic feiticos, bool detalhado = false) { var participante = participant ?? partida.Participants.First(y => y.ParticipantId == partida.ParticipantIdentities.First(k => k.Player.CurrentAccountId == contaId).ParticipantId); var campeao = campeoes .Champions .FirstOrDefault(c => c.Value.Id == participante.ChampionId).Value; NomeCampeao = campeao.Name; UrlIconeCampeao = Util.RetornarIconeCampeao(versao, campeao); OuroAcumulado = participante.Stats.GoldEarned > 100 ? participante.Stats.GoldEarned.ToString("0,.#K") : participante.Stats.GoldEarned.ToString(); KDA = $"{participante.Stats.Kills}/{participante.Stats.Deaths}/{participante.Stats.Assists}"; Lane = Util.RetornarLaneFinalJogador(participante.Timeline.Lane, participante.Timeline.Role); NivelMaximoAtingido = participante.Stats.ChampLevel; Vitoria = participante.Stats.Winner; Data = partida.GameCreation.ToString("dd/MM/yyyy"); ItensFinais = new List <Item>(); ItensFinais.AdicionarItem(participante.Stats.Item0, itens, versao); ItensFinais.AdicionarItem(participante.Stats.Item1, itens, versao); ItensFinais.AdicionarItem(participante.Stats.Item2, itens, versao); ItensFinais.AdicionarItem(participante.Stats.Item3, itens, versao); ItensFinais.AdicionarItem(participante.Stats.Item4, itens, versao); ItensFinais.AdicionarItem(participante.Stats.Item5, itens, versao); var ward = Util.ObterItem(participante.Stats.Item6, itens, versao); if (ward != null) { Ward = ward; } GameId = partida.GameId; var jogador = partida.ParticipantIdentities.First(x => x.ParticipantId == participante.ParticipantId).Player; AccountId = jogador.CurrentAccountId; SummonerId = jogador.SummonerId; if (detalhado) { NomeJogador = jogador.SummonerName; double ouroPorMinuto; try { ouroPorMinuto = participante.Stats.GoldEarned / partida.GameDuration.TotalMinutes; } catch (Exception) { ouroPorMinuto = 0; } OuroPorMinuto = ouroPorMinuto.ToString("0.#"); Farm = participante.Stats.TotalMinionsKilled + participante.Stats.NeutralMinionsKilled; double farmPorMinuto; try { farmPorMinuto = Convert.ToDouble(Farm) / partida.GameDuration.TotalMinutes; } catch (Exception) { farmPorMinuto = 0; } FarmPorMinuto = farmPorMinuto.ToString("0.#"); if (feiticos != null) { Feitico1 = AdicionarFeitico(participante.Spell1Id, feiticos, versao); Feitico2 = AdicionarFeitico(participante.Spell2Id, feiticos, versao); } } }