📄 skillmanager.h
字号:
#ifndef _SKILLMANAGER_H_
#define _SKILLMANAGER_H_
#include <SolarHashTable.h>
class Skill;
class SlotManager;
class SCSkillSlotContainer;
class SCQuickSlotContainer;
class SCQuickStyleSlotContainer;
class Player;
class SkillManager
{
enum { DEFAULT_POOL_SIZE = 10 };
public:
SkillManager();
~SkillManager();
VOID Init( SlotManager * pMGR );
VOID Release();
RC::eSKILL_RESULT Link( SLOTCODE SkillCode, POSTYPE toQuickPos );
RC::eSKILL_RESULT Unlink( SLOTCODE SkillCode );
BOOL IsEmpty( POSTYPE pos );
// 公扁 酒捞袍 背券俊 蝶弗 胶懦 利侩 函版
VOID AddWeapon( CODETYPE dwNewWeaponCode );
VOID DelWeapon();
// 胶懦 浇吩 盎脚
VOID SerializeSkillStream( POSTYPE pos, SKILLSTREAM * IN pStream, eSERIALIZE eType );
// 菩矫宏 胶懦 包访
inline Skill* FindPassiveSkill( SLOTCODE SkillCode ) { return m_pPassiveSkillHashTable->GetData( SkillCode ); }
VOID AddPassiveSkill( Skill *pSkill );
BOOL DelPassiveSkill( SLOTCODE SkillCode );
VOID AddAttrForPassiveSkill( SLOTCODE SkillCode ); // 菩矫宏 胶懦狼 扁瓷阑 利侩茄促.
VOID UpdatePassiveSkills(); // 泅犁 炼扒俊 蝶扼 菩矫宏 胶懦甸阑 利侩 棺 秦力茄促.
template< class PassiveOperator >
VOID ForEachPassiveSkill( PassiveOperator &Opr );
// 胶懦 嚼垫 包访
RC::eSKILL_RESULT CanLevelUpSkill( SLOTCODE CurSkillCode, SLOTCODE NewSkillCode );
VOID LevelUpSkill( SLOTCODE CurSkillCode, SLOTCODE NewSkillCode, SKILLSLOT & OUT NewSkillSlot );
RC::eSKILL_RESULT CanLearnSkill( SLOTCODE NewSkillCode );
VOID LearnSkill( SLOTCODE NewSkillCode, SKILLSLOT & OUT NewSkillSlot );
// 胶鸥老 嚼垫 包访
RC::eSKILL_RESULT CanLevelUpStyle( SLOTCODE CurStyleCode, SLOTCODE NewStyleCode );
VOID LevelUpStyle( SLOTCODE CurStyleCode, SLOTCODE NewStyleCode, SKILLSLOT & OUT NewSkillSlot );
RC::eSKILL_RESULT CanLearnStyle( SLOTCODE NewStyleCode );
VOID LearnStyle( SLOTCODE NewStyleCode, SKILLSLOT & OUT NewSkillSlot );
// 胶鸥老 瘤沥
RC::eSKILL_RESULT CanSelectStyle( SLOTCODE NewStyleCode );
VOID SetSelectStyle( SLOTCODE NewStyleCode );
inline SCSkillSlotContainer * GetSkillSlotContainer() { return m_pSkillSlotContainer; }
inline SCQuickSlotContainer * GetQuickSlotContainer() { return m_pQuickSlotContainer; }
private:
BOOL ApplyPassiveSkill( Skill *pSkill ); // 菩矫宏 胶懦狼 扁瓷阑 利侩茄促.
VOID ReleasePassiveSkill( Skill *pSkill ); // 菩矫宏 胶懦狼 扁瓷阑 秦力茄促.
VOID ApplyStyleBuff( SLOTCODE StyleCode );
VOID ReleaseStyleBuff( SLOTCODE StyleCode );
BOOL ValidState();
private:
Player * m_pPlayer;
SlotManager * m_pSlotMGR;
SCSkillSlotContainer * m_pSkillSlotContainer;
SCQuickSlotContainer * m_pQuickSlotContainer;
SCQuickStyleSlotContainer * m_pStyleSlotContainer;
util::SolarHashTable<Skill*> * m_pPassiveSkillHashTable; // 利侩登绢 乐绰 菩矫宏 胶懦府胶飘
SLOTCODE m_PreStyleCode; // 公扁甫 哗扁傈俊 捞傈 胶鸥老 内靛甫 扁撅秦 初绰促.
};
template< class PassiveOperator >
VOID SkillManager::ForEachPassiveSkill( PassiveOperator &Opr )
{
Skill * pSkill = NULL;
m_pPassiveSkillHashTable->SetFirst();
while( pSkill = m_pPassiveSkillHashTable->GetNext() )
{
Opr( pSkill );
}
}
#endif // _SKILLMANAGER_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -