pokeapi_model/
evolution.rs1use pokeapi_macro::pokeapi_struct;
4
5use crate::{Item, Location, Move, Name, NamedAPIResource, PokemonSpecies, Type};
6
7#[pokeapi_struct]
8struct EvolutionChain {
9 id: i32,
10 baby_trigger_item: NamedAPIResource<Item>,
11 chain: ChainLink,
12}
13
14#[pokeapi_struct]
15struct ChainLink {
16 is_baby: bool,
17 species: NamedAPIResource<PokemonSpecies>,
18 evolution_details: Vec<EvolutionDetail>,
19 evolves_to: Vec<Self>,
20}
21
22#[pokeapi_struct]
23struct EvolutionDetail {
24 item: NamedAPIResource<Item>,
25 trigger: NamedAPIResource<EvolutionTrigger>,
26 gender: i32,
27 held_item: NamedAPIResource<Item>,
28 known_move: NamedAPIResource<Move>,
29 known_move_type: NamedAPIResource<Type>,
30 location: NamedAPIResource<Location>,
31 min_level: i32,
32 min_happiness: i32,
33 min_beauty: i32,
34 min_affection: i32,
35 needs_overworld_rain: bool,
36 party_species: NamedAPIResource<PokemonSpecies>,
37 party_type: NamedAPIResource<Type>,
38 relative_physical_stats: i32,
39 time_of_day: String,
40 trade_species: NamedAPIResource<PokemonSpecies>,
41 turn_upside_down: bool,
42}
43
44#[pokeapi_struct]
45struct EvolutionTrigger {
46 id: i32,
47 name: String,
48 names: Vec<Name>,
49 pokemon_species: Vec<NamedAPIResource<PokemonSpecies>>,
50}