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

108 lines
3.0 KiB
C++

#pragma once
#include <iostream>
#include <vector>
#include"GameSets.h"
#define MAX_BROCASTKEY_SIZE 11 //最大快捷键
#define MAX_BROCASTKEYAPP_SIZE 5 //最大快捷键
//游戏设置
template<int SUBSYSTEMID,class SonClass, class EntityClass>
class CEntitySubSystem;
class CActor;
class CGameSetsSystem:
public CEntitySubSystem<enGameSetsSystemID, CGameSetsSystem, CActor>
{
public:
typedef CEntitySubSystem<enGameSetsSystemID, CGameSetsSystem, CActor> Inherited;
typedef struct tagKeyBoardDATA
{
unsigned int nPos;
unsigned int nType;
unsigned int uId;
tagKeyBoardDATA()
{
ZeroMemory(this,sizeof(tagKeyBoardDATA));
};
}KEYBOARDDATA;
enum{
EN_GAMESET_BASE = 1, //基础
EN_GAMESET_ITEM = 2, //物品
EN_GAMESET_MEDI = 3, //药品
EN_GAMESET_PROT = 4, //保护
EN_GAMESET_HOOK = 5, //挂机
EN_GAMESET_SYST = 6, //系统
EN_GAMESET_RECYLE = 7, //回收
};
enum
{
eSPECIAL_HOTKEY_RECYLE = 55, //回收
eSPECIAL_HOTKEY_RANDOM = 58, //随机
eSPECIAL_HOTKEY_MEDICINE = 239, //药
};
enum
{
eSPECIAL_HOTKEY_RECYLE_POS = 15, //回收默认位置
eSPECIAL_HOTKEY_RANDOM_POS = 11, //随机默认位置
eSPECIAL_HOTKEY_MEDICINE_POS = 12, //药默认位置
};
public:
CGameSetsSystem();
~CGameSetsSystem();
public:
virtual bool Initialize(void *data,SIZE_T size);
virtual void Destroy();
virtual VOID OnDbRetData(INT_PTR nCmd,INT_PTR nErrorCode,CDataPacketReader &reader);
public:
void OnEnterScene();
VOID ProcessNetData(INT_PTR nCmd,CDataPacketReader &packet);
void LoadFromDB();
void SaveToDB();
void UpdateGameSetsData(CDataPacketReader &packet);
void DoUpdateGameSetsData(int nCType,int nCPos, int nCId,int lastPos);
void DiscardGameSetsData(CDataPacketReader &packet);
bool CheckSameTypeAndId(int pos, int type, int id, int& samepos); //查询是否存在冲突的id
void DealKeyBoard();
//手机端
void UpdateGameSetsDataApp(CDataPacketReader &packet);
void SendAppKeyBoardsInfo();
void DiscardGameSetsDataApp(CDataPacketReader &packet);
void AutoGameSetSkillApp(int nCType, int nCId);//自动加技能格
void DoUpdateGameSetsDataApp(int nCType,int nCPos, int nCId,int lastPos = 0, bool isAuto = true);
bool CheckSameTypeAndIdApp(int pos, int type, int id, int& samepos); //查询是否存在冲突的id
void SetGameCheck(CDataPacketReader &packet);
void SetGameValue(CDataPacketReader &packet);
void Reset(CDataPacketReader &packet);
void OneKeyItem(CDataPacketReader &packet);
void SendOneData(BYTE nSetType);
//自动补位
void AutoGameSetSkill(int nCType, int nCId);
void SendAllData();
void OnChangeVocation();
//获取设置数据
GAMESETSDATA2& GetGameSet() { return m_GsData2; }
private:
void SendGameSetsData();
public:
//跨服数据发送
void SendMsg2CrossServer(int nType);
//跨服数据初始化
VOID OnCrossInitData(GAMESETSDATA& GsData, GAMESETSDATA2& GsData2);
private:
GAMESETSDATA m_GsData;
GAMESETSDATA2 m_GsData2;
std::vector<KEYBOARDDATA> m_kbDataList;
std::vector<KEYBOARDDATA> m_kbAppDataList;//手机端
};