/* * ===================================================================================== * * Filename: ScriptEngine.cpp * * Description: * * Created: 20/12/2018 00:42:55 * * Author: Quentin Bazin, * * ===================================================================================== */ #include "LuaCore.hpp" #include "LuaGUI.hpp" #include "LuaMod.hpp" #include "Player.hpp" #include "Registry.hpp" #include "ScriptEngine.hpp" #include "World.hpp" ScriptEngine *ScriptEngine::s_instance = nullptr; void ScriptEngine::init() { setInstance(this); initUsertypes(); // FIXME: Remove these lines when they're not needed anymore m_lua["registry"] = &Registry::getInstance(); m_lua["open_furnace"] = &openFurnace; m_lua["update_furnace"] = &updateFurnace; m_lua.open_libraries(sol::lib::base); m_lua.safe_script_file("mods/test.lua"); } void ScriptEngine::initUsertypes() { m_lua.new_usertype("World"); m_lua.new_usertype("Player", "inventory", &Player::inventory); m_lua.new_usertype("Inventory", "add_stack", &Inventory::addStack ); m_lua.new_usertype("ivec3", "x", &glm::ivec3::x, "y", &glm::ivec3::y, "z", &glm::ivec3::z ); LuaCore::initUsertype(m_lua); LuaMod::initUsertype(m_lua); LuaGUI::initUsertype(m_lua); } // FIXME: All the code below will be removed once these blocks are fully implemented in Lua #include "BlockFurnace.hpp" #include "Chunk.hpp" #include "Player.hpp" #include "World.hpp" bool ScriptEngine::openFurnace(const glm::ivec3 &position, Player &player, World &world) { BlockFurnace block; return block.onBlockActivated(position, player, world); } void ScriptEngine::updateFurnace(const glm::ivec3 &position, Player &player, Chunk &chunk, World &world) { BlockFurnace block; return block.onTick(position, player, chunk, world); }