PkmnLib_rs/src/static_data/mod.rs

107 lines
2.8 KiB
Rust
Executable File

use crate::StringKey;
#[doc(inline)]
pub use growth_rates::*;
#[doc(inline)]
pub use items::*;
#[doc(inline)]
pub use libraries::*;
#[doc(inline)]
pub use moves::*;
#[doc(inline)]
pub use natures::*;
#[doc(inline)]
pub use species_data::*;
#[doc(inline)]
pub use statistic_set::*;
#[doc(inline)]
pub use statistics::*;
#[doc(inline)]
pub use time_of_day::*;
use std::fmt::{Display, Formatter};
#[cfg(test)]
pub(crate) mod tests {
use super::*;
#[doc(inline)]
pub use growth_rates::tests::*;
#[doc(inline)]
pub use items::tests::*;
#[doc(inline)]
pub use libraries::tests::*;
#[doc(inline)]
pub use moves::tests::*;
#[doc(inline)]
pub use natures::tests::*;
#[doc(inline)]
pub use species_data::tests::*;
}
/// Growth rates define how fast a Pokemon can level up.
mod growth_rates;
/// Items are objects which the player can pick up, keep in their Bag, and use in some manner
mod items;
/// The libraries module holds all data storage types.
pub(crate) mod libraries;
/// Moves are actions Pokemon can take in battle.
mod moves;
/// Natures give stat boosts to specific stats.
mod natures;
/// Species data holds base data for species.
mod species_data;
/// Statistic sets are collection of different statistics that can be used by Pokemon in multiple ways.
mod statistic_set;
/// Statistics are numerical values on Pokemon that are used in battle.
mod statistics;
/// Time of day defines the time of day for a battle.
mod time_of_day;
/// A parameter for an effect. This is basically a simple way to dynamically store multiple different
/// primitives on data.
#[derive(PartialEq, Debug, Clone)]
pub enum Parameter {
/// A boolean value.
Bool(bool),
/// An integer value. Stored as a 64 bit int to deal with potentially large numbers.
Int(i64),
/// A float value. Stored as a 32 bit float.
Float(f32),
/// A string value.
String(StringKey),
}
impl From<bool> for Parameter {
fn from(b: bool) -> Self {
Parameter::Bool(b)
}
}
impl From<i64> for Parameter {
fn from(i: i64) -> Self {
Parameter::Int(i)
}
}
impl From<f32> for Parameter {
fn from(f: f32) -> Self {
Parameter::Float(f)
}
}
impl From<StringKey> for Parameter {
fn from(s: StringKey) -> Self {
Parameter::String(s)
}
}
impl Display for Parameter {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
match self {
Parameter::Bool(v) => f.write_fmt(format_args!("EffectParameter::Bool({v})")),
Parameter::Int(v) => f.write_fmt(format_args!("EffectParameter::Int({v})")),
Parameter::Float(v) => f.write_fmt(format_args!("EffectParameter::Float({v})")),
Parameter::String(v) => f.write_fmt(format_args!("EffectParameter::String({v})")),
}
}
}