From 170096b5db9bf5a0293254813652f7c667336ffa Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Fri, 6 Jun 2014 23:34:38 +1000 Subject: [PATCH] Server is nearly done, only server_application.cpp is failing --- client/makefile | 2 +- server/account_manager.cpp | 10 ++++++++++ server/account_manager.hpp | 4 ++-- server/character_manager.cpp | 10 ++++++++++ server/character_manager.hpp | 4 ++-- server/makefile | 2 +- server/server_application.cpp | 14 +------------- server/server_application.hpp | 6 ++++-- 8 files changed, 31 insertions(+), 21 deletions(-) diff --git a/client/makefile b/client/makefile index bba3c67..947b822 100644 --- a/client/makefile +++ b/client/makefile @@ -1,5 +1,5 @@ #config -INCLUDES+=. ../common/gameplay ../common/graphics ../common/map ../common/network ../common/ui ../common/utilities +INCLUDES+=. ../common/gameplay ../common/graphics ../common/map ../common/network ../common/network/packet ../common/network/serial ../common/ui ../common/utilities LIBS+=../libcommon.a -lSDL_net -lwsock32 -liphlpapi -lmingw32 -lSDLmain -lSDL -llua CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES)) -DGRAPHICS diff --git a/server/account_manager.cpp b/server/account_manager.cpp index 424c125..4a9bdc4 100644 --- a/server/account_manager.cpp +++ b/server/account_manager.cpp @@ -36,6 +36,16 @@ static const char* DELETE_USER_ACCOUNT = "DELETE FROM Accounts WHERE uid = ?;"; //Define the public methods //------------------------- +AccountManager::AccountManager() { + // +} + +AccountManager::~AccountManager() { + for (auto& it : accountMap) { + SaveUserAccount(it.first); + } +} + int AccountManager::CreateUserAccount(std::string username, int clientIndex) { //create this user account, failing if it exists, leave this account in memory sqlite3_stmt* statement = nullptr; diff --git a/server/account_manager.hpp b/server/account_manager.hpp index 6d109ac..10ba8a3 100644 --- a/server/account_manager.hpp +++ b/server/account_manager.hpp @@ -30,8 +30,8 @@ class AccountManager { public: - AccountManager() = default; - ~AccountManager() = default; + AccountManager(); + ~AccountManager(); //public access methods int CreateUserAccount(std::string username, int clientIndex); diff --git a/server/character_manager.cpp b/server/character_manager.cpp index 4064f5d..1192788 100644 --- a/server/character_manager.cpp +++ b/server/character_manager.cpp @@ -58,6 +58,16 @@ static const char* DELETE_CHARACTER = "DELETE FROM Characters WHERE uid = ?;"; //Define the methods //------------------------- +CharacterManager::CharacterManager() { + // +} + +CharacterManager::~CharacterManager() { + for (auto& it : characterMap) { + SaveCharacter(it.first); + } +} + //TODO: should statistics be stored separately? //TODO: default stats as a parameter? This would be good for differing beggining states or multiple classes int CharacterManager::CreateCharacter(int owner, std::string handle, std::string avatar) { diff --git a/server/character_manager.hpp b/server/character_manager.hpp index c334a7a..97b3a18 100644 --- a/server/character_manager.hpp +++ b/server/character_manager.hpp @@ -30,8 +30,8 @@ class CharacterManager { public: - CharacterManager() = default; - ~CharacterManager() = default; + CharacterManager(); + ~CharacterManager(); //public access methods int CreateCharacter(int owner, std::string handle, std::string avatar); diff --git a/server/makefile b/server/makefile index 901f8a6..7c733ea 100644 --- a/server/makefile +++ b/server/makefile @@ -1,5 +1,5 @@ #config -INCLUDES+=. ../common/gameplay ../common/map ../common/network ../common/script ../common/utilities +INCLUDES+=. ../common/gameplay ../common/map ../common/network ../common/network/packet ../common/network/serial ../common/script ../common/utilities LIBS+=../libcommon.a -lSDL_net -lwsock32 -liphlpapi -lmingw32 -lSDLmain -lSDL -llua -lsqlite3 CXXFLAGS+=-std=c++11 $(addprefix -I,$(INCLUDES)) diff --git a/server/server_application.cpp b/server/server_application.cpp index 12c8589..24c71cc 100644 --- a/server/server_application.cpp +++ b/server/server_application.cpp @@ -80,6 +80,7 @@ void ServerApplication::Init(int argc, char** argv) { combatMgr.SetLuaState(luaState); roomMgr.SetLuaState(luaState); + enemyMgr.SetLuaState(luaState); std::cout << "Internal managers ready" << std::endl; @@ -133,19 +134,6 @@ void ServerApplication::Proc() { void ServerApplication::Quit() { std::cout << "Shutting down" << std::endl; - //save the server state - for (auto& it : accountMap) { - SaveUserAccount(it.first); - } - for (auto& it : characterMap) { - SaveCharacter(it.first); - } - - //empty the members - accountMap.clear(); - characterMap.clear(); - regionPager.UnloadAll(); - //APIs lua_close(luaState); sqlite3_close_v2(database); diff --git a/server/server_application.hpp b/server/server_application.hpp index aa761d3..cab0e1f 100644 --- a/server/server_application.hpp +++ b/server/server_application.hpp @@ -23,10 +23,11 @@ #define SERVERAPPLICATION_HPP_ //server specific stuff -#include "client_data.hpp" #include "account_manager.hpp" #include "character_manager.hpp" +#include "client_data.hpp" #include "combat_manager.hpp" +#include "enemy_manager.hpp" #include "room_manager.hpp" //maps @@ -96,13 +97,14 @@ private: UDPNetworkUtility network; ConfigUtility config; - //server tables + //simple tables std::map clientMap; //managers AccountManager accountMgr; CharacterManager characterMgr; CombatManager combatMgr; + EnemyManager enemyMgr; RoomManager roomMgr; //misc