예제 #1
0
        private void HandleOthers(SnipePokemonViewModel model)
        {
            OtherList.RemoveAll(x => ShouldRemove(x, model));

            OtherList.Insert(0, model);

            RaisePropertyChanged("TotalOtherList");
            Refresh("OtherList", OtherList);
        }
예제 #2
0
        private void HandlePokedex(SnipePokemonViewModel model)
        {
            PokedexSnipeItems.RemoveAll(x => ShouldRemove(x, model));

            if (pokedex != null && !pokedex.Any(p => p.PokemonId == model.PokemonId))
            {
                PokedexSnipeItems.Insert(0, model);
            }
            Refresh("PokedexSnipeItems", PokedexSnipeItems);
        }
예제 #3
0
        internal void OnSnipeData(EncounteredEvent e)
        {
            var session = TinyIoCContainer.Current.Resolve <ISession>();

            if (!e.IsRecievedFromSocket)
            {
                return;
            }
            lock (pending)
            {
                pending.Add(e);

                if (lastUpdateTime > DateTime.Now.AddSeconds(-session.LogicSettings.UIConfig.SnipeListRefreshInterval))
                {
                    return;
                }

                foreach (var item in pending)
                {
                    var         model = new SnipePokemonViewModel(item);
                    var         grade = PokemonGradeHelper.GetPokemonGrade(model.PokemonId);
                    PokemonData best  = null;

                    if (bestPokemons != null)
                    {
                        best = bestPokemons.FirstOrDefault(x => x.PokemonId == model.PokemonId);
                    }

                    if (best == null || PokemonInfo.CalculatePokemonPerfection(best) < model.IV)
                    {
                        model.Recommend = true;
                    }
                    if (model.IV >= 100)
                    {
                        Handle100IV(model);
                    }
                    else
                    if (grade == PokemonGrades.Legendary ||
                        grade == PokemonGrades.VeryRare ||
                        grade == PokemonGrades.Epic ||
                        grade == PokemonGrades.Rare)
                    {
                        HandleRarePokemon(model);
                    }
                    else
                    {
                        HandleOthers(model);
                    }

                    HandlePokedex(model);
                }
                pending.RemoveAll(x => true);
                lastUpdateTime = DateTime.Now;
            }
        }
예제 #4
0
        internal void OnSnipeItemQueue(EncounteredEvent encounteredEvent)
        {
            if (!encounteredEvent.IsRecievedFromSocket)
            {
                return;
            }

            var model = new SnipePokemonViewModel(encounteredEvent)
            {
                AllowSnipe = false
            };

            HandleSnippingList(model);
        }
예제 #5
0
 private void HandleSnippingList(SnipePokemonViewModel model)
 {
     SnipeQueueItems.Insert(0, model);
     Refresh("SnipeQueueItems", SnipeQueueItems);
 }
예제 #6
0
 private void Handle100IV(SnipePokemonViewModel e)
 {
     IV100List.RemoveAll(x => ShouldRemove(x, e));
     IV100List.Insert(0, e);
     Refresh("IV100List", IV100List);
 }
예제 #7
0
 private void HandleRarePokemon(SnipePokemonViewModel model)
 {
     RareList.RemoveAll(x => ShouldRemove(x, model));
     RareList.Insert(0, model);
     Refresh("RareList", RareList);
 }