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

📄 effectmanager.h

📁 墨香最新私服
💻 H
字号:
// EffectManager.h: interface for the CEffectManager class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_EFFECTMANAGER_H__C97B73EA_067D_41CA_A990_2459F04ED62B__INCLUDED_)
#define AFX_EFFECTMANAGER_H__C97B73EA_067D_41CA_A990_2459F04ED62B__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

typedef DWORD HEFFPROC;
class CObject;
class CEffect;
class CDamageNumber;
class CEngineObject;

#include "PtrList.h"
#include "EffectDescManager.h"

#define EFFECTMGR USINGTON(CEffectManager)

#define EFFECT_FLAG_NORMAL				0x00000000
#define EFFECT_FLAG_HEROATTACK			0x00000001
#define EFFECT_FLAG_FATALDAMAGE			0x00000004
#define EFFECT_FLAG_LINKTOOBJECT		0x00000008
#define EFFECT_FLAG_ABSOLUTEPOS			0x00000010
#define EFFECT_FLAG_DIE					0x00000020
#define EFFECT_FLAG_GENDERBASISTARGET	0x00000040
#define EFFECT_FLAG_RELATEDTOHERO		0x00000080


#define EFFECT_OPTION_ALL				0
#define EFFECT_OPTION_ONLYHERO			1
#define EFFECT_OPTION_NONE				2

extern int g_EffectOption;

enum eEffectDescKind
{
	eEffectForMan = 0,
	eEffectForWoman,
		
	eEffect_Max,
};
class CEffectManager  
{
	CYHHashTable<void>	m_IllisionEffectMaterialTable;

	CMemoryPoolTempl<CEffect>* m_pEffectPool;
	CMemoryPoolTempl<CDamageNumber>* m_pDNPool;
	BOOL m_bInited;

	CEffectDescManager m_EffectDescMgr[eEffect_Max];
	
	CYHHashTable<CEffect> m_EffectProcessTable;

	cPtrList m_DamageNumberList;
	
	DWORD m_CurNewEffectID;
	DWORD GetNewEffectID();

	void EndProcess(CEffect* pEffect);
	void ResetProcess(CEffect* pEffect);
	
	void AddDamageNumber(CDamageNumber* pNumber);
public:
	
//	MAKESINGLETON(CEffectManager);
	CEffect* GetEffect(HEFFPROC heff);

	CEffectManager();
	virtual ~CEffectManager();

	void Init();
	void Release();
	void RemoveAllEffect();

	void LoadIllusionMaterial();
	void* GetIllusionMaterial(DWORD MaterialNum);

	HEFFPROC StartEffectProcess(int EffectDescKnd,int EffectNum,EFFECTPARAM* pParam,DWORD Key,DWORD RefCount);

	HEFFPROC StartEffectProcess(int EffectNum,CObject* pEffectOperator,
		TARGETSET* pEffectTargetSetArray,int nEffectTargetNum, DWORD MainTarget,
		DWORD dwFlag = EFFECT_FLAG_NORMAL,VECTOR3* pAddPos = NULL);	

	HEFFPROC StartHeroEffectProcess(int EffectNum);

	void OnEffectTimeOut(HEFFPROC handle);
	BOOL ForcedEndEffect(HEFFPROC handle);

	void Process(DWORD CurTime);
	void Process(DWORD CurTime,HEFFPROC handle);
	BOOL SetDamage(HEFFPROC handle,TARGETSET* TargetSetArray,int MaxTargetSet,MAINTARGET* pMainTarget);
	
	void AddDamageNumber(DWORD Damage,CObject* pOperator,CObject* pTarget,WORD DamageKind,BOOL bCritical);
	void AddDamageNumberDodge(CObject* pTarget);
	
	DWORD GetEffectEndTime(HEFFPROC heff);
	void SetEffectEndFlag(HEFFPROC heff);
	
	DWORD GetOperatorAnimatioEndTime(int EffectNum,int EffectGenderKind,CEngineObject* pEngineObject);

	//////////////////////////////////////////////////////////////////////////
	// TargetList 利侩
	HEFFPROC StartEffectProcessWithTargetList(int EffectNum,CObject* pEffectOperator,
		CTargetList* pTList, MAINTARGET* pMainTarget,
		DWORD dwFlag = EFFECT_FLAG_NORMAL,VECTOR3* pAddPos = NULL);
	BOOL SetTargetArray(HEFFPROC handle,CTargetList* pTList,MAINTARGET* pMainTarget);

	HEFFPROC StartSkillMainTainEffect(int EffectNum,CObject* pOperator,DWORD dwFlag = EFFECT_FLAG_NORMAL,VECTOR3* pAddPos = NULL);

	void SetEndFlagAllEffect();
	
	void IncEffectRefCount(HEFFPROC heff);
};
EXTERNGLOBALTON(CEffectManager);
#endif // !defined(AFX_EFFECTMANAGER_H__C97B73EA_067D_41CA_A990_2459F04ED62B__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -