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); }
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); }
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); }
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); }
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); }
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); }