nano9 0.1.0-alpha.2

A Pico-8 compatibility layer for Bevy
Documentation
use super::*;

#[cfg(feature = "scripting")]
use bevy_mod_scripting::core::bindings::script_value::ScriptValue;


pub(crate) fn plugin(app: &mut App) {
    #[cfg(feature = "scripting")]
    lua::plugin(app);
}

impl super::Pico8<'_, '_> {
    #[cfg(feature = "scripting")]
    pub fn rnd(&mut self, value: Option<ScriptValue>) -> ScriptValue {
        self.rand8.rnd(value)
    }

    pub fn srand(&mut self, seed: u64) {
        self.rand8.srand(seed)
    }
}

#[cfg(feature = "scripting")]
mod lua {
    use super::*;
    use crate::pico8::lua::with_pico8;

use bevy_mod_scripting::core::bindings::{
        function::{
            namespace::{GlobalNamespace, NamespaceBuilder},
            script_function::FunctionCallContext,
        },
        script_value::ScriptValue,
    };
pub(crate) fn plugin(app: &mut App) {
    let world = app.world_mut();

    NamespaceBuilder::<GlobalNamespace>::new_unregistered(world)
        .register(
            "rnd",
            |ctx: FunctionCallContext, value: Option<ScriptValue>| {
                with_pico8(&ctx, move |pico8| Ok(pico8.rnd(value)))
            },
        )
        .register("srand", |ctx: FunctionCallContext, value: u64| {
            with_pico8(&ctx, move |pico8| {
                pico8.srand(value);
                Ok(())
            })
        })

        ;
}

}