mirror of
https://github.com/QuasarApp/Snake.git
synced 2025-04-28 18:54:40 +00:00
65 lines
1.6 KiB
C++
65 lines
1.6 KiB
C++
#ifndef SQLDBCASHE_H
|
|
#define SQLDBCASHE_H
|
|
#include "sqldbwriter.h"
|
|
|
|
#include <QMap>
|
|
#include <QHash>
|
|
#include <QSet>
|
|
#include <QVariantMap>
|
|
#include <player.h>
|
|
#include "item.h"
|
|
#include <clientprotocol.h>
|
|
|
|
enum class SqlDBCasheWriteMode: int {
|
|
Default = 0x0,
|
|
On_New_Thread = 0x1,
|
|
Force = 0x2,
|
|
} ;
|
|
|
|
namespace ClientProtocol {
|
|
class BaseNetworkObject;
|
|
}
|
|
|
|
class SqlDBCache : private SqlDBWriter
|
|
{
|
|
private:
|
|
qint64 lastUpdateTime = 0;
|
|
qint64 updateInterval = DEFAULT_UPDATE_INTERVAL;
|
|
|
|
QMap <int, Item> items;
|
|
QMap <int, PlayerDBData> players;
|
|
QHash <int, QSet<int>> owners;
|
|
|
|
int generateIdForItem() const;
|
|
int generateIdForPalyer() const;
|
|
|
|
bool checkPlayer(int id) override;
|
|
bool checkItem(int idItem, int idOwner = -1) override;
|
|
|
|
void globalUpdateDataBasePrivate(qint64 currentTime);
|
|
void globalUpdateDataBase(SqlDBCasheWriteMode mode = SqlDBCasheWriteMode::Default);
|
|
|
|
bool itemIsFreeFrom(int item) const override ;
|
|
|
|
public:
|
|
SqlDBCache(qint64 updateInterval = DEFAULT_UPDATE_INTERVAL);
|
|
~SqlDBCache() override;
|
|
|
|
bool initDb(const QString &pdbath = DEFAULT_DB_PATH) override;
|
|
|
|
Item getItem(int id) override;
|
|
int saveItem(const Item& saveData) override;
|
|
PlayerDBData getPlayer(int id) override;
|
|
int savePlayer(const PlayerDBData &player) override;
|
|
|
|
bool giveAwayItem(int player, int item);
|
|
bool getItem(int player, int item, bool check = true);
|
|
bool moveItem(int owner, int receiver, int item);
|
|
|
|
bool getAllItemsOfPalyer(int player, QSet<int>& items) override;
|
|
|
|
friend class testSankeServer;
|
|
};
|
|
|
|
#endif // SQLDBCASHE_H
|