1use pokeapi_macro::pokeapi_struct;
4
5use crate::{
6 APIResource, Description, Effect, EvolutionChain, GenerationGameIndex, MachineVersionDetail,
7 Name, NamedAPIResource, Pokemon, VerboseEffect, Version, VersionGroupFlavorText,
8};
9
10#[pokeapi_struct]
11struct Item {
12 id: i32,
13 name: String,
14 cost: i32,
15 fling_power: i32,
16 fling_effect: NamedAPIResource<ItemFlingEffect>,
17 attributes: Vec<NamedAPIResource<ItemAttribute>>,
18 category: NamedAPIResource<ItemCategory>,
19 effect_entries: Vec<VerboseEffect>,
20 flavor_text_entries: Vec<VersionGroupFlavorText>,
21 game_indices: Vec<GenerationGameIndex>,
22 names: Vec<Name>,
23 sprites: ItemSprites,
24 held_by_pokemon: Vec<ItemHolderPokemon>,
25 baby_trigger_for: APIResource<EvolutionChain>,
26 machines: Vec<MachineVersionDetail>,
27}
28
29#[pokeapi_struct]
30struct ItemSprites {
31 default: String,
32}
33
34#[pokeapi_struct]
35struct ItemHolderPokemon {
36 pokemon: NamedAPIResource<Pokemon>,
37 version_details: Vec<ItemHolderPokemonVersionDetail>,
38}
39
40#[pokeapi_struct]
41struct ItemHolderPokemonVersionDetail {
42 rarity: i32,
43 version: NamedAPIResource<Version>,
44}
45
46#[pokeapi_struct]
47struct ItemAttribute {
48 id: i32,
49 name: String,
50 items: Vec<NamedAPIResource<Item>>,
51 names: Vec<Name>,
52 descriptions: Vec<Description>,
53}
54
55#[pokeapi_struct]
56struct ItemCategory {
57 id: i32,
58 name: String,
59 items: Vec<NamedAPIResource<Item>>,
60 names: Vec<Name>,
61 pocket: NamedAPIResource<ItemPocket>,
62}
63
64#[pokeapi_struct]
65struct ItemFlingEffect {
66 id: i32,
67 name: String,
68 effect_entries: Vec<Effect>,
69 items: Vec<NamedAPIResource<Item>>,
70}
71
72#[pokeapi_struct]
73struct ItemPocket {
74 id: i32,
75 name: String,
76 categories: Vec<NamedAPIResource<ItemCategory>>,
77 names: Vec<Name>,
78}