Gen7ScriptsRs/gen_7_scripts/src/registered_scripts.rs

49 lines
1.3 KiB
Rust
Executable File

use crate::moves::*;
use alloc::boxed::Box;
use pkmn_lib_interface::app_interface::{get_hash, StringKey};
use pkmn_lib_interface::handling::{Script, ScriptCategory};
macro_rules! resolve_match {
(
$mid:expr,
$(
$script:ty,
)*
) => (
match $mid {
$(
const { get_hash(<$script>::get_const_name()) } => {
return Some(Box::new(<$script>::new()))
}
)*
_ => {}
}
)
}
pub fn get_script(category: ScriptCategory, name: &StringKey) -> Option<Box<dyn Script>> {
match category {
ScriptCategory::Move => {
resolve_match!(
name.hash(),
acrobatics::Acrobatics,
acupressure::Acupressure,
after_you::AfterYou,
assist::Assist,
assurance::Assurance,
multi_hit_move::MultiHitMove,
);
}
ScriptCategory::Ability => {}
ScriptCategory::Status => {}
ScriptCategory::Pokemon => {}
ScriptCategory::Battle => {
resolve_match!(name.hash(), crate::util_scripts::ForceEffectTriggerScript,)
}
ScriptCategory::Side => {}
ScriptCategory::ItemBattleTrigger => {}
}
None
}