pokeapi_model/
locations.rs

1//! Location types.
2
3use pokeapi_macro::pokeapi_struct;
4
5use crate::{
6    EncounterMethod, Generation, GenerationGameIndex, Name, NamedAPIResource, Pokedex, Pokemon,
7    PokemonSpecies, Version, VersionEncounterDetail, VersionGroup,
8};
9
10#[pokeapi_struct]
11struct Location {
12    id: i32,
13    name: String,
14    region: NamedAPIResource<Region>,
15    names: Vec<Name>,
16    game_indices: Vec<GenerationGameIndex>,
17    areas: Vec<NamedAPIResource<LocationArea>>,
18}
19
20#[pokeapi_struct]
21struct LocationArea {
22    id: i32,
23    name: String,
24    game_index: i32,
25    encounter_method_rates: Vec<EncounterMethodRate>,
26    location: NamedAPIResource<Location>,
27    names: Name,
28    pokemon_encounters: Vec<PokemonEncounter>,
29}
30
31#[pokeapi_struct]
32struct EncounterMethodRate {
33    encounter_method: NamedAPIResource<EncounterMethod>,
34    version_details: Vec<EncounterVersionDetails>,
35}
36
37#[pokeapi_struct]
38struct EncounterVersionDetails {
39    rate: i32,
40    version: NamedAPIResource<Version>,
41}
42
43#[pokeapi_struct]
44struct PokemonEncounter {
45    pokemon: NamedAPIResource<Pokemon>,
46    version_details: Vec<VersionEncounterDetail>,
47}
48
49#[pokeapi_struct]
50struct PalParkArea {
51    id: i32,
52    name: String,
53    names: Vec<Name>,
54    pokemon_encounters: Vec<PalParkEncounterSpecies>,
55}
56
57#[pokeapi_struct]
58struct PalParkEncounterSpecies {
59    base_score: i32,
60    rate: i32,
61    pokemon_species: NamedAPIResource<PokemonSpecies>,
62}
63
64#[pokeapi_struct]
65struct Region {
66    id: i32,
67    locations: Vec<NamedAPIResource<Location>>,
68    name: String,
69    names: Vec<Name>,
70    main_generation: NamedAPIResource<Generation>,
71    pokedexes: Vec<NamedAPIResource<Pokedex>>,
72    version_groups: Vec<NamedAPIResource<VersionGroup>>,
73}