DragonNest/GameCommon/TotalLevelSkillSystem.h

117 lines
6.1 KiB
C
Raw Normal View History

2024-12-20 16:56:44 +08:00
<EFBFBD><EFBFBD>#if defined(PRE_ADD_TOTAL_LEVEL_SKILL)
#pragma once
#include "Singleton.h"
class CDnTotalLevelSkillSystem
{
public:
CDnTotalLevelSkillSystem(DnActorHandle hActor);
virtual ~CDnTotalLevelSkillSystem();
enum _TotalLevelSkillType
{
TotalLevelSkill_Type_None = -1,
TotalLevelSkill_Type_Attack = 0,
TotalLevelSkill_Type_Defence,
TotalLevelSkill_Type_Ability,
};
enum _TotalLevelSkillSlotIndex
{
TotalLevelSkill_Slot_0,
TotalLevelSkill_Slot_1,
TotalLevelSkill_Slot_2,
TotalLevelSkill_Slot_3, //<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>o<EFBFBD>.
TotallevelSkill_Slot_Count,
};
enum _ErrorCode
{
TotalLevelSystem_Error_None = 0,
TotalLevelSystem_Error_NotUsable,
TotalLevelSystem_Error_NotActivateSlot,
TotalLevelSystem_Error_SameSkillType,
};
struct _TotalLevelSkillInfo
{
int m_TotalLevelLimit;
int m_ActorLevelLimit;
int m_SkillType;
int m_SkillTreeSlotIndex;
int m_SkillID;
};
struct _TotalLevelSkillSlotInfo
{
int m_LevelLimit;
int m_SlotIndex;
bool m_isCashSlot;
__time64_t m_ExpireDate;
};
protected:
DnActorHandle m_hActor; //<EFBFBD><EFBFBD>i<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>¬<EFBFBD> a<EFBFBD>0<EFBFBD> <EFBFBD><EFBFBD>x<EFBFBD>
vector<DnSkillHandle> m_vlTotalLevelSkillList;
std::map<int, _TotalLevelSkillInfo> m_TotalLevelSkillInfoList; //<EFBFBD><EFBFBD>i<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>¬<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>
std::map<int, _TotalLevelSkillSlotInfo> m_TotalLevelSlotInfoList; //<EFBFBD><EFBFBD>i<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>¬<EFBFBD> <EFBFBD><EFBFBD>o<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>
std::map<int, bool> m_TotalLevelSkillSlotActivate; //<EFBFBD><EFBFBD>i<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>o<EFBFBD> \<EFBFBD>1<EFBFBD>T<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>
std::map<int, DnSkillHandle> m_ActiveTotalLevelSkillList; //<EFBFBD><EFBFBD>i<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>¬<EFBFBD> <EFBFBD><EFBFBD>]<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>
int m_TotalLevel; //<EFBFBD><EFBFBD>i<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> ֬<EFBFBD> <EFBFBD>X<EFBFBD>
void RemoveTotalLevelSkillFromList(int slotIndex);
public:
std::map<int, bool>& GetSlotActivateList() { return m_TotalLevelSkillSlotActivate; }
_TotalLevelSkillSlotInfo* GetSlotInfo(int nSlotIndex);
vector<DnSkillHandle>& GetTotalLevelSkillList() { return m_vlTotalLevelSkillList; }
_TotalLevelSkillInfo* GetTotalLevelSkillInfo(int nSkillID);
void LoadTotalLevelSkillList();
void LoadTotalLevelSkillSlotInfo();
DnSkillHandle FindTotalLevelSkill( int nSkillTableID );
bool IsTotalLevelSkill( int nSkillTableID );
bool IsActivateSlot(int nSlotIndex);
//<EFBFBD><EFBFBD>i<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>¬<EFBFBD> <EFBFBD><EFBFBD>]<EFBFBD>..
void AddTotalLevelSkill(int slotIndex, DnSkillHandle hSkill, bool isInitialize = false);
//<EFBFBD><EFBFBD>i<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>¬<EFBFBD> <EFBFBD>p<EFBFBD>
void RemoveTotallevelSkill(int slotIndex);
//<EFBFBD><EFBFBD>]<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>i<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>¬<EFBFBD>D<EFBFBD> <EFBFBD>X<EFBFBD>
DnSkillHandle GetActivateTotalLevelSkill(int slotIndex);
//<EFBFBD><EFBFBD>i<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>¬<EFBFBD> <EFBFBD><EFBFBD>o<EFBFBD> \<EFBFBD>1<EFBFBD>T<EFBFBD> $<EFBFBD><EFBFBD>.
void ActivateTotalLevelSkillSlot(int slotIndex, bool bActivate);
//<EFBFBD><EFBFBD>l<EFBFBD> <EFBFBD><EFBFBD>o<EFBFBD> \<EFBFBD>1<EFBFBD>T<EFBFBD> $<EFBFBD><EFBFBD>..
void ActivateTotalLevelSkillCashSlot(int nSlotIndex, bool bActivate, __time64_t tExpireDate);
void SetTotalLevel(int totalLevel);
int GetTotalLevel() { return m_TotalLevel; }
//<EFBFBD>¬<EFBFBD> <EFBFBD><EFBFBD>]<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> \<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>.
int CanAddSkill(int slotIndex, DnSkillHandle hSkill);
//<EFBFBD><EFBFBD>i<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>¬<EFBFBD>t<EFBFBD> \<EFBFBD>1<EFBFBD>T<EFBFBD> <EFBFBD><EFBFBD>Ŕ<EFBFBD><EFBFBD><EFBFBD>..
bool IsUsableSkill(DnSkillHandle hSkill);
void UpdateTotalLevel();
void Process(LOCAL_TIME localTime, float fDelta);
int FindEmptySlot();
int FindEmptyNormalSlot(int nSkillID);
int FindEmptyCashSlot(int nSkillID);
int FindEmptySlot(int nSkillID);
};
#endif // PRE_ADD_TOTAL_LEVEL_SKILL