Files
mir_server/server/LogicServer/base/GlobalVarMgr.h
aixianling 5c9f1dae4a init
2025-01-09 17:45:40 +08:00

66 lines
1.4 KiB
C++

#pragma once
/****************************************
提供给脚本保存全局数据的组件
*****************************************/
class CGlobalVarMgr:
public CComponent
{
public:
/*
* Comments:从db读取数据
* @Return VOID:
*/
VOID Load();
/*
* Comments:定期检查
* @Return VOID:
*/
VOID RunOne();
//处理DB数据
void OnDbRetData(INT_PTR nCmd,INT_PTR nErrorCode,CDataPacketReader &reader);
void DelDbRetData(INT_PTR nCmd, void* data, size_t len);
//获取小于等于当前转生的人数
int GetCountByCircleLevel(int nCircleLevel);
//当前转生人数+1
void AddCountByCircleLevel(int nCirclrLevel, int nCount = 1);
//当玩家转生阶数+1 上一转人数 就需要-1
void SubCountByCircleLevel(int nCircleLevel);
//存盘
void Save();
inline void Destroy()
{
if(m_hasModify)
{
Save();
}
m_Var.clear();
}
//获取变量对象
//调用过一次就默认这个修改过
inline CCLVariant& GetVar()
{
m_hasModify =true;
return m_Var;
}
public:
CGlobalVarMgr();
~CGlobalVarMgr();
std::map<int, int> m_CircleMap; //转生人数次数
private:
CTimer<3600000> m_timer; //
CCLVariant m_Var;
bool m_boInited; //是否已经读入数据
CDataPacket m_saveDataPack;
bool m_hasModify ; //是否修改过,如果没有修改过就不存盘了
};