From 7da5de619b3ef1ad8dec0326abd1a0a37a78cafe Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Thu, 30 Oct 2014 00:41:47 +1100 Subject: [PATCH] Created entity.hpp and door system --- server/doors/door_data.cpp | 38 ++++++++++++++++++++ server/doors/door_data.hpp | 49 +++++++++++++++++++++++++ server/doors/door_manager.cpp | 68 +++++++++++++++++++++++++++++++++++ server/doors/door_manager.hpp | 60 +++++++++++++++++++++++++++++++ server/doors/makefile | 37 +++++++++++++++++++ server/entities/entity.hpp | 51 ++++++++++++++++++++++++++ server/entities/makefile | 37 +++++++++++++++++++ 7 files changed, 340 insertions(+) create mode 100644 server/doors/door_data.cpp create mode 100644 server/doors/door_data.hpp create mode 100644 server/doors/door_manager.cpp create mode 100644 server/doors/door_manager.hpp create mode 100644 server/doors/makefile create mode 100644 server/entities/entity.hpp create mode 100644 server/entities/makefile diff --git a/server/doors/door_data.cpp b/server/doors/door_data.cpp new file mode 100644 index 0000000..954365b --- /dev/null +++ b/server/doors/door_data.cpp @@ -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. +*/ +#include "door_data.hpp" + +std::string DoorData::SetRoomName(std::string s) { + return roomName = s; +} + +Vector2 DoorData::SetDestPosition(Vector2 v) { + return destPosition = v; +} + +std::string DoorData::GetRoomName() { + return roomName; +} + +Vector2 DoorData::GetDestPosition() { + return destPosition; +} diff --git a/server/doors/door_data.hpp b/server/doors/door_data.hpp new file mode 100644 index 0000000..e6d3b53 --- /dev/null +++ b/server/doors/door_data.hpp @@ -0,0 +1,49 @@ +/* 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 DOORDATA_HPP_ +#define DOORDATA_HPP_ + +#include "entity.hpp" +#include "vector2.hpp" + +#include + +class DoorData: Entity { +public: + DoorData() = default; + ~DoorData() = default; + + //accessors & mutators + std::string SetRoomName(std::string); + Vector2 SetDestPosition(Vector2); + + std::string GetRoomName(); + Vector2 GetDestPosition(); + +private: + friend class DoorManager; + + std::string roomName; + Vector2 destPosition; +}; + +#endif \ No newline at end of file diff --git a/server/doors/door_manager.cpp b/server/doors/door_manager.cpp new file mode 100644 index 0000000..8a16211 --- /dev/null +++ b/server/doors/door_manager.cpp @@ -0,0 +1,68 @@ +/* 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 "door_manager.hpp" + +//TODO: door_manager.cpp + +int DoorManager::Create(std::string, Vector2) { + // +} + +int DoorManager::Load(std::string, Vector2) { + // +} + +int DoorManager::Save(int uid) { + // +} + +void DoorManager::Unload(int uid) { + // +} + +void DoorManager::Delete(int uid) { + // +} + +void DoorManager::UnloadAll() { + // +} + +void DoorManager::UnloadIf(std::function)> fn) { + // +} + +DoorData* DoorManager::Get(int uid) { + // +} + +int DoorManager::GetLoadedCount() { + // +} + +int DoorManager::GetTotalCount() { + // +} + +std::map* DoorManager::GetContainer() { + // +} diff --git a/server/doors/door_manager.hpp b/server/doors/door_manager.hpp new file mode 100644 index 0000000..0b06bc9 --- /dev/null +++ b/server/doors/door_manager.hpp @@ -0,0 +1,60 @@ +/* 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 DOORMANAGER_HPP_ +#define DOORMANAGER_HPP_ + +#include "door_data.hpp" +#include "manager_interface.hpp" +#include "singleton.hpp" +#include "vector2.hpp" + +#include +#include + +class DoorManager: + Singleton, + ManagerInterface +{ +public: + //common public methods + int Create(std::string, Vector2); + int Load(std::string, Vector2); + int Save(int uid); + void Unload(int uid); + void Delete(int uid); + + void UnloadAll(); + void UnloadIf(std::function)> fn); + + //accessors & mutators + DoorData* Get(int uid); + int GetLoadedCount(); + int GetTotalCount(); + std::map* GetContainer(); +private: + friend Singleton; + + DoorManager() = default; + ~DoorManager() = default; +}; + +#endif \ No newline at end of file diff --git a/server/doors/makefile b/server/doors/makefile new file mode 100644 index 0000000..3585271 --- /dev/null +++ b/server/doors/makefile @@ -0,0 +1,37 @@ +#config +INCLUDES+=. ../entities ../server_utilities ../../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/entities/entity.hpp b/server/entities/entity.hpp new file mode 100644 index 0000000..f71b04a --- /dev/null +++ b/server/entities/entity.hpp @@ -0,0 +1,51 @@ +/* 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 ENTITY_HPP_ +#define ENTITY_HPP_ + +#include "vector2.hpp" + +//The base class for all objects in the world +class Entity { +public: + //accessors & mutators + int SetEntityIndex(int i) { return entityIndex = i; } + int SetRoomIndex(int i) { return roomIndex = i; } + Vector2 SetOrigin(Vector2 v) { return origin = v; } + Vector2 SetMotion(Vector2 v) { return motion = v; } + + int GetEntityIndex() { return entityIndex; } + int GetRoomIndex() { return roomIndex; } + Vector2 GetOrigin() { return origin; } + Vector2 GetMotion() { return motion; } + +protected: + Entity() = default; + ~Entity() = default; + + int entityIndex = -1; + int roomIndex = -1; + Vector2 origin; + Vector2 motion; +}; + +#endif \ No newline at end of file diff --git a/server/entities/makefile b/server/entities/makefile new file mode 100644 index 0000000..f24e1ba --- /dev/null +++ b/server/entities/makefile @@ -0,0 +1,37 @@ +#config +INCLUDES+=. ../../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