use super::{
encounters::EncounterMethod,
games::{Generation, Pokedex, Version, VersionGroup},
pokemon::{Pokemon, PokemonSpecies},
resource::{GenerationGameIndex, Name, NamedApiResource, VersionEncounterDetail},
};
#[derive(Default, Debug, Clone, PartialEq, serde::Deserialize)]
pub struct Location {
pub id: Option<i64>,
pub name: Option<String>,
pub region: Option<NamedApiResource<Region>>,
pub names: Option<Vec<Name>>,
pub game_indices: Option<Vec<GenerationGameIndex>>,
pub areas: Option<Vec<NamedApiResource<LocationArea>>>,
}
#[derive(Default, Debug, Clone, PartialEq, serde::Deserialize)]
pub struct LocationArea {
pub id: Option<i64>,
pub name: Option<String>,
pub game_index: Option<i64>,
pub encounter_method_rates: Option<Vec<EncounterMethodRate>>,
pub location: Option<Location>,
pub names: Option<Vec<Name>>,
pub pokemon_encounters: Option<Vec<PokemonEncounter>>,
}
#[derive(Default, Debug, Clone, PartialEq, serde::Deserialize)]
pub struct EncounterMethodRate {
pub encounter_method: Option<NamedApiResource<EncounterMethod>>,
pub version_details: Option<Vec<EncounterVersionDetails>>,
}
#[derive(Default, Debug, Clone, PartialEq, serde::Deserialize)]
pub struct EncounterVersionDetails {
pub rate: Option<i64>,
pub version: Option<NamedApiResource<Version>>,
}
#[derive(Default, Debug, Clone, PartialEq, serde::Deserialize)]
pub struct PokemonEncounter {
pub pokemon: Option<NamedApiResource<Pokemon>>,
pub version_details: Option<Vec<VersionEncounterDetail>>,
}
#[derive(Default, Debug, Clone, PartialEq, serde::Deserialize)]
pub struct PalParkArea {
pub id: Option<i64>,
pub name: Option<String>,
pub names: Option<Vec<Name>>,
pub pokemon_encounters: Option<Vec<PalParkEncounterSpecies>>,
}
#[derive(Default, Debug, Clone, PartialEq, serde::Deserialize)]
pub struct PalParkEncounterSpecies {
pub base_score: Option<i64>,
pub rate: Option<i64>,
pub pokemon_species: Option<NamedApiResource<PokemonSpecies>>,
}
#[derive(Default, Debug, Clone, PartialEq, serde::Deserialize)]
pub struct Region {
pub id: Option<i64>,
pub locations: Option<Vec<NamedApiResource<Location>>>,
pub name: Option<String>,
pub names: Option<Vec<Name>>,
pub main_generation: Option<NamedApiResource<Generation>>,
pub pokedexes: Option<Vec<NamedApiResource<Pokedex>>>,
pub version_groups: Option<Vec<NamedApiResource<VersionGroup>>>,
}