From d3bf099a981ebd54b0cd692bc8d8f1f8a73760f5 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Sat, 21 Jun 2014 05:52:27 +1000 Subject: [PATCH 1/4] Arranged server's source into directories --- server/{ => accounts}/account_data.hpp | 0 server/{ => accounts}/account_manager.cpp | 0 server/{ => accounts}/account_manager.hpp | 0 server/accounts/makefile | 37 +++++++++++++++++++ server/{ => characters}/character_manager.cpp | 0 server/{ => characters}/character_manager.hpp | 0 server/characters/makefile | 37 +++++++++++++++++++ server/{ => combat}/combat_manager.cpp | 0 server/{ => combat}/combat_manager.hpp | 0 server/combat/makefile | 37 +++++++++++++++++++ .../{ => enemies}/enemy_factory_generic.cpp | 0 .../{ => enemies}/enemy_factory_generic.hpp | 0 .../{ => enemies}/enemy_factory_interface.hpp | 0 server/{ => enemies}/enemy_manager.cpp | 0 server/{ => enemies}/enemy_manager.hpp | 0 server/enemies/makefile | 37 +++++++++++++++++++ server/makefile | 10 ++++- server/{ => mapgen}/chunk_data.hpp | 0 server/mapgen/makefile | 37 +++++++++++++++++++ server/{ => mapgen}/overworld_generator.cpp | 0 server/{ => mapgen}/overworld_generator.hpp | 0 server/{ => mapgen}/terrain_type.hpp | 0 server/rooms/makefile | 37 +++++++++++++++++++ server/{ => rooms}/room_api.cpp | 0 server/{ => rooms}/room_api.hpp | 0 server/{ => rooms}/room_data.hpp | 0 server/{ => rooms}/room_manager.cpp | 0 server/{ => rooms}/room_manager.hpp | 0 28 files changed, 230 insertions(+), 2 deletions(-) rename server/{ => accounts}/account_data.hpp (100%) rename server/{ => accounts}/account_manager.cpp (100%) rename server/{ => accounts}/account_manager.hpp (100%) create mode 100644 server/accounts/makefile rename server/{ => characters}/character_manager.cpp (100%) rename server/{ => characters}/character_manager.hpp (100%) create mode 100644 server/characters/makefile rename server/{ => combat}/combat_manager.cpp (100%) rename server/{ => combat}/combat_manager.hpp (100%) create mode 100644 server/combat/makefile rename server/{ => enemies}/enemy_factory_generic.cpp (100%) rename server/{ => enemies}/enemy_factory_generic.hpp (100%) rename server/{ => enemies}/enemy_factory_interface.hpp (100%) rename server/{ => enemies}/enemy_manager.cpp (100%) rename server/{ => enemies}/enemy_manager.hpp (100%) create mode 100644 server/enemies/makefile rename server/{ => mapgen}/chunk_data.hpp (100%) create mode 100644 server/mapgen/makefile rename server/{ => mapgen}/overworld_generator.cpp (100%) rename server/{ => mapgen}/overworld_generator.hpp (100%) rename server/{ => mapgen}/terrain_type.hpp (100%) create mode 100644 server/rooms/makefile rename server/{ => rooms}/room_api.cpp (100%) rename server/{ => rooms}/room_api.hpp (100%) rename server/{ => rooms}/room_data.hpp (100%) rename server/{ => rooms}/room_manager.cpp (100%) rename server/{ => rooms}/room_manager.hpp (100%) diff --git a/server/account_data.hpp b/server/accounts/account_data.hpp similarity index 100% rename from server/account_data.hpp rename to server/accounts/account_data.hpp diff --git a/server/account_manager.cpp b/server/accounts/account_manager.cpp similarity index 100% rename from server/account_manager.cpp rename to server/accounts/account_manager.cpp diff --git a/server/account_manager.hpp b/server/accounts/account_manager.hpp similarity index 100% rename from server/account_manager.hpp rename to server/accounts/account_manager.hpp diff --git a/server/accounts/makefile b/server/accounts/makefile new file mode 100644 index 0000000..8d12afe --- /dev/null +++ b/server/accounts/makefile @@ -0,0 +1,37 @@ +#config +INCLUDES+=. +LIBS+= +CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES)) + +#source +CXXSRC=$(wildcard *.cpp) + +#objects +OBJDIR=obj +OBJ+=$(addprefix $(OBJDIR)/,$(CXXSRC:.cpp=.o)) + +#output +OUTDIR=.. +OUT=$(addprefix $(OUTDIR)/,server.a) + +#targets +all: $(OBJ) $(OUT) + ar -crs $(OUT) $(OBJ) + +$(OBJ): | $(OBJDIR) + +$(OUT): | $(OUTDIR) + +$(OBJDIR): + mkdir $(OBJDIR) + +$(OUTDIR): + mkdir $(OUTDIR) + +$(OBJDIR)/%.o: %.cpp + $(CXX) $(CXXFLAGS) -c -o $@ $< + +clean: + $(RM) *.o *.a *.exe + +rebuild: clean all diff --git a/server/character_manager.cpp b/server/characters/character_manager.cpp similarity index 100% rename from server/character_manager.cpp rename to server/characters/character_manager.cpp diff --git a/server/character_manager.hpp b/server/characters/character_manager.hpp similarity index 100% rename from server/character_manager.hpp rename to server/characters/character_manager.hpp diff --git a/server/characters/makefile b/server/characters/makefile new file mode 100644 index 0000000..68368e7 --- /dev/null +++ b/server/characters/makefile @@ -0,0 +1,37 @@ +#config +INCLUDES+=. ../../common/gameplay ../../common/utilities +LIBS+= +CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES)) + +#source +CXXSRC=$(wildcard *.cpp) + +#objects +OBJDIR=obj +OBJ+=$(addprefix $(OBJDIR)/,$(CXXSRC:.cpp=.o)) + +#output +OUTDIR=.. +OUT=$(addprefix $(OUTDIR)/,server.a) + +#targets +all: $(OBJ) $(OUT) + ar -crs $(OUT) $(OBJ) + +$(OBJ): | $(OBJDIR) + +$(OUT): | $(OUTDIR) + +$(OBJDIR): + mkdir $(OBJDIR) + +$(OUTDIR): + mkdir $(OUTDIR) + +$(OBJDIR)/%.o: %.cpp + $(CXX) $(CXXFLAGS) -c -o $@ $< + +clean: + $(RM) *.o *.a *.exe + +rebuild: clean all diff --git a/server/combat_manager.cpp b/server/combat/combat_manager.cpp similarity index 100% rename from server/combat_manager.cpp rename to server/combat/combat_manager.cpp diff --git a/server/combat_manager.hpp b/server/combat/combat_manager.hpp similarity index 100% rename from server/combat_manager.hpp rename to server/combat/combat_manager.hpp diff --git a/server/combat/makefile b/server/combat/makefile new file mode 100644 index 0000000..68368e7 --- /dev/null +++ b/server/combat/makefile @@ -0,0 +1,37 @@ +#config +INCLUDES+=. ../../common/gameplay ../../common/utilities +LIBS+= +CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES)) + +#source +CXXSRC=$(wildcard *.cpp) + +#objects +OBJDIR=obj +OBJ+=$(addprefix $(OBJDIR)/,$(CXXSRC:.cpp=.o)) + +#output +OUTDIR=.. +OUT=$(addprefix $(OUTDIR)/,server.a) + +#targets +all: $(OBJ) $(OUT) + ar -crs $(OUT) $(OBJ) + +$(OBJ): | $(OBJDIR) + +$(OUT): | $(OUTDIR) + +$(OBJDIR): + mkdir $(OBJDIR) + +$(OUTDIR): + mkdir $(OUTDIR) + +$(OBJDIR)/%.o: %.cpp + $(CXX) $(CXXFLAGS) -c -o $@ $< + +clean: + $(RM) *.o *.a *.exe + +rebuild: clean all diff --git a/server/enemy_factory_generic.cpp b/server/enemies/enemy_factory_generic.cpp similarity index 100% rename from server/enemy_factory_generic.cpp rename to server/enemies/enemy_factory_generic.cpp diff --git a/server/enemy_factory_generic.hpp b/server/enemies/enemy_factory_generic.hpp similarity index 100% rename from server/enemy_factory_generic.hpp rename to server/enemies/enemy_factory_generic.hpp diff --git a/server/enemy_factory_interface.hpp b/server/enemies/enemy_factory_interface.hpp similarity index 100% rename from server/enemy_factory_interface.hpp rename to server/enemies/enemy_factory_interface.hpp diff --git a/server/enemy_manager.cpp b/server/enemies/enemy_manager.cpp similarity index 100% rename from server/enemy_manager.cpp rename to server/enemies/enemy_manager.cpp diff --git a/server/enemy_manager.hpp b/server/enemies/enemy_manager.hpp similarity index 100% rename from server/enemy_manager.hpp rename to server/enemies/enemy_manager.hpp diff --git a/server/enemies/makefile b/server/enemies/makefile new file mode 100644 index 0000000..5055ccf --- /dev/null +++ b/server/enemies/makefile @@ -0,0 +1,37 @@ +#config +INCLUDES+=. ../rooms ../../common/gameplay ../../common/map ../../common/utilities +LIBS+= +CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES)) + +#source +CXXSRC=$(wildcard *.cpp) + +#objects +OBJDIR=obj +OBJ+=$(addprefix $(OBJDIR)/,$(CXXSRC:.cpp=.o)) + +#output +OUTDIR=.. +OUT=$(addprefix $(OUTDIR)/,server.a) + +#targets +all: $(OBJ) $(OUT) + ar -crs $(OUT) $(OBJ) + +$(OBJ): | $(OBJDIR) + +$(OUT): | $(OUTDIR) + +$(OBJDIR): + mkdir $(OBJDIR) + +$(OUTDIR): + mkdir $(OUTDIR) + +$(OBJDIR)/%.o: %.cpp + $(CXX) $(CXXFLAGS) -c -o $@ $< + +clean: + $(RM) *.o *.a *.exe + +rebuild: clean all diff --git a/server/makefile b/server/makefile index 1d8df31..d596f04 100644 --- a/server/makefile +++ b/server/makefile @@ -1,6 +1,6 @@ #config -INCLUDES+=. ../common/gameplay ../common/map ../common/network ../common/network/packet ../common/network/serial ../common/utilities -LIBS+=../libcommon.a -lSDL_net -lwsock32 -liphlpapi -lmingw32 -lSDLmain -lSDL -llua -lsqlite3 +INCLUDES+=. accounts characters combat enemies mapgen rooms ../common/gameplay ../common/map ../common/network ../common/network/packet ../common/network/serial ../common/utilities +LIBS+=server.a ../libcommon.a -lSDL_net -lwsock32 -liphlpapi -lmingw32 -lSDLmain -lSDL -llua -lsqlite3 CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES)) #source @@ -16,6 +16,12 @@ OUT=$(addprefix $(OUTDIR)/,server) #targets all: $(OBJ) $(OUT) + $(MAKE) -C accounts + $(MAKE) -C characters + $(MAKE) -C combat + $(MAKE) -C enemies + $(MAKE) -C mapgen + $(MAKE) -C rooms $(CXX) $(CXXFLAGS) -o $(OUT) $(OBJ) $(LIBS) $(OBJ): | $(OBJDIR) diff --git a/server/chunk_data.hpp b/server/mapgen/chunk_data.hpp similarity index 100% rename from server/chunk_data.hpp rename to server/mapgen/chunk_data.hpp diff --git a/server/mapgen/makefile b/server/mapgen/makefile new file mode 100644 index 0000000..8d12afe --- /dev/null +++ b/server/mapgen/makefile @@ -0,0 +1,37 @@ +#config +INCLUDES+=. +LIBS+= +CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES)) + +#source +CXXSRC=$(wildcard *.cpp) + +#objects +OBJDIR=obj +OBJ+=$(addprefix $(OBJDIR)/,$(CXXSRC:.cpp=.o)) + +#output +OUTDIR=.. +OUT=$(addprefix $(OUTDIR)/,server.a) + +#targets +all: $(OBJ) $(OUT) + ar -crs $(OUT) $(OBJ) + +$(OBJ): | $(OBJDIR) + +$(OUT): | $(OUTDIR) + +$(OBJDIR): + mkdir $(OBJDIR) + +$(OUTDIR): + mkdir $(OUTDIR) + +$(OBJDIR)/%.o: %.cpp + $(CXX) $(CXXFLAGS) -c -o $@ $< + +clean: + $(RM) *.o *.a *.exe + +rebuild: clean all diff --git a/server/overworld_generator.cpp b/server/mapgen/overworld_generator.cpp similarity index 100% rename from server/overworld_generator.cpp rename to server/mapgen/overworld_generator.cpp diff --git a/server/overworld_generator.hpp b/server/mapgen/overworld_generator.hpp similarity index 100% rename from server/overworld_generator.hpp rename to server/mapgen/overworld_generator.hpp diff --git a/server/terrain_type.hpp b/server/mapgen/terrain_type.hpp similarity index 100% rename from server/terrain_type.hpp rename to server/mapgen/terrain_type.hpp diff --git a/server/rooms/makefile b/server/rooms/makefile new file mode 100644 index 0000000..5eb6456 --- /dev/null +++ b/server/rooms/makefile @@ -0,0 +1,37 @@ +#config +INCLUDES+=. ../../common/map +LIBS+= +CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES)) + +#source +CXXSRC=$(wildcard *.cpp) + +#objects +OBJDIR=obj +OBJ+=$(addprefix $(OBJDIR)/,$(CXXSRC:.cpp=.o)) + +#output +OUTDIR=.. +OUT=$(addprefix $(OUTDIR)/,server.a) + +#targets +all: $(OBJ) $(OUT) + ar -crs $(OUT) $(OBJ) + +$(OBJ): | $(OBJDIR) + +$(OUT): | $(OUTDIR) + +$(OBJDIR): + mkdir $(OBJDIR) + +$(OUTDIR): + mkdir $(OUTDIR) + +$(OBJDIR)/%.o: %.cpp + $(CXX) $(CXXFLAGS) -c -o $@ $< + +clean: + $(RM) *.o *.a *.exe + +rebuild: clean all diff --git a/server/room_api.cpp b/server/rooms/room_api.cpp similarity index 100% rename from server/room_api.cpp rename to server/rooms/room_api.cpp diff --git a/server/room_api.hpp b/server/rooms/room_api.hpp similarity index 100% rename from server/room_api.hpp rename to server/rooms/room_api.hpp diff --git a/server/room_data.hpp b/server/rooms/room_data.hpp similarity index 100% rename from server/room_data.hpp rename to server/rooms/room_data.hpp diff --git a/server/room_manager.cpp b/server/rooms/room_manager.cpp similarity index 100% rename from server/room_manager.cpp rename to server/rooms/room_manager.cpp diff --git a/server/room_manager.hpp b/server/rooms/room_manager.hpp similarity index 100% rename from server/room_manager.hpp rename to server/rooms/room_manager.hpp From 924ebc2ee9c21f7e55d5e0c536f537b6f25fc56c Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Sat, 21 Jun 2014 06:47:30 +1000 Subject: [PATCH 2/4] Created the generator hierarchy --- server/enemies/enemy_factory_interface.hpp | 11 ++--- server/enemies/makefile | 2 +- server/linit.cpp | 4 ++ server/mapgen/base_generator.cpp | 35 ++++++++++++++++ server/mapgen/base_generator.hpp | 48 ++++++++++++++++++++++ server/mapgen/caves_generator.cpp | 30 ++++++++++++++ server/mapgen/caves_generator.hpp | 38 +++++++++++++++++ server/mapgen/forests_generator.cpp | 30 ++++++++++++++ server/mapgen/forests_generator.hpp | 38 +++++++++++++++++ server/mapgen/generator_api.cpp | 37 +++++++++++++++++ server/mapgen/generator_api.hpp | 31 ++++++++++++++ server/mapgen/map_type.hpp | 33 +++++++++++++++ server/mapgen/overworld_generator.cpp | 7 +--- server/mapgen/overworld_generator.hpp | 20 ++------- server/mapgen/ruins_generator.cpp | 30 ++++++++++++++ server/mapgen/ruins_generator.hpp | 38 +++++++++++++++++ server/mapgen/towers_generator.cpp | 30 ++++++++++++++ server/mapgen/towers_generator.hpp | 38 +++++++++++++++++ server/rooms/makefile | 2 +- server/rooms/room_data.hpp | 12 ++---- 20 files changed, 475 insertions(+), 39 deletions(-) create mode 100644 server/mapgen/base_generator.cpp create mode 100644 server/mapgen/base_generator.hpp create mode 100644 server/mapgen/caves_generator.cpp create mode 100644 server/mapgen/caves_generator.hpp create mode 100644 server/mapgen/forests_generator.cpp create mode 100644 server/mapgen/forests_generator.hpp create mode 100644 server/mapgen/generator_api.cpp create mode 100644 server/mapgen/generator_api.hpp create mode 100644 server/mapgen/map_type.hpp create mode 100644 server/mapgen/ruins_generator.cpp create mode 100644 server/mapgen/ruins_generator.hpp create mode 100644 server/mapgen/towers_generator.cpp create mode 100644 server/mapgen/towers_generator.hpp diff --git a/server/enemies/enemy_factory_interface.hpp b/server/enemies/enemy_factory_interface.hpp index 335814e..8e97e78 100644 --- a/server/enemies/enemy_factory_interface.hpp +++ b/server/enemies/enemy_factory_interface.hpp @@ -23,7 +23,7 @@ #define ENEMYFACTORYINTERFACE_HPP_ #include "enemy_data.hpp" -#include "room_data.hpp" +#include "map_type.hpp" #include @@ -36,13 +36,14 @@ public: virtual void Generate(std::list* container) = 0; //control the difficulty of the room - RoomData::RoomType SetType(RoomData::RoomType t) { return type = t; } + MapType SetType(MapType t) { return type = t; } + MapType GetType() { return type; } + int SetDifficulty(int d) { return difficulty = d; } - RoomData::RoomType GetType() { return type; } int GetDifficulty() { return difficulty; } protected: - RoomData::RoomType type; - int difficulty; + MapType type; + int difficulty = 0; }; #endif diff --git a/server/enemies/makefile b/server/enemies/makefile index 5055ccf..8c2156a 100644 --- a/server/enemies/makefile +++ b/server/enemies/makefile @@ -1,5 +1,5 @@ #config -INCLUDES+=. ../rooms ../../common/gameplay ../../common/map ../../common/utilities +INCLUDES+=. ../mapgen ../../common/gameplay ../../common/map ../../common/utilities LIBS+= CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES)) diff --git a/server/linit.cpp b/server/linit.cpp index 13541f2..b23af1f 100644 --- a/server/linit.cpp +++ b/server/linit.cpp @@ -38,6 +38,8 @@ #include "region_api.hpp" #include "pager_api.hpp" +#include "room_api.hpp" +#include "generator_api.hpp" //these libs are loaded by lua.c and are readily available to any Lua program static const luaL_Reg loadedlibs[] = { @@ -56,6 +58,8 @@ static const luaL_Reg loadedlibs[] = { //custom libs {LUA_REGIONLIBNAME, luaopen_regionapi}, {LUA_PAGERLIBNAME, luaopen_pagerapi}, + {LUA_ROOMLIBNAME, luaopen_roomapi}, + {LUA_GENERATORLIBNAME, luaopen_generatorapi}, {NULL, NULL} }; diff --git a/server/mapgen/base_generator.cpp b/server/mapgen/base_generator.cpp new file mode 100644 index 0000000..8ea5974 --- /dev/null +++ b/server/mapgen/base_generator.cpp @@ -0,0 +1,35 @@ +/* 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 "base_generator.hpp" + +BaseGenerator::BaseGenerator() { + for (int i = 0; i < MAP_WIDTH; i++) { + for (int j = 0; j < MAP_HEIGHT; j++) { + chunks[i][j].type = TerrainType::NONE; + chunks[i][j].mod = ChunkData::Moddable::CLEAR; + } + } +} + +BaseGenerator::~BaseGenerator() { + // +} \ No newline at end of file diff --git a/server/mapgen/base_generator.hpp b/server/mapgen/base_generator.hpp new file mode 100644 index 0000000..ef93c38 --- /dev/null +++ b/server/mapgen/base_generator.hpp @@ -0,0 +1,48 @@ +/* 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 BASEGENERATOR_HPP_ +#define BASEGENERATOR_HPP_ + +#include "chunk_data.hpp" + +#include "lua/lua.hpp" + +constexpr int MAP_WIDTH = 256; +constexpr int MAP_HEIGHT = 256; + +class BaseGenerator { +public: + BaseGenerator(); + virtual ~BaseGenerator(); + + //accessors and mutators + virtual ChunkData* GetChunk(int x, int y) { return &chunks[x][y]; } + + lua_State* SetLuaState(lua_State* L) { return luaState = L; } + lua_State* GetLuaState() { return luaState; } + +protected: + ChunkData chunks[MAP_WIDTH][MAP_HEIGHT]; + lua_State* luaState = nullptr; +}; + +#endif diff --git a/server/mapgen/caves_generator.cpp b/server/mapgen/caves_generator.cpp new file mode 100644 index 0000000..a2cbaed --- /dev/null +++ b/server/mapgen/caves_generator.cpp @@ -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. +*/ +#include "caves_generator.hpp" + +CavesGenerator::CavesGenerator() { + // +} + +CavesGenerator::~CavesGenerator() { + // +} \ No newline at end of file diff --git a/server/mapgen/caves_generator.hpp b/server/mapgen/caves_generator.hpp new file mode 100644 index 0000000..975ed8c --- /dev/null +++ b/server/mapgen/caves_generator.hpp @@ -0,0 +1,38 @@ +/* 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 CAVESGENERATOR_HPP_ +#define CAVESGENERATOR_HPP_ + +#include "base_generator.hpp" + +#define CAVES_GENERATOR_PSEUDOINDEX "CavesGenerator" + +class CavesGenerator : public BaseGenerator { +public: + CavesGenerator(); + ~CavesGenerator(); + +private: + // +}; + +#endif diff --git a/server/mapgen/forests_generator.cpp b/server/mapgen/forests_generator.cpp new file mode 100644 index 0000000..5ff8127 --- /dev/null +++ b/server/mapgen/forests_generator.cpp @@ -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. +*/ +#include "forests_generator.hpp" + +ForestsGenerator::ForestsGenerator() { + // +} + +ForestsGenerator::~ForestsGenerator() { + // +} \ No newline at end of file diff --git a/server/mapgen/forests_generator.hpp b/server/mapgen/forests_generator.hpp new file mode 100644 index 0000000..e87d89e --- /dev/null +++ b/server/mapgen/forests_generator.hpp @@ -0,0 +1,38 @@ +/* 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 FORESTSGENERATOR_HPP_ +#define FORESTSGENERATOR_HPP_ + +#include "base_generator.hpp" + +#define FORESTS_GENERATOR_PSEUDOINDEX "ForestsGenerator" + +class ForestsGenerator : public BaseGenerator { +public: + ForestsGenerator(); + ~ForestsGenerator(); + +private: + // +}; + +#endif diff --git a/server/mapgen/generator_api.cpp b/server/mapgen/generator_api.cpp new file mode 100644 index 0000000..2593fb5 --- /dev/null +++ b/server/mapgen/generator_api.cpp @@ -0,0 +1,37 @@ +/* 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 "generator_api.hpp" + +static int getGenerator(lua_State* L) { + //TODO: return a generator based on the given parameter + return 0; +} + +static const luaL_Reg generatorlib[] = { + {"getgenerator", getGenerator}, + {nullptr, nullptr} +}; + +LUAMOD_API int luaopen_generatorapi(lua_State* L) { + luaL_newlib(L, generatorlib); + return 1; +} diff --git a/server/mapgen/generator_api.hpp b/server/mapgen/generator_api.hpp new file mode 100644 index 0000000..a0b9fb3 --- /dev/null +++ b/server/mapgen/generator_api.hpp @@ -0,0 +1,31 @@ +/* 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 GENERATORAPI_HPP_ +#define GENERATORAPI_HPP_ + +#include "lua/lua.hpp" + +#define LUA_GENERATORLIBNAME "generator" +LUAMOD_API int luaopen_generatorapi(lua_State* L); + + +#endif \ No newline at end of file diff --git a/server/mapgen/map_type.hpp b/server/mapgen/map_type.hpp new file mode 100644 index 0000000..3127e1a --- /dev/null +++ b/server/mapgen/map_type.hpp @@ -0,0 +1,33 @@ +/* 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 MAPTYPE_HPP_ +#define MAPTYPE_HPP_ + +enum class MapType { + OVERWORLD = 0, + RUINS = 1, + TOWERS = 2, + FORESTS = 3, + CAVES = 4, +}; + +#endif \ No newline at end of file diff --git a/server/mapgen/overworld_generator.cpp b/server/mapgen/overworld_generator.cpp index 2b56bba..8119158 100644 --- a/server/mapgen/overworld_generator.cpp +++ b/server/mapgen/overworld_generator.cpp @@ -22,12 +22,7 @@ #include "overworld_generator.hpp" OverworldGenerator::OverworldGenerator() { - for (int i = 0; i < OVERWORLD_WIDTH; i++) { - for (int j = 0; j < OVERWORLD_HEIGHT; j++) { - chunks[i][j].type = TerrainType::NONE; - chunks[i][j].mod = ChunkData::Moddable::CLEAR; - } - } + // } OverworldGenerator::~OverworldGenerator() { diff --git a/server/mapgen/overworld_generator.hpp b/server/mapgen/overworld_generator.hpp index a3724be..e47026d 100644 --- a/server/mapgen/overworld_generator.hpp +++ b/server/mapgen/overworld_generator.hpp @@ -22,31 +22,17 @@ #ifndef OVERWORLDGENERATOR_HPP_ #define OVERWORLDGENERATOR_HPP_ -#include "chunk_data.hpp" - -#include "lua/lua.hpp" +#include "base_generator.hpp" #define OVERWORLD_GENERATOR_PSEUDOINDEX "OverworldGenerator" -constexpr int OVERWORLD_WIDTH = 256; -constexpr int OVERWORLD_HEIGHT = 256; - -//TODO: SuperGenerator API -//TODO: SuperGenerator DOCS -class OverworldGenerator { +class OverworldGenerator : public BaseGenerator { public: OverworldGenerator(); ~OverworldGenerator(); - //accessors and mutators - ChunkData* GetChunk(int x, int y) { return &chunks[x][y]; } - - lua_State* SetLuaState(lua_State* L) { return luaState = L; } - lua_State* GetLuaState() { return luaState; } - private: - ChunkData chunks[OVERWORLD_WIDTH][OVERWORLD_HEIGHT]; - lua_State* luaState = nullptr; + // }; #endif diff --git a/server/mapgen/ruins_generator.cpp b/server/mapgen/ruins_generator.cpp new file mode 100644 index 0000000..24a7c3e --- /dev/null +++ b/server/mapgen/ruins_generator.cpp @@ -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. +*/ +#include "ruins_generator.hpp" + +RuinsGenerator::RuinsGenerator() { + // +} + +RuinsGenerator::~RuinsGenerator() { + // +} \ No newline at end of file diff --git a/server/mapgen/ruins_generator.hpp b/server/mapgen/ruins_generator.hpp new file mode 100644 index 0000000..309bf45 --- /dev/null +++ b/server/mapgen/ruins_generator.hpp @@ -0,0 +1,38 @@ +/* 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 RUINSGENERATOR_HPP_ +#define RUINSGENERATOR_HPP_ + +#include "base_generator.hpp" + +#define RUINS_GENERATOR_PSEUDOINDEX "RuinsGenerator" + +class RuinsGenerator : public BaseGenerator { +public: + RuinsGenerator(); + ~RuinsGenerator(); + +private: + // +}; + +#endif diff --git a/server/mapgen/towers_generator.cpp b/server/mapgen/towers_generator.cpp new file mode 100644 index 0000000..3e8a2c6 --- /dev/null +++ b/server/mapgen/towers_generator.cpp @@ -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. +*/ +#include "towers_generator.hpp" + +TowersGenerator::TowersGenerator() { + // +} + +TowersGenerator::~TowersGenerator() { + // +} \ No newline at end of file diff --git a/server/mapgen/towers_generator.hpp b/server/mapgen/towers_generator.hpp new file mode 100644 index 0000000..0dcb9d9 --- /dev/null +++ b/server/mapgen/towers_generator.hpp @@ -0,0 +1,38 @@ +/* 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 TOWERSGENERATOR_HPP_ +#define TOWERSGENERATOR_HPP_ + +#include "base_generator.hpp" + +#define TOWERS_GENERATOR_PSEUDOINDEX "TowersGenerator" + +class TowersGenerator : public BaseGenerator { +public: + TowersGenerator(); + ~TowersGenerator(); + +private: + // +}; + +#endif diff --git a/server/rooms/makefile b/server/rooms/makefile index 5eb6456..1316fb4 100644 --- a/server/rooms/makefile +++ b/server/rooms/makefile @@ -1,5 +1,5 @@ #config -INCLUDES+=. ../../common/map +INCLUDES+=. ../mapgen ../../common/map LIBS+= CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES)) diff --git a/server/rooms/room_data.hpp b/server/rooms/room_data.hpp index cf1b6cb..872ffb6 100644 --- a/server/rooms/room_data.hpp +++ b/server/rooms/room_data.hpp @@ -22,21 +22,15 @@ #ifndef ROOMDATA_HPP_ #define ROOMDATA_HPP_ +#include "map_type.hpp" + //map system #include "region_pager_lua.hpp" struct RoomData { - enum class RoomType { - OVERWORLD = 0, - RUINS = 1, - TOWERS = 2, - FORESTS = 3, - CAVE = 4, - }; - //members RegionPagerLua pager; - RoomType type; + MapType type; //TODO: collision map //TODO: NPCs? From 82c776df832301c6bdcdeeea3ade80a7a3680401 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Sat, 21 Jun 2014 07:00:48 +1000 Subject: [PATCH 3/4] Moved the generators into a subdirectory --- server/makefile | 2 +- .../{ => generators}/base_generator.cpp | 0 .../{ => generators}/base_generator.hpp | 0 .../{ => generators}/caves_generator.cpp | 0 .../{ => generators}/caves_generator.hpp | 0 .../{ => generators}/forests_generator.cpp | 0 .../{ => generators}/forests_generator.hpp | 0 server/mapgen/generators/makefile | 37 +++++++++++++++++++ .../{ => generators}/overworld_generator.cpp | 0 .../{ => generators}/overworld_generator.hpp | 0 .../{ => generators}/ruins_generator.cpp | 0 .../{ => generators}/ruins_generator.hpp | 0 .../{ => generators}/towers_generator.cpp | 0 .../{ => generators}/towers_generator.hpp | 0 server/mapgen/makefile | 1 + server/rooms/makefile | 2 +- 16 files changed, 40 insertions(+), 2 deletions(-) rename server/mapgen/{ => generators}/base_generator.cpp (100%) rename server/mapgen/{ => generators}/base_generator.hpp (100%) rename server/mapgen/{ => generators}/caves_generator.cpp (100%) rename server/mapgen/{ => generators}/caves_generator.hpp (100%) rename server/mapgen/{ => generators}/forests_generator.cpp (100%) rename server/mapgen/{ => generators}/forests_generator.hpp (100%) create mode 100644 server/mapgen/generators/makefile rename server/mapgen/{ => generators}/overworld_generator.cpp (100%) rename server/mapgen/{ => generators}/overworld_generator.hpp (100%) rename server/mapgen/{ => generators}/ruins_generator.cpp (100%) rename server/mapgen/{ => generators}/ruins_generator.hpp (100%) rename server/mapgen/{ => generators}/towers_generator.cpp (100%) rename server/mapgen/{ => generators}/towers_generator.hpp (100%) diff --git a/server/makefile b/server/makefile index d596f04..642dec3 100644 --- a/server/makefile +++ b/server/makefile @@ -1,5 +1,5 @@ #config -INCLUDES+=. accounts characters combat enemies mapgen rooms ../common/gameplay ../common/map ../common/network ../common/network/packet ../common/network/serial ../common/utilities +INCLUDES+=. accounts characters combat enemies mapgen mapgen/generators rooms ../common/gameplay ../common/map ../common/network ../common/network/packet ../common/network/serial ../common/utilities LIBS+=server.a ../libcommon.a -lSDL_net -lwsock32 -liphlpapi -lmingw32 -lSDLmain -lSDL -llua -lsqlite3 CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES)) diff --git a/server/mapgen/base_generator.cpp b/server/mapgen/generators/base_generator.cpp similarity index 100% rename from server/mapgen/base_generator.cpp rename to server/mapgen/generators/base_generator.cpp diff --git a/server/mapgen/base_generator.hpp b/server/mapgen/generators/base_generator.hpp similarity index 100% rename from server/mapgen/base_generator.hpp rename to server/mapgen/generators/base_generator.hpp diff --git a/server/mapgen/caves_generator.cpp b/server/mapgen/generators/caves_generator.cpp similarity index 100% rename from server/mapgen/caves_generator.cpp rename to server/mapgen/generators/caves_generator.cpp diff --git a/server/mapgen/caves_generator.hpp b/server/mapgen/generators/caves_generator.hpp similarity index 100% rename from server/mapgen/caves_generator.hpp rename to server/mapgen/generators/caves_generator.hpp diff --git a/server/mapgen/forests_generator.cpp b/server/mapgen/generators/forests_generator.cpp similarity index 100% rename from server/mapgen/forests_generator.cpp rename to server/mapgen/generators/forests_generator.cpp diff --git a/server/mapgen/forests_generator.hpp b/server/mapgen/generators/forests_generator.hpp similarity index 100% rename from server/mapgen/forests_generator.hpp rename to server/mapgen/generators/forests_generator.hpp diff --git a/server/mapgen/generators/makefile b/server/mapgen/generators/makefile new file mode 100644 index 0000000..3e4ed5b --- /dev/null +++ b/server/mapgen/generators/makefile @@ -0,0 +1,37 @@ +#config +INCLUDES+=. .. +LIBS+= +CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES)) + +#source +CXXSRC=$(wildcard *.cpp) + +#objects +OBJDIR=obj +OBJ+=$(addprefix $(OBJDIR)/,$(CXXSRC:.cpp=.o)) + +#output +OUTDIR=../.. +OUT=$(addprefix $(OUTDIR)/,server.a) + +#targets +all: $(OBJ) $(OUT) + ar -crs $(OUT) $(OBJ) + +$(OBJ): | $(OBJDIR) + +$(OUT): | $(OUTDIR) + +$(OBJDIR): + mkdir $(OBJDIR) + +$(OUTDIR): + mkdir $(OUTDIR) + +$(OBJDIR)/%.o: %.cpp + $(CXX) $(CXXFLAGS) -c -o $@ $< + +clean: + $(RM) *.o *.a *.exe + +rebuild: clean all diff --git a/server/mapgen/overworld_generator.cpp b/server/mapgen/generators/overworld_generator.cpp similarity index 100% rename from server/mapgen/overworld_generator.cpp rename to server/mapgen/generators/overworld_generator.cpp diff --git a/server/mapgen/overworld_generator.hpp b/server/mapgen/generators/overworld_generator.hpp similarity index 100% rename from server/mapgen/overworld_generator.hpp rename to server/mapgen/generators/overworld_generator.hpp diff --git a/server/mapgen/ruins_generator.cpp b/server/mapgen/generators/ruins_generator.cpp similarity index 100% rename from server/mapgen/ruins_generator.cpp rename to server/mapgen/generators/ruins_generator.cpp diff --git a/server/mapgen/ruins_generator.hpp b/server/mapgen/generators/ruins_generator.hpp similarity index 100% rename from server/mapgen/ruins_generator.hpp rename to server/mapgen/generators/ruins_generator.hpp diff --git a/server/mapgen/towers_generator.cpp b/server/mapgen/generators/towers_generator.cpp similarity index 100% rename from server/mapgen/towers_generator.cpp rename to server/mapgen/generators/towers_generator.cpp diff --git a/server/mapgen/towers_generator.hpp b/server/mapgen/generators/towers_generator.hpp similarity index 100% rename from server/mapgen/towers_generator.hpp rename to server/mapgen/generators/towers_generator.hpp diff --git a/server/mapgen/makefile b/server/mapgen/makefile index 8d12afe..d949a54 100644 --- a/server/mapgen/makefile +++ b/server/mapgen/makefile @@ -17,6 +17,7 @@ OUT=$(addprefix $(OUTDIR)/,server.a) #targets all: $(OBJ) $(OUT) ar -crs $(OUT) $(OBJ) + $(MAKE) -C generators $(OBJ): | $(OBJDIR) diff --git a/server/rooms/makefile b/server/rooms/makefile index 1316fb4..f4921ea 100644 --- a/server/rooms/makefile +++ b/server/rooms/makefile @@ -1,5 +1,5 @@ #config -INCLUDES+=. ../mapgen ../../common/map +INCLUDES+=. ../mapgen ../mapgen/generators ../../common/map LIBS+= CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES)) From 8afd0e7c8ac1ce3f76d879edd7aea32dbc443391 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Sat, 21 Jun 2014 07:19:51 +1000 Subject: [PATCH 4/4] Created a separate API for the RoomManager class --- server/linit.cpp | 2 ++ server/rooms/room_api.cpp | 13 +--------- server/rooms/room_data.hpp | 7 +++--- server/rooms/room_mgr_api.cpp | 46 +++++++++++++++++++++++++++++++++++ server/rooms/room_mgr_api.hpp | 30 +++++++++++++++++++++++ 5 files changed, 83 insertions(+), 15 deletions(-) create mode 100644 server/rooms/room_mgr_api.cpp create mode 100644 server/rooms/room_mgr_api.hpp diff --git a/server/linit.cpp b/server/linit.cpp index b23af1f..7898184 100644 --- a/server/linit.cpp +++ b/server/linit.cpp @@ -39,6 +39,7 @@ #include "region_api.hpp" #include "pager_api.hpp" #include "room_api.hpp" +#include "room_mgr_api.hpp" #include "generator_api.hpp" //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_PAGERLIBNAME, luaopen_pagerapi}, {LUA_ROOMLIBNAME, luaopen_roomapi}, + {LUA_ROOMMGRLIBNAME, luaopen_roommgrapi}, {LUA_GENERATORLIBNAME, luaopen_generatorapi}, {NULL, NULL} diff --git a/server/rooms/room_api.cpp b/server/rooms/room_api.cpp index ea7ea52..9f09f3c 100644 --- a/server/rooms/room_api.cpp +++ b/server/rooms/room_api.cpp @@ -38,22 +38,11 @@ static int getRegionPager(lua_State* L) { return 1; } -//RoomManager only -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(lua_touserdata(L, -1)); - - //push the room and return it - lua_pushlightuserdata(L, reinterpret_cast( roomMgr->GetRoom(lua_tointeger(L, -2)) )); - return 1; -} +//TODO: generators static const luaL_Reg roomlib[] = { {"gettype",getType}, {"getregionpager",getRegionPager}, - {"getroom",getRoom}, {nullptr, nullptr} }; diff --git a/server/rooms/room_data.hpp b/server/rooms/room_data.hpp index 872ffb6..4b9e811 100644 --- a/server/rooms/room_data.hpp +++ b/server/rooms/room_data.hpp @@ -22,15 +22,16 @@ #ifndef ROOMDATA_HPP_ #define ROOMDATA_HPP_ -#include "map_type.hpp" - //map system +#include "map_type.hpp" #include "region_pager_lua.hpp" +#include "base_generator.hpp" struct RoomData { //members - RegionPagerLua pager; MapType type; + RegionPagerLua pager; + BaseGenerator* generator = nullptr; //TODO: collision map //TODO: NPCs? diff --git a/server/rooms/room_mgr_api.cpp b/server/rooms/room_mgr_api.cpp new file mode 100644 index 0000000..44050dc --- /dev/null +++ b/server/rooms/room_mgr_api.cpp @@ -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(lua_touserdata(L, -1)); + + //push the room and return it + lua_pushlightuserdata(L, reinterpret_cast( 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; +} \ No newline at end of file diff --git a/server/rooms/room_mgr_api.hpp b/server/rooms/room_mgr_api.hpp new file mode 100644 index 0000000..1382b4d --- /dev/null +++ b/server/rooms/room_mgr_api.hpp @@ -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