/* * ===================================================================================== * * Filename: ScriptEngine.cpp * * Description: * * Created: 20/12/2018 00:42:55 * * Author: Quentin Bazin, * * ===================================================================================== */ #include "ItemBlock.hpp" #include "ScriptEngine.hpp" #include "Player.hpp" #include "Registry.hpp" #include ScriptEngine *ScriptEngine::s_instance = nullptr; void ScriptEngine::init() { setInstance(this); m_lua.new_usertype("Player", "inventory", &Player::inventory); m_lua.new_usertype("Inventory", "width", &Inventory::width, "height", &Inventory::height, "getStack", &Inventory::getStackRef, "setStack", &Inventory::setStack, "addStack", &Inventory::addStack ); m_lua.new_usertype("ItemStack", "item", sol::property(&ItemStack::item, &ItemStack::setItem), "amount", sol::property(&ItemStack::amount, &ItemStack::setAmount) ); m_lua.new_usertype("Item", "name", &Item::name, "id", &Item::id ); m_lua.new_usertype("Registry", "registerBlock", [] (Registry *reg, u32 id, u32 textureID, const std::string &name) { reg->registerBlock(id, textureID, name); }, "registerItemBlock", [] (Registry *reg, u32 id, const std::string &name) { reg->registerItem(id, id, name); }, "registerItem", [] (Registry *reg, u32 id, const std::string &name, u32 textureID) { reg->registerItem(id, textureID, name); } ); m_lua["Registry"] = &Registry::getInstance(); m_lua.open_libraries(); m_lua.script_file("mods/test.lua"); }