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

20 lines
776 B
Rust

use crate::dynamic_data::{DamageLibrary, Gen7DamageLibrary};
use crate::ffi::{IdentifiablePointer, OwnedPtr};
use std::ptr::drop_in_place;
/// Creates a new generation 7 damage library. `has_randomness` defines whether a random damage
/// modifier (0.85x - 1.00x) is applied to the calculated damage.
#[no_mangle]
extern "C" fn gen_7_damage_library_new(randomness: u8) -> IdentifiablePointer<Box<dyn DamageLibrary>> {
let v: Box<dyn DamageLibrary> = Box::new(Gen7DamageLibrary::new(randomness == 1));
let id = v.value_identifier();
let ptr = Box::into_raw(Box::new(v));
IdentifiablePointer::new(ptr, id)
}
/// Drops a DamageLibrary.
#[no_mangle]
extern "C" fn damage_library_drop(ptr: OwnedPtr<Box<dyn DamageLibrary>>) {
unsafe { drop_in_place(ptr) };
}