use std::time::Duration;
use crate::constants;
#[cfg(not(mock_protologic))]
#[link(wasm_import_module = "wasi_snapshot_preview1")]
extern
{
pub fn sched_yield() -> i32;
}
#[cfg(mock_protologic)]
pub unsafe fn sched_yield() -> i32 { panic!("extern called in test mode!") }
pub fn wait_tick()
{
wait_ticks(1);
}
pub fn wait_ticks(ticks: u32)
{
if ticks == 0 {
return;
}
for _ in 0..ticks {
unsafe { sched_yield(); }
}
unsafe { crate::lowlevel::quickstate::quickstate_invalidate_cache(); }
}
pub fn wait_time(timespan: Duration)
{
let tick_count = f32::floor(timespan.as_secs_f32() / constants::tick_duration()) as u32;
wait_ticks(tick_count);
}