diff --git a/src/logic/scripting/lua/libfile.cpp b/src/logic/scripting/lua/libfile.cpp index b14a15b4..f462928e 100644 --- a/src/logic/scripting/lua/libfile.cpp +++ b/src/logic/scripting/lua/libfile.cpp @@ -17,8 +17,12 @@ static fs::path resolve_path(lua_State*, const std::string& path) { static int l_file_find(lua_State* L) { std::string path = lua_tostring(L, 1); - lua_pushstring(L, scripting::engine->getResPaths()->findRaw(path).c_str()); - return 1; + try { + lua_pushstring(L, scripting::engine->getResPaths()->findRaw(path).c_str()); + return 1; + } catch (const std::runtime_error& err) { + return 0; + } } static int l_file_resolve(lua_State* L) { diff --git a/src/logic/scripting/lua/libinput.cpp b/src/logic/scripting/lua/libinput.cpp index beb2c5de..ed415a16 100644 --- a/src/logic/scripting/lua/libinput.cpp +++ b/src/logic/scripting/lua/libinput.cpp @@ -25,6 +25,12 @@ static int l_keycode(lua_State* L) { return 1; } +static int l_mousecode(lua_State* L) { + const char* name = state->requireString(1); + lua_pushinteger(L, static_cast(input_util::mousecode_from(name))); + return 1; +} + static int l_add_callback(lua_State* L) { auto bindname = state->requireString(1); const auto& bind = Events::bindings.find(bindname); @@ -51,6 +57,7 @@ static int l_get_mouse_pos(lua_State* L) { const luaL_Reg inputlib [] = { {"keycode", lua_wrap_errors}, + {"mousecode", lua_wrap_errors}, {"add_callback", lua_wrap_errors}, {"get_mouse_pos", lua_wrap_errors}, {NULL, NULL}