85 lines
1.6 KiB
C++
85 lines
1.6 KiB
C++
#pragma once
|
||
#include<map>
|
||
|
||
class CBuffProvider :
|
||
protected CCustomLogicLuaConfig
|
||
{
|
||
public:
|
||
typedef struct tagBuff
|
||
{
|
||
WORD nId;
|
||
WORD nType;
|
||
WORD nGroup;
|
||
char sName[127];
|
||
double dValue;
|
||
int nTimes;
|
||
bool boTimeOverlay;
|
||
bool boFullDel;
|
||
bool boDieRemove;
|
||
WORD nInterval;
|
||
WORD nDuration;
|
||
int nParam;
|
||
int nParam2;
|
||
int nParam3;
|
||
int nEffectType;
|
||
int nEffectId;
|
||
int nColor;
|
||
int nPropColor;
|
||
byte btIcon;
|
||
bool boSave;
|
||
byte btDisplay;
|
||
byte btDelEvent; // 删除的时候是否触发事件(1被动删除,2所有删除)
|
||
bool boDelGiverByLeaveGuild;//是否退出行会的时候清除释放者
|
||
int nEffectTotalCount;
|
||
int nEffectDirCount;
|
||
int nDebuff; //1)若Debuff=1,则目标栏下面显示。
|
||
}BUFFCONFIG, *PBUFFCONFIG;
|
||
|
||
CBuffProvider(void);
|
||
~CBuffProvider(void);
|
||
|
||
//加载buff配置
|
||
bool ReadBuffConfig();
|
||
|
||
//加载
|
||
bool Load(LPCTSTR sFilePath);
|
||
|
||
CVector<PBUFFCONFIG> * GetBuffByteType(int ntype)
|
||
{
|
||
if(m_typeConfMap.find(ntype) != m_typeConfMap.end())
|
||
{
|
||
return &m_typeConfMap[ntype];
|
||
}
|
||
return NULL;
|
||
}
|
||
|
||
PBUFFCONFIG GetBuffBySkillId(int nskill)
|
||
{
|
||
if(m_SkillBuffMap.find(nskill) != m_SkillBuffMap.end())
|
||
{
|
||
return m_SkillBuffMap[nskill];
|
||
}
|
||
return NULL;
|
||
}
|
||
|
||
inline BUFFCONFIG * GetBuff(int nId)
|
||
{
|
||
if (nId <= 0 || nId > m_vectorBuff.count())
|
||
{
|
||
return NULL;
|
||
}
|
||
return &m_vectorBuff[nId-1];
|
||
}
|
||
|
||
//获取buff的数量
|
||
inline INT_PTR GetBuffCount()
|
||
{
|
||
return m_vectorBuff.count();
|
||
}
|
||
private:
|
||
CVector<BUFFCONFIG> m_vectorBuff;
|
||
std::map<int, CVector<PBUFFCONFIG> > m_typeConfMap;
|
||
std::map<int, PBUFFCONFIG> m_SkillBuffMap;
|
||
};
|
||
|