pokeapi_model/
locations.rs1use 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}