diff --git a/server/account_manager.cpp b/server/account_manager.cpp new file mode 100644 index 0000000..9212c4b --- /dev/null +++ b/server/account_manager.cpp @@ -0,0 +1,4 @@ +#include "account_manager.hpp" + +AccountManager AccountManager::instance; + diff --git a/server/account_manager.hpp b/server/account_manager.hpp new file mode 100644 index 0000000..a2b2969 --- /dev/null +++ b/server/account_manager.hpp @@ -0,0 +1,23 @@ +#ifndef ACCOUNTMANAGER_HPP_ +#define ACCOUNTMANAGER_HPP_ + +#include + +class AccountManager { +private: + AccountManager() = default; + ~AccountManager() = default; + static AccountManager instance; + +public: + static AccountManager* GetInstance() { return &instance; } + +private: + struct AccountEntry { + int index; + }; + + std::list list; +}; + +#endif diff --git a/server/base_room.hpp b/server/base_room.hpp index c59a9d6..1577381 100644 --- a/server/base_room.hpp +++ b/server/base_room.hpp @@ -6,9 +6,10 @@ #include #include +//The abstract base class for all rooms class BaseRoom { public: - BaseRoom(std::map args); + BaseRoom() = default; ~BaseRoom() = default; virtual void Init() = 0; @@ -21,13 +22,10 @@ public: MailBox* GetMailBox() { return& mailBox; } protected: - std::map const arguments; MailBox mailBox; private: bool running = true; }; -int roomThread(void*); - #endif diff --git a/server/client_manager.cpp b/server/client_manager.cpp new file mode 100644 index 0000000..199f870 --- /dev/null +++ b/server/client_manager.cpp @@ -0,0 +1,4 @@ +#include "client_manager.hpp" + +ClientManager ClientManager::instance; + diff --git a/server/client_manager.hpp b/server/client_manager.hpp new file mode 100644 index 0000000..0749918 --- /dev/null +++ b/server/client_manager.hpp @@ -0,0 +1,23 @@ +#ifndef CLIENTMANAGER_HPP_ +#define CLIENTMANAGER_HPP_ + +#include + +class ClientManager { +private: + ClientManager() = default; + ~ClientManager() = default; + static ClientManager instance; + +public: + static ClientManager* GetInstance() { return &instance; } + +private: + struct ClientEntry { + int index; + }; + + std::list list; +}; + +#endif diff --git a/server/mail_box.hpp b/server/mail_box.hpp index 15ec1ce..5cec33e 100644 --- a/server/mail_box.hpp +++ b/server/mail_box.hpp @@ -6,7 +6,7 @@ #include #include -//Thread safe mailbox +//Thread safe messaging system class MailBox { public: MailBox(); diff --git a/server/main.cpp b/server/main.cpp index e3066da..ed67fd3 100644 --- a/server/main.cpp +++ b/server/main.cpp @@ -12,10 +12,9 @@ int main(int, char**) { cout << "Beginning server" << endl; #endif try { - ServerApplication app; - app.Init(); - app.Loop(); - app.Quit(); + ServerApplication::GetInstance()->Init(); + ServerApplication::GetInstance()->Loop(); + ServerApplication::GetInstance()->Quit(); } catch(exception& e) { cerr << "Fatal error: " << e.what() << endl; diff --git a/server/player_manager.cpp b/server/player_manager.cpp new file mode 100644 index 0000000..b0911e6 --- /dev/null +++ b/server/player_manager.cpp @@ -0,0 +1,4 @@ +#include "player_manager.hpp" + +PlayerManager PlayerManager::instance; + diff --git a/server/player_manager.hpp b/server/player_manager.hpp new file mode 100644 index 0000000..46dcf3b --- /dev/null +++ b/server/player_manager.hpp @@ -0,0 +1,23 @@ +#ifndef PLAYERMANAGER_HPP_ +#define PLAYERMANAGER_HPP_ + +#include + +class PlayerManager { +private: + PlayerManager() = default; + ~PlayerManager() = default; + static PlayerManager instance; + +public: + static PlayerManager* GetInstance() { return &instance; } + +private: + struct PlayerEntry { + int index; + }; + + std::list list; +}; + +#endif diff --git a/server/base_room.cpp b/server/room_manager.cpp similarity index 68% rename from server/base_room.cpp rename to server/room_manager.cpp index 3773d90..79f139e 100644 --- a/server/base_room.cpp +++ b/server/room_manager.cpp @@ -1,19 +1,11 @@ -#include "base_room.hpp" - -#include "SDL/SDL_thread.h" +#include "room_manager.hpp" #include -BaseRoom::BaseRoom(std::map args): - arguments(args) -{ - // -} +RoomManager RoomManager::instance; int roomThread(void* ptr) { -#ifdef DEBUG std::cout << "Opening room" << std::endl; -#endif try { reinterpret_cast(ptr)->Init(); reinterpret_cast(ptr)->Loop(); @@ -23,8 +15,7 @@ int roomThread(void* ptr) { std::cerr << "Fatal room error: " << e.what() << std::endl; return 1; } -#ifdef DEBUG std::cout << "Closing room" << std::endl; -#endif return 0; } + diff --git a/server/room_manager.hpp b/server/room_manager.hpp new file mode 100644 index 0000000..5178a7e --- /dev/null +++ b/server/room_manager.hpp @@ -0,0 +1,33 @@ +#ifndef ROOMMANAGER_HPP_ +#define ROOMMANAGER_HPP_ + +#include "base_room.hpp" + +#include "SDL/SDL_thread.h" + +#include + +class RoomManager { +private: + RoomManager() = default; + ~RoomManager() = default; + static RoomManager instance; + +public: + static RoomManager* GetInstance() { return &instance; } + + //open room + //close room + + //get room + //set? + +private: + struct RoomHandle { + SDL_Thread* thread = nullptr; + BaseRoom* room = nullptr; + }; + std::list rooms; +}; + +#endif diff --git a/server/server_application.cpp b/server/server_application.cpp index b0d6ead..5b0c40b 100644 --- a/server/server_application.cpp +++ b/server/server_application.cpp @@ -1,5 +1,7 @@ #include "server_application.hpp" +ServerApplication ServerApplication::instance; + ServerApplication::ServerApplication() { //TODO } @@ -10,6 +12,10 @@ ServerApplication::~ServerApplication() { void ServerApplication::Init() { //TODO + + //Init SDL + //Init lua + //Init SQL } void ServerApplication::Loop() { @@ -19,11 +25,3 @@ void ServerApplication::Loop() { void ServerApplication::Quit() { //TODO } - -void ServerApplication::OpenRoom(std::map args) { - //TODO -} - -void ServerApplication::CloseRoom(RoomHandle roomHandle) { - //TODO -} diff --git a/server/server_application.hpp b/server/server_application.hpp index e5018ff..e8a2b68 100644 --- a/server/server_application.hpp +++ b/server/server_application.hpp @@ -1,36 +1,21 @@ #ifndef SERVERAPPLICATION_HPP_ #define SERVERAPPLICATION_HPP_ -#include "base_room.hpp" - -#include "SDL/SDL_thread.h" - -#include -#include -#include - -struct RoomHandle { - SDL_Thread* thread = nullptr; - BaseRoom* room = nullptr; -}; - +//The main application class class ServerApplication { -public: +private: ServerApplication(); ~ServerApplication(); + static ServerApplication instance; + +public: + static ServerApplication* GetInstance() { return &instance; } void Init(); void Loop(); void Quit(); - bool SetRunning(bool b) { return running = b; } - bool GetRunning() const { return running; } - private: - void OpenRoom(std::map); - void CloseRoom(RoomHandle); - - std::list rooms; bool running = true; };