예제 #1
0
        public override Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary <string, object> state)
        {
            if (state.Any())
            {
                PokemonFoundAndSeen = (ObservableCollection <KeyValuePair <PokemonId, PokedexEntry> >)state[nameof(PokemonFoundAndSeen)];
                SeenPokemons        = (int)state[nameof(SeenPokemons)];
                CapturedPokemons    = (int)state[nameof(CapturedPokemons)];
                if (state.ContainsKey(nameof(IsPokemonDetailsOpen)))
                {
                    SelectedPokedexEntry = (KeyValuePair <PokemonId, PokedexEntry>)state[nameof(SelectedPokedexEntry)];
                    IsEevee = (bool)state[nameof(IsEevee)];
                    IsPokemonDetailsOpen = (bool)state[nameof(IsPokemonDetailsOpen)];
                }
            }
            else
            {
                var list         = Enum.GetValues(typeof(PokemonId)).Cast <PokemonId>();
                var pokedexItems = GameClient.PokedexInventory;
                foreach (var item in list)
                {
                    switch (item)
                    {
                    case PokemonId.Missingno:
                        break;

                    default:
                        var pokedexEntry = pokedexItems.Where(x => x.PokemonId == item);
                        if (pokedexEntry.Count() == 1)
                        {
                            PokemonFoundAndSeen.Add(new KeyValuePair <PokemonId, PokedexEntry>(item, pokedexEntry.ElementAt(0)));
                        }
                        else
                        {
                            PokemonFoundAndSeen.Add(new KeyValuePair <PokemonId, PokedexEntry>(item, null));
                        }
                        break;
                    }
                }
                for (int i = PokemonFoundAndSeen.Count - 1; i >= 1; i--)
                {
                    var item = PokemonFoundAndSeen[i];
                    if (item.Value == null || (item.Value.TimesEncountered == 0 && item.Value.TimesCaptured == 0))
                    {
                        PokemonFoundAndSeen.RemoveAt(i);
                    }
                    else //Pokemon seen or captured
                    {
                        break;
                    }
                }
                CapturedPokemons = pokedexItems.Where(x => x.TimesCaptured > 0).Count();
                SeenPokemons     = pokedexItems.Count;
            }
            if (parameter != null && parameter is PokemonId)
            {
                SelectedPokedexEntry = new KeyValuePair <PokemonId, PokedexEntry>((PokemonId)parameter, GetPokedexEntry((PokemonId)parameter));
                IsPokemonDetailsOpen = true;
            }
            return(Task.CompletedTask);
        }
예제 #2
0
        public override Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary <string, object> state)
        {
            if (state.Any())
            {
                PokemonFoundAndSeen = (ObservableCollection <PokemonId>)state[nameof(PokemonFoundAndSeen)];
                SeenPokemons        = (int)state[nameof(SeenPokemons)];
                CapturedPokemons    = (int)state[nameof(CapturedPokemons)];
            }
            else
            {
                ObservableCollectionPlus <PokedexEntry> pokedexItems = GameClient.PokedexInventory;
                int lastPokemonIdSeen = pokedexItems == null || pokedexItems.Count == 0 ? 0 : pokedexItems.Max(x => (int)x.PokemonId);
                if (lastPokemonIdSeen > 0)
                {
                    var listAllPokemon = Enum.GetValues(typeof(PokemonId)).Cast <PokemonId>();
                    foreach (var item in listAllPokemon)
                    {
                        if ((int)item > lastPokemonIdSeen)
                        {
                            break;
                        }

                        switch (item)
                        {
                        case PokemonId.Missingno:
                        {
                            break;
                        }

                        default:
                        {
                            var pokedexEntry = pokedexItems.Where(x => x.PokemonId == item);
                            PokemonFoundAndSeen.Add(item);
                            break;
                        }
                        }
                    }

                    CapturedPokemons = pokedexItems.Count(x => x.TimesCaptured > 0);
                    SeenPokemons     = pokedexItems.Count;
                }
                else
                {
                    CapturedPokemons = 0;
                    SeenPokemons     = 0;
                }
            }

            if (parameter is PokemonId)
            {
                HockeyClient.Current.TrackPageView("PokedexDetailPage");
                NavigationService.Navigate(typeof(PokedexDetailPage), (PokemonId)parameter);
            }

            NavigationService.FrameFacade.BackRequested += FrameFacade_BackRequested;
            return(Task.CompletedTask);
        }
