PkmnLib_rs/src/ffi/dynamic_data/libraries/dynamic_library.rs

25 lines
875 B
Rust
Raw Normal View History

2022-10-14 08:33:19 +00:00
use crate::dynamic_data::{BattleStatCalculator, DamageLibrary, DynamicLibrary, MiscLibrary, ScriptResolver};
use crate::ffi::{IdentifiablePointer, OwnedPtr};
use crate::static_data::StaticData;
2022-10-14 11:59:04 +00:00
use std::sync::Arc;
2022-10-14 08:33:19 +00:00
#[no_mangle]
extern "C" fn dynamic_library_new(
static_data: OwnedPtr<StaticData>,
stat_calculator: OwnedPtr<Box<dyn BattleStatCalculator>>,
damage_library: OwnedPtr<Box<dyn DamageLibrary>>,
misc_library: OwnedPtr<Box<dyn MiscLibrary>>,
script_resolver: OwnedPtr<Box<dyn ScriptResolver>>,
2022-10-14 11:59:04 +00:00
) -> IdentifiablePointer<Arc<DynamicLibrary>> {
2022-10-14 08:33:19 +00:00
unsafe {
2022-10-14 11:59:04 +00:00
Arc::new(DynamicLibrary::new(
2022-10-14 08:33:19 +00:00
*Box::from_raw(static_data),
*Box::from_raw(stat_calculator),
*Box::from_raw(damage_library),
*Box::from_raw(misc_library),
*Box::from_raw(script_resolver),
))
.into()
}
}