Esempio n. 1
0
 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;
 }
Esempio n. 3
0
        /// <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;
        }
Esempio n. 4
0
 public SummonerSpellListStaticWrapper(SummonerSpellListStatic spells, Language language
                                       , SummonerSpellData summonerSpellData)
 {
     SummonerSpellListStatic = spells;
     Language          = language;
     SummonerSpellData = summonerSpellData;
 }
Esempio n. 5
0
        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");
        }
Esempio n. 7
0
        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!"));
                }
            }
        }
Esempio n. 8
0
        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();
        }
Esempio n. 9
0
        public async void RetrieveSummonerSpellsDataTest()
        {
            SummonerSpellListStatic summonerSpellsData = await creepScore.RetrieveSummonerSpellsData(CreepScore.Region.NA, StaticDataConstants.SpellData.All);

            Assert.NotNull(summonerSpellsData.data);
        }
Esempio n. 10
0
        public async void RetrieveSummonerSpellsDataNoneTest()
        {
            SummonerSpellListStatic summonerSpellsData = await creepScore.RetrieveSummonerSpellsData(CreepScore.Region.NA, StaticDataConstants.SpellData.None);

            Assert.Equal("summoner", summonerSpellsData.type);
        }
Esempio n. 11
0
        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;
                }
            }
        }
Esempio n. 12
0
        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();
            }
        }
Esempio n. 13
0
        /// <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);
                }
            }
        }