예제 #3
0
        private PokedexEntry GetPokedexEntry(PokemonId pokemon)
        {
            var found = PokemonFoundAndSeen.Where(x => x.Key == pokemon);

            if (found != null && found.Count() > 0)
            {
                return(found.ElementAt(0).Value);
            }
            return(null);
        }
예제 #4
0
 public override Task OnNavigatedFromAsync(IDictionary <string, object> pageState, bool suspending)
 {
     if (suspending)
     {
         pageState[nameof(PokemonFoundAndSeen)] = PokemonFoundAndSeen;
         pageState[nameof(SeenPokemons)]        = SeenPokemons;
         pageState[nameof(CapturedPokemons)]    = CapturedPokemons;
     }
     else
     {
         pageState?.Clear();
         PokemonFoundAndSeen?.Clear();
         EeveeEvolutions?.Clear();
         PokemonEvolutions?.Clear();
     }
     NavigationService.FrameFacade.BackRequested -= FrameFacade_BackRequested;
     return(Task.CompletedTask);
 }
예제 #5
0
 public override Task OnNavigatedFromAsync(IDictionary <string, object> pageState, bool suspending)
 {
     if (suspending)
     {
         pageState[nameof(PokemonFoundAndSeen)] = PokemonFoundAndSeen;
         pageState[nameof(SeenPokemons)]        = SeenPokemons;
         pageState[nameof(CapturedPokemons)]    = CapturedPokemons;
         if (IsPokemonDetailsOpen)
         {
             pageState[nameof(IsPokemonDetailsOpen)] = IsPokemonDetailsOpen;
             pageState[nameof(SelectedPokedexEntry)] = SelectedPokedexEntry;
             pageState[nameof(IsEevee)] = IsEevee;
         }
     }
     else
     {
         pageState?.Clear();
         PokemonFoundAndSeen?.Clear();
         EeveeEvolutions?.Clear();
         PokemonEvolutions?.Clear();
     }
     return(Task.CompletedTask);
 }
예제 #6
0
        public override Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary <string, object> state)
        {
            if (state.Any())
            {
                PokemonFoundAndSeen = (ObservableCollection <KeyValuePair <PokemonId, PokedexEntry> >)state[nameof(PokemonFoundAndSeen)];
                SeenPokemons        = (int)state[nameof(SeenPokemons)];
                CapturedPokemons    = (int)state[nameof(CapturedPokemons)];
                if (state.ContainsKey(nameof(IsPokemonDetailsOpen)))
                {
                    SelectedPokedexEntry = (KeyValuePair <PokemonId, PokedexEntry>)state[nameof(SelectedPokedexEntry)];
                    IsEevee = (bool)state[nameof(IsEevee)];
                    IsPokemonDetailsOpen = (bool)state[nameof(IsPokemonDetailsOpen)];
                }
            }
            else
            {
                var pokedexItems      = GameClient.PokedexInventory;
                var lastPokemonIdSeen = pokedexItems == null || pokedexItems.Count == 0 ? 0 : pokedexItems.Max(x => (int)x.PokemonId);
                if (lastPokemonIdSeen > 0)
                {
                    var listAllPokemon = Enum.GetValues(typeof(PokemonId)).Cast <PokemonId>();
                    foreach (var item in listAllPokemon)
                    {
                        if ((int)item > lastPokemonIdSeen)
                        {
                            break;
                        }
                        switch (item)
                        {
                        case PokemonId.Missingno:
                            break;

                        default:
                            var pokedexEntry = pokedexItems.Where(x => x.PokemonId == item);
                            if (pokedexEntry.Count() == 1)
                            {
                                PokemonFoundAndSeen.Add(new KeyValuePair <PokemonId, PokedexEntry>(item, pokedexEntry.ElementAt(0)));
                            }
                            else
                            {
                                PokemonFoundAndSeen.Add(new KeyValuePair <PokemonId, PokedexEntry>(item, null));
                            }
                            break;
                        }
                    }
                    CapturedPokemons = pokedexItems.Where(x => x.TimesCaptured > 0).Count();
                    SeenPokemons     = pokedexItems.Count;
                }
                else
                {
                    CapturedPokemons = 0;
                    SeenPokemons     = 0;
                }
            }
            if (parameter != null && parameter is PokemonId)  //utilized to open a pokedex page, passing pokemon id
            {
                SelectedPokedexEntry = new KeyValuePair <PokemonId, PokedexEntry>((PokemonId)parameter, GetPokedexEntry((PokemonId)parameter));
                IsPokemonDetailsOpen = true;
            }
            NavigationService.FrameFacade.BackRequested += FrameFacade_BackRequested;
            return(Task.CompletedTask);
        }