#![no_std]
extern crate alloc;
#[macro_use]
extern crate sys;
extern crate playdate_lua as lua;
use core::ffi::c_int;
use core::ptr::NonNull;
use lua::Lua;
use sys::EventLoopCtrl;
use sys::ffi::*;
use system::System;
use system::event::SystemEventExt as _;
use system::update::UpdateCtrl;
#[no_mangle]
fn event_handler(_api: NonNull<PlaydateAPI>, event: PDSystemEvent, _: u32) -> EventLoopCtrl {
if event != PDSystemEvent::InitLua {
return EventLoopCtrl::Continue;
}
System::Default().set_update_callback_static(Some(on_update), ());
Lua::Default().add_function(Some(log_to_console_from_main_dot_lua), "example.logToConsole")
.expect("add_function 'log_to_console_from_main_dot_lua' should succeed");
EventLoopCtrl::Continue
}
fn on_update(_: &mut ()) -> UpdateCtrl {
UpdateCtrl::Continue
}
pub unsafe extern "C" fn log_to_console_from_main_dot_lua(_lua_state: *mut lua_State) -> c_int {
let arg_string = Lua::Default().get_arg_string(1)
.expect("get_arg_string should succeed");
let f = (*(*sys::API).system).logToConsole
.expect("get logToConsole to succeed");
f(arg_string.as_ptr());
0
}
ll_symbols!();