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> { 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 }