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

66 lines
1.9 KiB
C++

#pragma once
#include<map>
struct StrengthInfo
{
int nId; // 下表
int nLv;// 等级
StrengthInfo()
{
memset(this, 0, sizeof(*this));
}
};
/*
强化系统
*/
class CStrengthenSystem :public CEntitySubSystem<enStrengthenSystemID, CStrengthenSystem, CActor>
{
public:
//初始化
virtual bool Initialize(void* data, size_t size);
void OnEnterGame();
//处理db 数据返回
virtual void OnDbRetData(INT_PTR nCmd, INT_PTR nErrorCode, CDataPacketReader& packet);
//存盘
virtual void SaveToDb();
//处理消息逻辑
void ProcessNetData(INT_PTR cmd, CDataPacketReader& packet);
void GetStrongInfo(CDataPacketReader& packet);
void UpStrong(CDataPacketReader& packet);
//获取当前强化信息
StrengthInfo* GetStrongPtrInfo(int nType, int nPos);
bool CheckStrengthenLv(int nType, int nPos, int nLv);
void SetStrengthenLv(int nType, int nPos, int nLv);
int GetStrongLv(int nType, int nPos);
//属性
VOID CalcAttributes(CAttrCalc &calc);
//返回数据
VOID returnStrongInfo(CDataPacket &data);
//处理强化是否满足
bool checkCanUPStrengthenLv(int nType, int nLv);
//
int AddlvByType(int nType);
std::map<int, std::vector<StrengthInfo> >& GetStrongInfos() {
return m_nStrengths;
}
private:
std::map<int, std::vector<StrengthInfo> > m_nStrengths; //2四象 3暴击戒指 4麻痹戒指
bool isInitData = false;
bool isDataModify = false;
typedef std::map<int, std::vector<StrengthInfo> >::iterator strongMapIter;
typedef std::vector<StrengthInfo>::iterator strongVectorIter;
public:
//跨服数据
void SendMsg2CrossServer(int nType);
//跨服数据初始化
VOID OnCrossInitData(std::map<int, std::vector<StrengthInfo> >& nStrengths);
};