use super::{
evolution::EvolutionChain,
games::Version,
pokemon::Pokemon,
resource::{
ApiResource, Description, Effect, GenerationGameIndex, MachineVersionDetail, Name,
NamedApiResource, VerboseEffect, VersionGroupFlavorText,
},
};
#[derive(Default, Debug, Clone, PartialEq, Eq, serde::Deserialize)]
pub struct Item {
pub id: Option<i64>,
pub name: Option<String>,
pub cost: Option<i64>,
pub fling_power: Option<i64>,
pub fling_effect: Option<NamedApiResource<ItemFlingEffect>>,
pub attributes: Option<Vec<NamedApiResource<ItemAttribute>>>,
pub category: Option<NamedApiResource<ItemCategory>>,
pub effect_entries: Option<Vec<VerboseEffect>>,
pub flavor_text_entries: Option<Vec<VersionGroupFlavorText>>,
pub game_indices: Option<Vec<GenerationGameIndex>>,
pub names: Option<Vec<Name>>,
pub sprites: Option<ItemSprites>,
pub held_by_pokemon: Option<Vec<ItemHolderPokemon>>,
pub baby_trigger_for: Option<ApiResource<EvolutionChain>>,
pub machines: Option<Vec<MachineVersionDetail>>,
}
#[derive(Default, Debug, Clone, PartialEq, Eq, serde::Deserialize)]
pub struct ItemSprites {
pub default: Option<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Eq, serde::Deserialize)]
pub struct ItemHolderPokemon {
pub pokemon: Option<NamedApiResource<Pokemon>>,
pub version_details: Option<Vec<ItemHolderPokemonVersionDetail>>,
}
#[derive(Default, Debug, Clone, PartialEq, Eq, serde::Deserialize)]
pub struct ItemHolderPokemonVersionDetail {
pub rarity: Option<i64>,
pub version: Option<NamedApiResource<Version>>,
}
#[derive(Default, Debug, Clone, PartialEq, Eq, serde::Deserialize)]
pub struct ItemAttribute {
pub id: Option<i64>,
pub name: Option<String>,
pub items: Option<Vec<NamedApiResource<Item>>>,
pub names: Option<Vec<Name>>,
pub descriptions: Option<Vec<Description>>,
}
#[derive(Default, Debug, Clone, PartialEq, Eq, serde::Deserialize)]
pub struct ItemCategory {
pub id: Option<i64>,
pub name: Option<String>,
pub items: Option<Vec<NamedApiResource<Item>>>,
pub names: Option<Vec<Name>>,
pub pocket: Option<NamedApiResource<ItemPocket>>,
}
#[derive(Default, Debug, Clone, PartialEq, Eq, serde::Deserialize)]
pub struct ItemFlingEffect {
pub id: Option<i64>,
pub name: Option<String>,
pub effect_entries: Option<Vec<Effect>>,
pub items: Option<Vec<NamedApiResource<Item>>>,
}
#[derive(Default, Debug, Clone, PartialEq, Eq, serde::Deserialize)]
pub struct ItemPocket {
pub id: Option<i64>,
pub name: Option<String>,
pub categories: Option<Vec<NamedApiResource<ItemCategory>>>,
pub names: Option<Vec<Name>>,
}