use serde::{Deserialize, Serialize};
use super::berries::BerryFlavor;
use super::moves::Move;
use super::resource_lists::{APIResourceList, NamedAPIResourceList};
use super::utility::{Effect, FlavorText, Language, NamedAPIResource};
use crate::{impl_id, impl_id_and_named, set_endpoint};
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "deny_unknown_fields", serde(deny_unknown_fields))]
#[non_exhaustive]
pub struct ContestType {
pub id: i16,
pub name: String,
pub berry_flavor: NamedAPIResource<BerryFlavor>,
pub names: Vec<ContestName>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "deny_unknown_fields", serde(deny_unknown_fields))]
#[non_exhaustive]
pub struct ContestName {
pub name: String,
pub color: String,
pub language: NamedAPIResource<Language>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "deny_unknown_fields", serde(deny_unknown_fields))]
#[non_exhaustive]
pub struct ContestEffect {
pub id: i16,
pub appeal: u8,
pub jam: u8,
pub effect_entries: Vec<Effect>,
pub flavor_text_entries: Vec<FlavorText>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "deny_unknown_fields", serde(deny_unknown_fields))]
#[non_exhaustive]
pub struct SuperContestEffect {
pub id: i16,
pub appeal: u8,
pub flavor_text_entries: Vec<FlavorText>,
pub moves: Vec<NamedAPIResource<Move>>,
}
set_endpoint!(ContestEffect, APIResourceList, "contest-effect");
set_endpoint!(SuperContestEffect, APIResourceList, "super-contest-effect");
set_endpoint!(ContestType, NamedAPIResourceList, "contest-type");
impl_id!(ContestEffect);
impl_id!(SuperContestEffect);
impl_id_and_named!(ContestType);