//G̈ړ̊_ƂȂXNvgB

//Mover01FGL[ɓBYɓXς
//GetArgumentID,MoveX,MoveY擾̂œnƁB
script_enemy_main
{

let m_MoverID;
let m_IgnoreTimeTick;
let m_MoveX;
let m_MoveY;

@Initialize
{
	local{
		let args = GetArgument();
		m_MoverID = args[0];
		m_IgnoreTimeTick = (args[1] != 0);
		m_MoveX = args[2];
		m_MoveY = args[3];
	}
	SetLife(100000);

	main_MainRoutine();
}

@MainLoop
{
	AddLife(100000 - GetLife() );
	yield;
}
@DrawLoop
{

}

@Finalize{}

task main_MainRoutine()
{

	let moveVertical = false;

	TestStageClear();

	loop{
		
		yield;
		while(!m_IgnoreTimeTick && !TestTick()){yield;}
		GetCallback();
		ClearCallBack();
		Move();
		SetPosition();
	}

	//\t[
	function TestTick()
	{
		return GetCommonDataDefaultEx("INVADER","EnemyMover.OnTick", false);
	}

	//ݒn̓o^
	function SetPosition()
	{
		REMY_CommonDataArrayEx_Set("INVADER", "EnemyMovers.PositionX", m_MoverID, GetX());
		REMY_CommonDataArrayEx_Set("INVADER", "EnemyMovers.PositionY", m_MoverID, GetY());
	}

	//ړ
	function Move()
	{
		if(GetCommonDataDefaultEx("INVADER","EnemyMover.StopAll", false)){ return; }

		let status = REMY_CommonDataArrayEx_Get("INVADER", "EnemyMovers.MoveStatus", m_MoverID);

		//cړ
		alternative(status)
		case(_MOVESTATUS_VERTICAL) { moveVertical = true; }
		case(_MOVESTATUS_STOP) { return; }
		case(_MOVESTATUS_NORMAL) {}

		local{
			if(moveVertical){ SetY(GetY() + m_MoveY); moveVertical = false;}
			else { SetX(GetX() + m_MoveX); }
		}

	}

	function GetCallback()
	{
		//G̃R[obNɂ܂Ԃ`FbN
		let callback = REMY_CommonDataArrayEx_Get("INVADER","EnemyMovers.CallBack", m_MoverID);
		if((callback == _ENEMYMOVERCALL_LEFT_BORDER && m_MoveX < 0) || (callback == _ENEMYMOVERCALL_RIGHT_BORDER && m_MoveX > 0))
		{
			moveVertical = true;
			m_MoveX *= -1;
		}
	}

	function ClearCallBack()
	{
		 REMY_CommonDataArrayEx_Set("INVADER", "EnemyMovers.CallBack", m_MoverID, _ENEMYMOVERCALL_NONE);
	}

	//Xe[WNA
	task TestStageClear()
	{
		loop
		{
			loop(10){yield;}
			if( GetCommonDataDefaultEx("INVADER", "Stage.Status", -1) == _STAGE_CLEAR )
			{
				break;
			}
		}
	 	REMY_CommonDataArrayEx_Set("INVADER", "EnemyMovers.Status", m_MoverID, _ENEMY_DEAD);
		VanishEnemy();
	}

}//end task

//`
#include_function".\script_stagedata_define.txt"

//REMYǂݍ
#include_function".\lib_REMY\include_tool.txt"

}//end script

