#ifndef _G_ENEMY_
#define _G_ENEMY_

#include <hpllib/HPLLib.h>
#include "../player/GPlayer.h"

namespace EnemyType{
	enum{
		Normal,
		Heavy,
		Body,
		Kikai,
		Ramia,
		Shokushu,

		NakedNormal,

		MAX_NUMBER_OF_ENEMY_TYPE,
		
	};
};

class GEnemy: public HPLShootingObject{
private:
	/** 接触ダメージ量 */
	float power;
public:
	float getPower(){
		return power;
	}
	void setPower(float f){
		power = f;
	}

	GEnemy(int t);
	virtual ~GEnemy();
	
	/////////////////////////////////////////////////////
	//		通常処理
	/** */
	void collision(HPLMatrix<int>* matrix,
		std::map<int, HPLBlock*>* blockMap);

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

	void draw(HPLSDLImageManager* imageManager);




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

	void damage(float dmg, HPLShootingObject* damageSource);





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

	HPLSequence* getSequence();
	int getSequenceID();
	void changeState(int st);

	/////
	// 拘束する敵か？
	bool isHoldEnemy();
};

#endif
