using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace pcd_g1
{
	public enum EventType
	{
		//sender = 相手, direction = 衝突した方向
		Collided,	//自分が相手にぶつかった場合 戻り値はイベントBeCollidedを発生させるか(通常はTrue)
		
		//sender = 相手, direction = 衝突された時の相手から見た方向
		BeCollided,	//自分が相手にぶつかられた場合

		//sender = 相手, direction = 0
		Touched,	//自分が相手を触った場合 戻り値はイベントBeTouchedを発生させるか(通常はTrue)
		BeTouched,	//自分が相手に触られた場合 

		EndMessage	//メッセージの表示が終わった。
	}

	public enum SignalType
	{
		SIGTERM = 1,
		SIGKILL = 2,		//倒す 
		SIGDAMAGE = 3,		//ダメージを与える
		SIGHEAL = 4,			//HP回復
		SIGUPSKILL = 5,
		SIGPUSH=6
	}

	interface IStageObject
	{
		int X { get; set; }
		int Y { get; set; }
		int Width { get; }
		int Height { get; }
		bool Visibility { get; }
		bool CanCrash { get; }
		CollideRange Range{ get; }

		/// <summary> アイテムの位置などを更新する。 </summary>
		/// <param name="vx">x方向に動くピクセル数</param>
		void Update(int keyStatus, out int vx, out int vy);

		/// <summary> アイテムを描画する。 </summary>
		void Draw(Graphics g, int width, int height);

		/// <summary>イベントプロシージャ</summary>
		bool EventProc(EventType type, IStageObject sender, CollideDirection direction);

		void SignalProc(SignalType type, int arg1, int arg2); 
	}


}
