www.pudn.com > GameEngine_src.rar > CMagicFactory.h


// CMagicFactory.h: interface for the CMagicFactory class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#ifndef CMagicFactory_h 
#define CMagicFactory_h 
 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
#include "CMagic.h" 
#include "CDynamicArray.h" 
#include "CPool.h" 
 
 
////////////////////////////////////////////////////////////////////// 
//魔法状态动画 
////////////////////////////////////////////////////////////////////// 
struct MSE_INFO 
{ 
	CPictureGroup msePG; 
	int		mseID; 
 
public: 
	MSE_INFO()  
	{ mseID = 0; } 
 
	bool operator == ( const MSE_INFO & m ) 
	{ return mseID == m.mseID; } 
}; 
 
 
////////////////////////////////////////////////////////////////////// 
//魔法工厂类,产生与管理魔法,魔法精灵,魔法状态,魔法动画 
////////////////////////////////////////////////////////////////////// 
class CMagicFactory   
{ 
 
public: 
	CMagicFactory(); 
	~CMagicFactory(); 
 
	bool Init(); 
	void Free(); 
 
	void OnFreeLvl(); 
	void OnLoadSI( int magicID ); 
	void OnLoadLvl(); 
	void OnInitLvl(); 
	 
	CAliveSprite *GetMagician() { return m_pMagician; } 
	CAliveSprite *GetTarget() { return m_pTarget; } 
	void SetMagicInfo( int index, int value ); 
 
	void AddTargetMS( int effectIndex, int time ); 
	void AddTargetMSE( int mseIndex, int time ); 
 
	CMagic * FindMagic( int id );				//根据ID得到相应魔法的指针 
 
	void SetMagician( CAliveSprite *p ) { m_pMagician = p; } 
	void SetTarget( CAliveSprite *p ) { m_pTarget = p; } 
	void SetCurMagic( CMagic *magic ) { m_pCurMagic = magic; } 
	void SetSpellPoint( const POINT &p ) { m_SpellPoint = p; } 
 
	void CreateMagicSprite( int type, int life );	//创建魔法精灵 
	void DeleteMagicSprite( CMagicSprite *p ); 
 
	int GetMagicDamage() { return m_MagicDamage; } 
	void SetMagicDamage( int v ) { m_MagicDamage = v; } 
 
	void MoveHero(); 
 
private: 
	CDynamicArray		m_MagicArray;		//魔法对象数组 
	CDynamicArray		m_MSEInfoArray;		//魔法状态动画数组 
	CDynamicArray			m_MagicIDArray;		//要载入的魔法ID(用于载入关卡时) 
 
	CPool			m_MagicSpritePool;	//魔法精灵对象池 
 
	CMagic		   *m_pCurMagic;		//当前魔法 
	CAliveSprite   *m_pMagician;		//施法者指针 
	CAliveSprite   *m_pTarget;			//攻击目标指针 
	POINT			m_SpellPoint;		//魔法精灵产生位置 
 
	union { 
		struct { 
			int	m_EffectValue;				//作用值 
			int	m_EffectIndex;				//作用项 
			int	m_EffectTime;				//作用时间 
			int	m_MagicDamage;				//魔法伤害值 
		}; 
		int m_MagicInfo[4]; 
	}; 
}; 
 
#endif