PkmnLib_rs/src/dynamic_data/script_handling/volatile_scripts.rs

27 lines
926 B
Rust
Raw Normal View History

use crate::dynamic_data::script_handling::script::{Script, ScriptContainer};
2022-06-06 11:54:59 +00:00
use crate::dynamic_data::script_handling::script_set::ScriptSet;
use crate::{PkmnResult, StringKey};
use std::sync::Arc;
2022-06-06 11:54:59 +00:00
pub trait VolatileScripts<'a> {
fn volatile_scripts(&self) -> &Arc<ScriptSet>;
fn load_volatile_script(&self, key: &StringKey) -> PkmnResult<Option<Arc<dyn Script>>>;
2022-06-06 11:54:59 +00:00
fn has_volatile_script(&self, key: &StringKey) -> bool {
self.volatile_scripts().has(key)
2022-06-06 11:54:59 +00:00
}
fn get_volatile_script(&self, key: &StringKey) -> Option<ScriptContainer> {
self.volatile_scripts().get(key)
2022-06-06 11:54:59 +00:00
}
fn add_volatile_script(&mut self, key: &StringKey) -> PkmnResult<Option<ScriptContainer>> {
2022-06-06 11:54:59 +00:00
self.volatile_scripts()
.stack_or_add(key, &|| self.load_volatile_script(key))
}
fn remove_volatile_script(&mut self, key: &StringKey) {
self.volatile_scripts().remove(key)
2022-06-06 11:54:59 +00:00
}
}