//G̈ړ̊_ƂȂXNvgB


//Mover02F]iݑ
//GetArgumentID,MoveSpeed,MoveAngle擾̂œnƁB
//MoveSequencenƂŁCړƒ~ݒł
script_enemy_main
{

let m_MoverID;
let m_IgnoreTimeTick;	//TimeTick𖳎ē
let m_MoveSpeed;
let m_MoveAngle;
let m_MoveSequence = [];		//ړ̃V[NGX(frame, speed, angle)łPZbg


@Initialize
{
	local{
		let args = GetArgument();
		m_MoverID = args[0];
		m_IgnoreTimeTick = (args[1] != 0);
		m_MoveSpeed = args[2];
		m_MoveAngle = args[3];
		if(length(args) > 4)
		{
			let seq = args[4..length(args)];
			if(length(seq) % 3 ==0)
			{
				ascent(i in 0..trunc(length(seq)/3)){
					m_MoveSequence = m_MoveSequence ~ [ [seq[i * 3],seq[i * 3+1],seq[i * 3+2]] ];
				}
			}
		}
	}
	SetLife(100000);

	main_MainRoutine();
}

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

}

@Finalize{}

task main_MainRoutine()
{

	TestStageClear();
	SetSequence();

	loop{
		
		yield;
		while(!m_IgnoreTimeTick && !TestTick()){yield;}
		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());
	}

	//V[NGXɏ]삷
	task SetSequence()
	{
		if(length(m_MoveSequence) == 0){ return; }
		ascent(i in 0..length(m_MoveSequence))
		{
			loop(m_MoveSequence[i][0]){yield;}
			m_MoveSpeed = m_MoveSequence[i][1];
			m_MoveAngle = m_MoveSequence[i][2];
		}

	}//end task

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

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

		alternative(status)
		case(_MOVESTATUS_STOP) { return; }
		case(_MOVESTATUS_NORMAL) {}

		local{
			let dx = m_MoveSpeed * cos(m_MoveAngle);
			let dy = m_MoveSpeed * sin(m_MoveAngle);

			SetX(GetX() + dx);
			SetY(GetY() + dy);
		}

	}

	//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

