Added RegionPagerLua destructor
This commit is contained in:
@@ -23,6 +23,17 @@
|
|||||||
|
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
|
||||||
|
RegionPagerLua::~RegionPagerLua() {
|
||||||
|
//unload all regions
|
||||||
|
UnloadAll();
|
||||||
|
//clear any stored functions
|
||||||
|
luaL_unref(lua, LUA_REGISTRYINDEX, loadRef);
|
||||||
|
luaL_unref(lua, LUA_REGISTRYINDEX, saveRef);
|
||||||
|
luaL_unref(lua, LUA_REGISTRYINDEX, createRef);
|
||||||
|
luaL_unref(lua, LUA_REGISTRYINDEX, unloadRef);
|
||||||
|
}
|
||||||
|
|
||||||
|
//return the loaded region, or nullptr on failure
|
||||||
Region* RegionPagerLua::LoadRegion(int x, int y) {
|
Region* RegionPagerLua::LoadRegion(int x, int y) {
|
||||||
//get the pager's function from the registry
|
//get the pager's function from the registry
|
||||||
lua_rawgeti(lua, LUA_REGISTRYINDEX, loadRef);
|
lua_rawgeti(lua, LUA_REGISTRYINDEX, loadRef);
|
||||||
@@ -54,6 +65,7 @@ Region* RegionPagerLua::LoadRegion(int x, int y) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//return the saved region, or nullptr on failure
|
||||||
Region* RegionPagerLua::SaveRegion(int x, int y) {
|
Region* RegionPagerLua::SaveRegion(int x, int y) {
|
||||||
//get the pager's function from the registry
|
//get the pager's function from the registry
|
||||||
lua_rawgeti(lua, LUA_REGISTRYINDEX, saveRef);
|
lua_rawgeti(lua, LUA_REGISTRYINDEX, saveRef);
|
||||||
@@ -88,6 +100,7 @@ Region* RegionPagerLua::SaveRegion(int x, int y) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//return the created region, or nullptr on failure
|
||||||
Region* RegionPagerLua::CreateRegion(int x, int y) {
|
Region* RegionPagerLua::CreateRegion(int x, int y) {
|
||||||
if (FindRegion(x, y)) {
|
if (FindRegion(x, y)) {
|
||||||
throw(std::logic_error("Cannot overwrite an existing region"));
|
throw(std::logic_error("Cannot overwrite an existing region"));
|
||||||
@@ -116,6 +129,7 @@ Region* RegionPagerLua::CreateRegion(int x, int y) {
|
|||||||
return ®ionList.front();
|
return ®ionList.front();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//no return
|
||||||
void RegionPagerLua::UnloadRegion(int x, int y) {
|
void RegionPagerLua::UnloadRegion(int x, int y) {
|
||||||
//get the pager's function from the registry
|
//get the pager's function from the registry
|
||||||
lua_rawgeti(lua, LUA_REGISTRYINDEX, unloadRef);
|
lua_rawgeti(lua, LUA_REGISTRYINDEX, unloadRef);
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
class RegionPagerLua : public RegionPagerBase {
|
class RegionPagerLua : public RegionPagerBase {
|
||||||
public:
|
public:
|
||||||
RegionPagerLua() = default;
|
RegionPagerLua() = default;
|
||||||
~RegionPagerLua() = default;
|
~RegionPagerLua();
|
||||||
|
|
||||||
//region manipulation
|
//region manipulation
|
||||||
Region* LoadRegion(int x, int y) override;
|
Region* LoadRegion(int x, int y) override;
|
||||||
|
|||||||
Reference in New Issue
Block a user