From 4cff57fe71577c85adfd287a61008b09da9d2e1b Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Fri, 28 Mar 2014 04:11:34 +1100 Subject: [PATCH] Established a connection between the Region objects and lua --- common/map/map_generator.cpp | 2 +- common/script/region_api.cpp | 48 ++++++++++++++++++++++++++++++++++- common/script/region_api.hpp | 2 +- rsc/scripts/setup_server.lua | 6 ++++- server/server_application.cpp | 4 +++ 5 files changed, 58 insertions(+), 4 deletions(-) diff --git a/common/map/map_generator.cpp b/common/map/map_generator.cpp index d0fbbca..8f7a9ad 100644 --- a/common/map/map_generator.cpp +++ b/common/map/map_generator.cpp @@ -42,7 +42,7 @@ void LuaGenerator::Create(Region** const ptr, int width, int height, int depth, //generate the lua-driven maps lua_getglobal(state, "CreateRegion"); - lua_pushlightuserdata(state, ptr); + lua_pushlightuserdata(state, *ptr); lua_pcall(state, 1, 0, 0); } diff --git a/common/script/region_api.cpp b/common/script/region_api.cpp index d378835..2f5a3c1 100644 --- a/common/script/region_api.cpp +++ b/common/script/region_api.cpp @@ -21,7 +21,53 @@ */ #include "region_api.hpp" +#include "region.hpp" + +static int setTile(lua_State* L) { +// Region* ptr = lua_touserdata(L, 1); +// ptr->SetTile +} + +static int getTile(lua_State* L) { + //TODO +} + +static int getWidth(lua_State* L) { + //TODO +} + +static int getHeight(lua_State* L) { + //TODO +} + +static int getDepth(lua_State* L) { + //TODO +} + +static int getX(lua_State* L) { + Region* ptr = (Region*)lua_touserdata(L, 1); + lua_pushinteger(L, ptr->GetX()); + return 1; +} + +static int getY(lua_State* L) { + Region* ptr = (Region*)lua_touserdata(L, 1); + lua_pushinteger(L, ptr->GetY()); + return 1; +} + +static const luaL_Reg regionlib[] = { + {"SetTile",setTile}, + {"GetTile",getTile}, + {"GetWidth",getWidth}, + {"GetHeight",getHeight}, + {"GetDepth",getDepth}, + {"GetX",getX}, + {"GetY",getY}, + {nullptr, nullptr} +}; + LUAMOD_API int luaopen_regionapi(lua_State* L) { - //TODO: stuff + luaL_newlib(L, regionlib); return 1; } \ No newline at end of file diff --git a/common/script/region_api.hpp b/common/script/region_api.hpp index 310074d..f193950 100644 --- a/common/script/region_api.hpp +++ b/common/script/region_api.hpp @@ -24,7 +24,7 @@ #include "lua/lua.hpp" -#define LUA_REGIONLIBNAME "region" +#define LUA_REGIONLIBNAME "Region" LUAMOD_API int luaopen_regionapi(lua_State* L); #endif diff --git a/rsc/scripts/setup_server.lua b/rsc/scripts/setup_server.lua index a2cf14a..448b25f 100644 --- a/rsc/scripts/setup_server.lua +++ b/rsc/scripts/setup_server.lua @@ -1 +1,5 @@ -print("Lua script check OK") \ No newline at end of file +print("Lua script check OK (./rsc)") + +function CreateRegion(r) + print(Region.GetX(r), Region.GetY(r)) +end \ No newline at end of file diff --git a/server/server_application.cpp b/server/server_application.cpp index 9aeed88..d39223b 100644 --- a/server/server_application.cpp +++ b/server/server_application.cpp @@ -110,6 +110,10 @@ void ServerApplication::Init(int argc, char** argv) { //finalize the startup cout << "Startup completed successfully" << endl; + + //debugging + mapPager.GetRegion(0,0); + mapPager.GetRegion(128,256); } void ServerApplication::Loop() {