Embed LuaJIT part 1

This commit is contained in:
wheremyfoodat 2023-09-17 16:15:54 +03:00
parent c0e3d6d7dd
commit b908f3efc1
7 changed files with 99 additions and 2 deletions

View file

@ -82,11 +82,13 @@ Emulator::Emulator()
}
}
lua.initialize();
reset(ReloadOption::NoReload);
}
Emulator::~Emulator() {
config.save(std::filesystem::current_path() / "config.toml");
lua.close();
#ifdef PANDA3DS_ENABLE_DISCORD_RPC
discordRpc.stop();
@ -357,6 +359,8 @@ void Emulator::run() {
if (path.extension() == ".amiibo") {
loadAmiibo(path);
} else if (path.extension() == ".lua") {
lua.loadFile(droppedDir);
} else {
loadROM(path);
}

37
src/lua.cpp Normal file
View file

@ -0,0 +1,37 @@
#ifdef PANDA3DS_ENABLE_LUA
#include "lua.hpp"
void LuaManager::initialize() {
L = luaL_newstate(); // Open Lua
if (!L) {
printf("Lua initialization failed, continuing without Lua");
initialized = false;
return;
}
luaL_openlibs(L);
initialized = true;
}
void LuaManager::close() {
if (initialized) {
lua_close(L);
initialized = false;
L = nullptr;
}
}
void LuaManager::loadFile(const char* path) {
int status = luaL_loadfile(L, path); // load Lua script
int ret = lua_pcall(L, 0, 0, 0); // tell Lua to run the script
if (ret != 0) {
fprintf(stderr, "%s\n", lua_tostring(L, -1)); // tell us what mistake we made
}
}
void LuaManager::reset() {
// Reset scripts
}
#endif