⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 skillmanager.h

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 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 + -