public IActionResult Catch(int encounterId) { Encounter encounter = GameState.Encounters.FirstOrDefault(_encounter => _encounter.ID == encounterId); Local local = Locals.FindOneByID(encounter.LocalID); Player player = Players.FindOneByID(encounter.PlayerID); if (local != null && player != null) { bool caught = PokemonEncounter.TryCatch(encounter.PokemonEncountered); if (caught) { PokedexPokemon pokemonCaught = player.Pokedex.Pokemons.FirstOrDefault(pokedexPokemon => pokedexPokemon.PokemonID == encounter.PokemonEncountered.LocalPokemon.PokemonID && pokedexPokemon.Enabled); if (pokemonCaught == null) { pokemonCaught = new PokedexPokemon(); pokemonCaught.PokemonID = encounter.PokemonEncountered.LocalPokemon.PokemonID; pokemonCaught.EncountersCount = 1; pokemonCaught.Level = encounter.PokemonEncountered.Level; } else { pokemonCaught.Level = encounter.PokemonEncountered.Level; pokemonCaught.EncountersCount = pokemonCaught.EncountersCount + 1; } pokemonCaught.Catched = true; pokemonCaught.Enabled = true; if (!encounter.PokemonAlreadyCaught) { pokemonCaught = Pokedexes.AddPokemon(pokemonCaught, player.Pokedex); } else { pokemonCaught = Pokedexes.UpdatePokemon(pokemonCaught, player.Pokedex); } if (!player.CatchedAnyPokemon()) { player.MainPokedexPokemonID = pokemonCaught.ID; Players.Update(player); } } dynamic response = new ExpandoObject(); response.caught = caught; GameState.Encounters.Remove(encounter); return(Ok(response)); } return(BadRequest()); }
private void ButtonRegister_Click(object sender, RoutedEventArgs e) { PokedexPokemon pokemonCaught = PokemonAlreadyCaught(); if (pokemonCaught == null) { pokemonCaught = new PokedexPokemon(); pokemonCaught.PokemonID = PokemonEncountered.LocalPokemon.PokemonID; pokemonCaught.EncountersCount = 1; pokemonCaught.Level = PokemonEncountered.Level; } else { MessageBoxResult messageBoxResult = MessageBox.Show("Are you sure you want to replace your " + PokemonEncountered.LocalPokemon.Pokemon.Name + " (lvl. " + PokemonEncountered.Level + ") with this one?", "Question", MessageBoxButton.YesNo, MessageBoxImage.Question); if (messageBoxResult == MessageBoxResult.Yes) { pokemonCaught.Level = PokemonEncountered.Level; } pokemonCaught.EncountersCount = pokemonCaught.EncountersCount + 1; } pokemonCaught.Nickname = TextBoxPokemonNickname.Text; pokemonCaught.Notes = TextBoxPokemonNotes.Text; pokemonCaught.Catched = true; pokemonCaught.Enabled = true; try { if (PokemonAlreadyCaught() == null) { pokemonCaught = Pokedexes.AddPokemon(pokemonCaught, Session.Player.Pokedex); } else { pokemonCaught = Pokedexes.UpdatePokemon(pokemonCaught, Session.Player.Pokedex); } // If is the first pokemon set as main if (Session.Player.Pokedex.Pokemons.Count == 0) { Session.Player.MainPokedexPokemonID = pokemonCaught.ID; Players.UpdatePlayer(Session.Player); } Session.UpdatePlayer(); Close(); } catch { MessageBox.Show("An error has occurred, please try again later.", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } }