Created a separate API for the RoomManager class

This commit is contained in:
Kayne Ruse
2014-06-21 07:19:51 +10:00
parent 82c776df83
commit 8afd0e7c8a
5 changed files with 83 additions and 15 deletions
+2
View File
@@ -39,6 +39,7 @@
#include "region_api.hpp" #include "region_api.hpp"
#include "pager_api.hpp" #include "pager_api.hpp"
#include "room_api.hpp" #include "room_api.hpp"
#include "room_mgr_api.hpp"
#include "generator_api.hpp" #include "generator_api.hpp"
//these libs are loaded by lua.c and are readily available to any Lua program //these libs are loaded by lua.c and are readily available to any Lua program
@@ -59,6 +60,7 @@ static const luaL_Reg loadedlibs[] = {
{LUA_REGIONLIBNAME, luaopen_regionapi}, {LUA_REGIONLIBNAME, luaopen_regionapi},
{LUA_PAGERLIBNAME, luaopen_pagerapi}, {LUA_PAGERLIBNAME, luaopen_pagerapi},
{LUA_ROOMLIBNAME, luaopen_roomapi}, {LUA_ROOMLIBNAME, luaopen_roomapi},
{LUA_ROOMMGRLIBNAME, luaopen_roommgrapi},
{LUA_GENERATORLIBNAME, luaopen_generatorapi}, {LUA_GENERATORLIBNAME, luaopen_generatorapi},
{NULL, NULL} {NULL, NULL}
+1 -12
View File
@@ -38,22 +38,11 @@ static int getRegionPager(lua_State* L) {
return 1; return 1;
} }
//RoomManager only //TODO: generators
static int getRoom(lua_State* L) {
//get the room manager
lua_pushstring(L, ROOM_MANAGER_PSEUDOINDEX);
lua_gettable(L, LUA_REGISTRYINDEX);
RoomManager* roomMgr = reinterpret_cast<RoomManager*>(lua_touserdata(L, -1));
//push the room and return it
lua_pushlightuserdata(L, reinterpret_cast<void*>( roomMgr->GetRoom(lua_tointeger(L, -2)) ));
return 1;
}
static const luaL_Reg roomlib[] = { static const luaL_Reg roomlib[] = {
{"gettype",getType}, {"gettype",getType},
{"getregionpager",getRegionPager}, {"getregionpager",getRegionPager},
{"getroom",getRoom},
{nullptr, nullptr} {nullptr, nullptr}
}; };
+4 -3
View File
@@ -22,15 +22,16 @@
#ifndef ROOMDATA_HPP_ #ifndef ROOMDATA_HPP_
#define ROOMDATA_HPP_ #define ROOMDATA_HPP_
#include "map_type.hpp"
//map system //map system
#include "map_type.hpp"
#include "region_pager_lua.hpp" #include "region_pager_lua.hpp"
#include "base_generator.hpp"
struct RoomData { struct RoomData {
//members //members
RegionPagerLua pager;
MapType type; MapType type;
RegionPagerLua pager;
BaseGenerator* generator = nullptr;
//TODO: collision map //TODO: collision map
//TODO: NPCs? //TODO: NPCs?
+46
View File
@@ -0,0 +1,46 @@
/* Copyright: (c) Kayne Ruse 2014
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
*/
#include "room_mgr_api.hpp"
#include "room_manager.hpp"
#include "room_data.hpp"
static int getRoom(lua_State* L) {
//get the room manager
lua_pushstring(L, ROOM_MANAGER_PSEUDOINDEX);
lua_gettable(L, LUA_REGISTRYINDEX);
RoomManager* roomMgr = reinterpret_cast<RoomManager*>(lua_touserdata(L, -1));
//push the room and return it
lua_pushlightuserdata(L, reinterpret_cast<void*>( roomMgr->GetRoom(lua_tointeger(L, -2)) ));
return 1;
}
static const luaL_Reg roommgrlib[] = {
{"getroom",getRoom},
{nullptr, nullptr}
};
LUAMOD_API int luaopen_roommgrapi(lua_State* L) {
luaL_newlib(L, roommgrlib);
return 1;
}
+30
View File
@@ -0,0 +1,30 @@
/* Copyright: (c) Kayne Ruse 2014
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
*/
#ifndef ROOMMGRAPI_HPP_
#define ROOMMGRAPI_HPP_
#include "lua/lua.hpp"
#define LUA_ROOMMGRLIBNAME "roommgr"
LUAMOD_API int luaopen_roommgrapi(lua_State* L);
#endif