#ifndef _G_EFFECT_
#define _G_EFFECT_

#include <hpllib/object/HPLShootingObject.h>
#include <hpllib/math/HPLMatrix.h>
#include <hpllib/game/block/HPLBlock.h>

#ifdef _DXLIB
#else
#include <hpllib/sdl/HPLSDLImageManager.h>
#endif

class GEffect : public HPLShootingObject {
public:
	int			m_nParentForceID;				//! 作成者のForceID
	int			m_nCreateEnemyType;				//! 作成する敵のタイプ
	bool		m_bIsHitToBlock;				//! ブロックにヒットする
public:
	GEffect(int t);
	virtual ~GEffect();

	// オペレーション
public:
	/** */
	//void collision(HPLMatrix<int>* matrix,
	//	std::map<int, HPLBlock*>* blockMap);

	/**
		アルゴリズム
	*/
	void algorithm();

#ifdef _DXLIB
	void draw();
#else
	void draw(HPLSDLImageManager* imageManager);
#endif



	/////////////////////////////////////////////////////
	/////////////////////////////////////////////////////
	void die(HPLShootingObject* damageSource);

	void damage(float dmg, HPLShootingObject* damageSource);





	/////////////////////////////////////////////////////
	/////////////////////////////////////////////////////
	//	他のオブジェクトとの関係変化
	/**
		接触時の行動(攻撃)
		敵のattackRect(デフォルトはhitRectと同じ)と
		プレイヤーのhitRectが接触した場合の行動
	*/
//	void attackToPlayer(TTPlayer* player);
	HPLSequence* getSequence();

	void changeState(int nState ) {
		HPLShootingObject::changeStateCommon( this,  nState );

	}
	int getSequenceID( ) {
		return HPLShootingObject::getSequenceIDCommon( this );
	}
};
#endif
