Added some boilerplate
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
#config
|
#config
|
||||||
INCLUDES+=. .. ../creatures ../entities ../monsters ../rooms ../triggers ../../common/gameplay ../../common/map ../../common/network ../../common/network/packet_types ../../common/utilities
|
INCLUDES+=. .. ../combat ../creatures ../entities ../monsters ../rooms ../triggers ../../common/gameplay ../../common/map ../../common/network ../../common/network/packet_types ../../common/utilities
|
||||||
LIBS+=
|
LIBS+=
|
||||||
CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES))
|
CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES))
|
||||||
|
|
||||||
|
|||||||
@@ -21,3 +21,10 @@
|
|||||||
*/
|
*/
|
||||||
#include "barrier_data.hpp"
|
#include "barrier_data.hpp"
|
||||||
|
|
||||||
|
BarrierData::BarrierData(int i): Entity::Entity("barrier") {
|
||||||
|
instanceIndex = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
BarrierData::~BarrierData() {
|
||||||
|
//
|
||||||
|
}
|
||||||
@@ -19,13 +19,18 @@
|
|||||||
* 3. This notice may not be removed or altered from any source
|
* 3. This notice may not be removed or altered from any source
|
||||||
* distribution.
|
* distribution.
|
||||||
*/
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
#include "entity.hpp"
|
#include "entity.hpp"
|
||||||
|
|
||||||
class BarrierData: public Entity {
|
class BarrierData: public Entity {
|
||||||
public:
|
public:
|
||||||
BarrierData() = default;
|
BarrierData(int instanceIndex);
|
||||||
~BarrierData() = default;
|
~BarrierData();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//
|
int instanceIndex = -1;
|
||||||
|
|
||||||
|
//for displaying the status of combatants: 0 empty, 1 green, 2 red
|
||||||
|
int slotData[8];
|
||||||
};
|
};
|
||||||
@@ -21,3 +21,78 @@
|
|||||||
*/
|
*/
|
||||||
#include "barrier_manager.hpp"
|
#include "barrier_manager.hpp"
|
||||||
|
|
||||||
|
BarrierManager::BarrierManager() {
|
||||||
|
//EMPTY
|
||||||
|
}
|
||||||
|
|
||||||
|
BarrierManager::~BarrierManager() {
|
||||||
|
UnloadAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BarrierManager::Update() {
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
int BarrierManager::Create() {
|
||||||
|
//implicitly create the new object
|
||||||
|
elementMap.emplace( std::pair<int, BarrierData>(counter, BarrierData(-1)) );
|
||||||
|
|
||||||
|
//TODO: do various things like saving to the database
|
||||||
|
return counter++;
|
||||||
|
}
|
||||||
|
|
||||||
|
//TODO: (1) combat load, save
|
||||||
|
|
||||||
|
void BarrierManager::Unload(int uid) {
|
||||||
|
elementMap.erase(uid);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BarrierManager::UnloadAll() {
|
||||||
|
elementMap.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
void BarrierManager::UnloadIf(std::function<bool(std::pair<const int, BarrierData const&>)> fn) {
|
||||||
|
std::map<int, BarrierData>::iterator it = elementMap.begin();
|
||||||
|
while (it != elementMap.end()) {
|
||||||
|
if (fn(*it)) {
|
||||||
|
it = elementMap.erase(it);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
++it;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BarrierData* BarrierManager::Find(int uid) {
|
||||||
|
std::map<int, BarrierData>::iterator it = elementMap.find(uid);
|
||||||
|
|
||||||
|
if (it == elementMap.end()) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return &it->second;
|
||||||
|
}
|
||||||
|
|
||||||
|
int BarrierManager::GetLoadedCount() {
|
||||||
|
return elementMap.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::map<int, BarrierData>* BarrierManager::GetContainer() {
|
||||||
|
return &elementMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
lua_State* BarrierManager::SetLuaState(lua_State* L) {
|
||||||
|
return lua = L;
|
||||||
|
}
|
||||||
|
|
||||||
|
lua_State* BarrierManager::GetLuaState() {
|
||||||
|
return lua;
|
||||||
|
}
|
||||||
|
|
||||||
|
sqlite3* BarrierManager::SetDatabase(sqlite3* db) {
|
||||||
|
return database = db;
|
||||||
|
}
|
||||||
|
|
||||||
|
sqlite3* BarrierManager::GetDatabase() {
|
||||||
|
return database;
|
||||||
|
}
|
||||||
|
|||||||
@@ -19,5 +19,45 @@
|
|||||||
* 3. This notice may not be removed or altered from any source
|
* 3. This notice may not be removed or altered from any source
|
||||||
* distribution.
|
* distribution.
|
||||||
*/
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
#include "barrier_data.hpp"
|
#include "barrier_data.hpp"
|
||||||
|
|
||||||
|
#include "lua.hpp"
|
||||||
|
#include "sqlite3.h"
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
|
class BarrierManager {
|
||||||
|
public:
|
||||||
|
BarrierManager();
|
||||||
|
~BarrierManager();
|
||||||
|
|
||||||
|
//common public methods
|
||||||
|
void Update();
|
||||||
|
|
||||||
|
int Create();
|
||||||
|
void Unload(int uid);
|
||||||
|
|
||||||
|
void UnloadAll();
|
||||||
|
void UnloadIf(std::function<bool(std::pair<const int, BarrierData const&>)> fn);
|
||||||
|
|
||||||
|
//accessors & mutators
|
||||||
|
BarrierData* Find(int uid);
|
||||||
|
int GetLoadedCount();
|
||||||
|
std::map<int, BarrierData>* GetContainer();
|
||||||
|
|
||||||
|
//hooks
|
||||||
|
lua_State* SetLuaState(lua_State* L);
|
||||||
|
lua_State* GetLuaState();
|
||||||
|
sqlite3* SetDatabase(sqlite3* db);
|
||||||
|
sqlite3* GetDatabase();
|
||||||
|
|
||||||
|
private:
|
||||||
|
//members
|
||||||
|
std::map<int, BarrierData> elementMap;
|
||||||
|
int counter = 0;
|
||||||
|
lua_State* lua = nullptr;
|
||||||
|
sqlite3* database = nullptr;
|
||||||
|
};
|
||||||
@@ -21,3 +21,31 @@
|
|||||||
*/
|
*/
|
||||||
#include "combat_instance.hpp"
|
#include "combat_instance.hpp"
|
||||||
|
|
||||||
|
CombatInstance::CombatInstance() {
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
CombatInstance::~CombatInstance() {
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
void CombatInstance::Update() {
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
//accessors and mutators
|
||||||
|
void CombatInstance::PushCharacter(CharacterData* const characterData) {
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
void CombatInstance::PopCharacter(CharacterData* const characterData) {
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
void CombatInstance::PushCreature(CreatureData* const creatureData) {
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
void CombatInstance::PopCreature(CreatureData* const creatureData) {
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|||||||
@@ -19,12 +19,26 @@
|
|||||||
* 3. This notice may not be removed or altered from any source
|
* 3. This notice may not be removed or altered from any source
|
||||||
* distribution.
|
* distribution.
|
||||||
*/
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "character_data.hpp"
|
||||||
|
#include "creature_data.hpp"
|
||||||
|
|
||||||
class CombatInstance {
|
class CombatInstance {
|
||||||
public:
|
public:
|
||||||
CombatInstance() = default;
|
CombatInstance();
|
||||||
~CombatInstance() = default;
|
~CombatInstance();
|
||||||
|
|
||||||
|
void Update();
|
||||||
|
|
||||||
|
//accessors and mutators
|
||||||
|
void PushCharacter(CharacterData* const characterData);
|
||||||
|
void PopCharacter(CharacterData* const characterData);
|
||||||
|
|
||||||
|
void PushCreature(CreatureData* const creatureData);
|
||||||
|
void PopCreature(CreatureData* const creatureData);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//
|
std::array<CharacterData*, 8> characterArray;
|
||||||
|
std::array<CreatureData*, 8> creatureArray;
|
||||||
};
|
};
|
||||||
@@ -21,3 +21,81 @@
|
|||||||
*/
|
*/
|
||||||
#include "combat_instance_manager.hpp"
|
#include "combat_instance_manager.hpp"
|
||||||
|
|
||||||
|
CombatInstanceManager::CombatInstanceManager() {
|
||||||
|
//EMPTY
|
||||||
|
}
|
||||||
|
|
||||||
|
CombatInstanceManager::~CombatInstanceManager() {
|
||||||
|
UnloadAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
//arg: a list of combats to be updated in the clients
|
||||||
|
void CombatInstanceManager::Update() {
|
||||||
|
for (auto& it : elementMap) {
|
||||||
|
it.second.Update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int CombatInstanceManager::Create() {
|
||||||
|
//implicitly create the new object
|
||||||
|
elementMap.emplace( std::pair<int, CombatInstance>(counter, CombatInstance()) );
|
||||||
|
|
||||||
|
//TODO: do various things like saving to the database
|
||||||
|
return counter++;
|
||||||
|
}
|
||||||
|
|
||||||
|
//TODO: (1) combat load, save
|
||||||
|
|
||||||
|
void CombatInstanceManager::Unload(int uid) {
|
||||||
|
elementMap.erase(uid);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CombatInstanceManager::UnloadAll() {
|
||||||
|
elementMap.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CombatInstanceManager::UnloadIf(std::function<bool(std::pair<const int, CombatInstance const&>)> fn) {
|
||||||
|
std::map<int, CombatInstance>::iterator it = elementMap.begin();
|
||||||
|
while (it != elementMap.end()) {
|
||||||
|
if (fn(*it)) {
|
||||||
|
it = elementMap.erase(it);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
++it;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CombatInstance* CombatInstanceManager::Find(int uid) {
|
||||||
|
std::map<int, CombatInstance>::iterator it = elementMap.find(uid);
|
||||||
|
|
||||||
|
if (it == elementMap.end()) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return &it->second;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CombatInstanceManager::GetLoadedCount() {
|
||||||
|
return elementMap.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::map<int, CombatInstance>* CombatInstanceManager::GetContainer() {
|
||||||
|
return &elementMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
lua_State* CombatInstanceManager::SetLuaState(lua_State* L) {
|
||||||
|
return lua = L;
|
||||||
|
}
|
||||||
|
|
||||||
|
lua_State* CombatInstanceManager::GetLuaState() {
|
||||||
|
return lua;
|
||||||
|
}
|
||||||
|
|
||||||
|
sqlite3* CombatInstanceManager::SetDatabase(sqlite3* db) {
|
||||||
|
return database = db;
|
||||||
|
}
|
||||||
|
|
||||||
|
sqlite3* CombatInstanceManager::GetDatabase() {
|
||||||
|
return database;
|
||||||
|
}
|
||||||
|
|||||||
@@ -19,5 +19,45 @@
|
|||||||
* 3. This notice may not be removed or altered from any source
|
* 3. This notice may not be removed or altered from any source
|
||||||
* distribution.
|
* distribution.
|
||||||
*/
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
#include "combat_instance.hpp"
|
#include "combat_instance.hpp"
|
||||||
|
|
||||||
|
#include "lua.hpp"
|
||||||
|
#include "sqlite3.h"
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
|
class CombatInstanceManager {
|
||||||
|
public:
|
||||||
|
CombatInstanceManager();
|
||||||
|
~CombatInstanceManager();
|
||||||
|
|
||||||
|
//common public methods
|
||||||
|
void Update();
|
||||||
|
|
||||||
|
int Create();
|
||||||
|
void Unload(int uid);
|
||||||
|
|
||||||
|
void UnloadAll();
|
||||||
|
void UnloadIf(std::function<bool(std::pair<const int, CombatInstance const&>)> fn);
|
||||||
|
|
||||||
|
//accessors & mutators
|
||||||
|
CombatInstance* Find(int uid);
|
||||||
|
int GetLoadedCount();
|
||||||
|
std::map<int, CombatInstance>* GetContainer();
|
||||||
|
|
||||||
|
//hooks
|
||||||
|
lua_State* SetLuaState(lua_State* L);
|
||||||
|
lua_State* GetLuaState();
|
||||||
|
sqlite3* SetDatabase(sqlite3* db);
|
||||||
|
sqlite3* GetDatabase();
|
||||||
|
|
||||||
|
private:
|
||||||
|
//members
|
||||||
|
std::map<int, CombatInstance> elementMap;
|
||||||
|
int counter = 0;
|
||||||
|
lua_State* lua = nullptr;
|
||||||
|
sqlite3* database = nullptr;
|
||||||
|
};
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
#config
|
#config
|
||||||
INCLUDES+=. .. ../entities ../../common/utilities
|
INCLUDES+=. .. ../characters ../creatures ../entities ../../common/gameplay ../../common/utilities
|
||||||
LIBS+=
|
LIBS+=
|
||||||
CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES))
|
CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES))
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#config
|
#config
|
||||||
INCLUDES+=. .. ../characters ../creatures ../entities ../monsters ../triggers ../../common/gameplay ../../common/map ../../common/network ../../common/network/packet_types ../../common/utilities
|
INCLUDES+=. .. ../characters ../combat ../creatures ../entities ../monsters ../triggers ../../common/gameplay ../../common/map ../../common/network ../../common/network/packet_types ../../common/utilities
|
||||||
LIBS+=
|
LIBS+=
|
||||||
CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES))
|
CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES))
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,9 @@
|
|||||||
*/
|
*/
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "barrier_manager.hpp"
|
||||||
#include "character_data.hpp"
|
#include "character_data.hpp"
|
||||||
|
#include "combat_instance_manager.hpp"
|
||||||
#include "creature_manager.hpp"
|
#include "creature_manager.hpp"
|
||||||
#include "region_pager_lua.hpp"
|
#include "region_pager_lua.hpp"
|
||||||
#include "trigger_manager.hpp"
|
#include "trigger_manager.hpp"
|
||||||
@@ -74,7 +76,9 @@ private:
|
|||||||
|
|
||||||
//members
|
//members
|
||||||
int roomIndex = 0;
|
int roomIndex = 0;
|
||||||
|
BarrierManager barrierMgr;
|
||||||
std::list<CharacterData*> characterList;
|
std::list<CharacterData*> characterList;
|
||||||
|
CombatInstanceManager CombatInstanceMgr;
|
||||||
CreatureManager creatureMgr;
|
CreatureManager creatureMgr;
|
||||||
RegionPagerLua pager;
|
RegionPagerLua pager;
|
||||||
TriggerManager triggerMgr;
|
TriggerManager triggerMgr;
|
||||||
|
|||||||
Reference in New Issue
Block a user