32 lines
803 B
Rust
32 lines
803 B
Rust
|
use crate::ffi::{ffi_getter, ExternPointer, OwnedPtr};
|
||
|
use crate::static_data::{Nature, Statistic};
|
||
|
use std::ptr::drop_in_place;
|
||
|
|
||
|
#[no_mangle]
|
||
|
extern "C" fn nature_new(
|
||
|
increase_stat: Statistic,
|
||
|
decrease_stat: Statistic,
|
||
|
increase_modifier: f32,
|
||
|
decrease_modifier: f32,
|
||
|
) -> OwnedPtr<Nature> {
|
||
|
Box::into_raw(Box::new(Nature::new(
|
||
|
increase_stat,
|
||
|
decrease_stat,
|
||
|
increase_modifier,
|
||
|
decrease_modifier,
|
||
|
)))
|
||
|
}
|
||
|
|
||
|
#[no_mangle]
|
||
|
unsafe extern "C" fn nature_drop(ptr: OwnedPtr<Nature>) {
|
||
|
drop_in_place(ptr)
|
||
|
}
|
||
|
|
||
|
ffi_getter!(Nature, increased_stat, Statistic);
|
||
|
ffi_getter!(Nature, decreased_stat, Statistic);
|
||
|
|
||
|
#[no_mangle]
|
||
|
extern "C" fn nature_get_stat_modifier(ptr: ExternPointer<Nature>, stat: Statistic) -> f32 {
|
||
|
ptr.as_ref().get_stat_modifier(stat)
|
||
|
}
|