Files
integration/luprex/syscpp/world.cpp

50 lines
1.1 KiB
C++
Raw Normal View History

#include "world.hpp"
#include "idalloc.hpp"
2021-01-16 01:24:33 -05:00
#include <iostream>
LuaDefineType(World);
World::~World() {
}
2021-01-16 01:24:33 -05:00
World::World() {
// Create the lua state.
lua_state_ = lua_open();
if (lua_state_ == nullptr) {
std::cerr << "Cannot create lua state." << std::endl;
exit(1);
}
// Initialize the userdata metatables.
LuaStack::register_all_userdata(lua_state_);
// Prepare to manipulate the lua state.
LuaVar world;
2021-01-16 01:24:33 -05:00
LuaStack LS(lua_state_, world);
// Put the world pointer into the lua registry.
LS.newpointer(world, this, false);
LS.setfield(LuaRegistry, "world", world);
2021-01-16 01:24:33 -05:00
// Initialize the SourceDB
source_db_.initialize(lua_state_);
// Do an initial lua source update and then environment rebuild.
source_db_.update();
source_db_.rebuild();
// Run unit tests.
source_db_.run_unittests();
}
World *World::fetch(lua_State *L) {
LuaVar world;
LuaStack LS(L, world);
LS.getfield(world, LuaRegistry, "world");
World *w = LS.ckuserdata<World>(world);
LS.result();
return w;
}