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