OpenMiner/source/lua/ScriptEngine.cpp

71 lines
1.7 KiB
C++
Raw Normal View History

/*
* =====================================================================================
*
* Filename: ScriptEngine.cpp
*
* Description:
*
* Created: 20/12/2018 00:42:55
*
* Author: Quentin Bazin, <quent42340@gmail.com>
*
* =====================================================================================
*/
#include "LuaGUI.hpp"
#include "LuaMod.hpp"
#include "Player.hpp"
#include "Registry.hpp"
#include "ScriptEngine.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<Player>("Player",
"inventory", &Player::inventory);
m_lua.new_usertype<Inventory>("Inventory",
2019-01-07 03:55:37 +01:00
"add_stack", &Inventory::addStack
);
2019-01-07 03:55:37 +01:00
m_lua.new_usertype<glm::ivec3>("ivec3",
"x", &glm::ivec3::x,
"y", &glm::ivec3::y,
"z", &glm::ivec3::z
);
2019-01-07 03:55:37 +01:00
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);
}