Implemented ManagerInterface in AccountManager and CharacterManager
ManagerInterface was already designed for those two anyway. The only thing left to do is to rewrite the room API, and the whole thing should work fine again. I still think map data should be saved and loaded by lua code, so the rooms will still implement lua hooks. There may be other things that can be loaded from SQL, but I don't know what.
This commit is contained in:
@@ -24,29 +24,33 @@
|
||||
|
||||
#include "account_data.hpp"
|
||||
#include "singleton.hpp"
|
||||
#include "manager_interface.hpp"
|
||||
|
||||
#include "sqlite3/sqlite3.h"
|
||||
|
||||
#include <functional>
|
||||
#include <map>
|
||||
|
||||
class AccountManager : public Singleton<AccountManager> {
|
||||
class AccountManager:
|
||||
public Singleton<AccountManager>,
|
||||
public ManagerInterface<AccountData, std::string, int>
|
||||
{
|
||||
public:
|
||||
//public access methods
|
||||
int Create(std::string username, int clientIndex);
|
||||
int Load(std::string username, int clientIndex);
|
||||
int Save(int uid);
|
||||
void Unload(int uid);
|
||||
void Delete(int uid);
|
||||
//common public methods
|
||||
int Create(std::string username, int clientIndex) override;
|
||||
int Load(std::string username, int clientIndex) override;
|
||||
int Save(int uid) override;
|
||||
void Unload(int uid) override;
|
||||
void Delete(int uid) override;
|
||||
|
||||
void UnloadAll();
|
||||
void UnloadIf(std::function<bool(std::pair<int, AccountData>)> fn);
|
||||
void UnloadAll() override;
|
||||
void UnloadIf(std::function<bool(std::pair<const int, AccountData>)> fn) override;
|
||||
|
||||
//accessors and mutators
|
||||
AccountData* Get(int uid);
|
||||
int GetLoadedCount();
|
||||
int GetTotalCount();
|
||||
std::map<int, AccountData>* GetContainer();
|
||||
AccountData* Get(int uid) override;
|
||||
int GetLoadedCount() override;
|
||||
int GetTotalCount() override;
|
||||
std::map<int, AccountData>* GetContainer() override;
|
||||
|
||||
sqlite3* SetDatabase(sqlite3* db);
|
||||
sqlite3* GetDatabase();
|
||||
@@ -57,7 +61,6 @@ private:
|
||||
AccountManager() = default;
|
||||
~AccountManager() = default;
|
||||
|
||||
std::map<int, AccountData> accountMap;
|
||||
sqlite3* database = nullptr;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user