pokeapi_model/
items.rs

1//! Item types.
2
3use 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}