1
Fork 0
mirror of https://github.com/redstrate/Kawari.git synced 2025-06-30 11:47:45 +00:00

Log, don't panic for syntax errors in Global.lua

See #39
This commit is contained in:
Joshua Goins 2025-06-22 08:19:42 -04:00
parent 92a5cc48eb
commit cdcce88c5f
3 changed files with 24 additions and 30 deletions

View file

@ -905,7 +905,9 @@ async fn main() {
{
let mut lua = lua.lock().unwrap();
load_global_script(&mut lua);
if let Err(err) = load_global_script(&mut lua) {
tracing::warn!("Failed to load Global.lua: {:?}", err);
}
}
let (handle, _) = spawn_main_loop();

View file

@ -626,7 +626,9 @@ impl ZoneConnection {
}
Task::ReloadScripts => {
let mut lua = self.lua.lock().unwrap();
load_global_script(&mut lua);
if let Err(err) = load_global_script(&mut lua) {
tracing::warn!("Failed to load Global.lua: {:?}", err);
}
}
Task::ToggleInvisibility { invisible } => {
self.toggle_invisibility(*invisible).await;

View file

@ -415,56 +415,46 @@ impl FromLua for EffectsBuilder {
}
/// Loads `Global.lua`
pub fn load_global_script(lua: &mut Lua) {
let register_action_func = lua
.create_function(|lua, (action_id, action_script): (u32, String)| {
pub fn load_global_script(lua: &mut Lua) -> mlua::Result<()> {
let register_action_func =
lua.create_function(|lua, (action_id, action_script): (u32, String)| {
tracing::info!("Registering {action_id} with {action_script}!");
let mut state = lua.app_data_mut::<ExtraLuaState>().unwrap();
let _ = state.action_scripts.insert(action_id, action_script);
Ok(())
})
.unwrap();
})?;
let register_event_func = lua
.create_function(|lua, (event_id, event_script): (u32, String)| {
let register_event_func =
lua.create_function(|lua, (event_id, event_script): (u32, String)| {
tracing::info!("Registering {event_id} with {event_script}!");
let mut state = lua.app_data_mut::<ExtraLuaState>().unwrap();
let _ = state.event_scripts.insert(event_id, event_script);
Ok(())
})
.unwrap();
})?;
let register_command_func = lua
.create_function(|lua, (command_name, command_script): (String, String)| {
let register_command_func =
lua.create_function(|lua, (command_name, command_script): (String, String)| {
tracing::info!("Registering {command_name} with {command_script}!");
let mut state = lua.app_data_mut::<ExtraLuaState>().unwrap();
let _ = state.command_scripts.insert(command_name, command_script);
Ok(())
})
.unwrap();
})?;
lua.set_app_data(ExtraLuaState::default());
lua.globals().set("registerAction", register_action_func)?;
lua.globals().set("registerEvent", register_event_func)?;
lua.globals()
.set("registerAction", register_action_func)
.unwrap();
lua.globals()
.set("registerEvent", register_event_func)
.unwrap();
lua.globals()
.set("registerCommand", register_command_func)
.unwrap();
.set("registerCommand", register_command_func)?;
let effectsbuilder_constructor = lua
.create_function(|_, ()| Ok(EffectsBuilder::default()))
.unwrap();
let effectsbuilder_constructor = lua.create_function(|_, ()| Ok(EffectsBuilder::default()))?;
lua.globals()
.set("EffectsBuilder", effectsbuilder_constructor)
.unwrap();
.set("EffectsBuilder", effectsbuilder_constructor)?;
let config = get_config();
let file_name = format!("{}/Global.lua", &config.world.scripts_location);
lua.load(std::fs::read(&file_name).expect("Failed to locate scripts directory!"))
.set_name("@".to_string() + &file_name)
.exec()
.unwrap();
.exec()?;
Ok(())
}