//C


script_enemy_main{

//{`̓Ǎ
#include_function".\enemy_define.txt"

let baseX;
let baseY;
let interval;
let id;
let se_Missile;
let appeared = true;
@Initialize{

	se_Missile = GetCommonDataEx("INVADER", "System.Directory.System") ~ "se\byoro03.wav";

	SetScore(0);
	SetLife(const_EnemyLifeZero + 100);
	SetDamageRate(00, 00);
	SetTexture(img_Boss2);

	func_Initialize();

	id = g_Param03;
	interval = 40 + (id % 3 * id % 5);
	baseX = g_Param01;
	baseY = g_Param02;
	SetX(baseX);
	SetY(baseY);

	main_TestBeamCollisionVacula();
	main_TestDefeat();

	main_MainRoutine();
}


@MainLoop{

	SetCollisionA(GetX(), GetY(), 15);
	yield;
}

@DrawLoop{

	if(!appeared){return;}
	let rect = [0, 0, 32, 32];
	SetGraphicRect(rect[0], rect[1], rect[2], rect[3]);
	SetAlpha(255);
	SetRenderState(ALPHA);

	DrawGraphic(GetX(), GetY());
}


@Finalize{

}


task main_MainRoutine(){
	loop(10){yield;}
	Mover();
	Shooter();
	Revival();
}

task Revival()
{
	let revival_counter = 120;
	while(!appeared){ yield; }
	
	loop
	{
		if(!appeared){
			revival_counter --;
			if(revival_counter == 0)
			{
				appeared = true;
				revival_counter = 120;
			}
		}
		yield;
	}

}

task Mover()
{
	let counter = 0;
	let dx = [-1, 1][id % 2];

	ascent(i in 0..120)
	{
		SetY(baseY + i);
		func_SetPosition();

		yield;
		wait_WaitWhileFreeze();
	}

	loop(30){ yield; }

	loop{
		while(!appeared){
			SetX(-50);
			func_SetPosition();
			yield;
		}

		//counter ++;
		//let x = baseX + 10 * sin(((id * 7) % 30) * (counter % 30) * 4);
		if((GetX() < GetClipMinX() + 10 && dx < 0)||(GetX() > GetClipMaxX() - 10 && dx > 0) ){dx *= -1;}

		SetX(GetX() + dx);
		func_SetPosition();

		yield;
		wait_WaitWhileFreeze();
	}

}//end task


task Shooter()
{
	let counter = 0;

	loop(240){yield;}

	loop{
		while(!appeared){ yield; }

		counter ++;
		let speed = 1.4 * (1 + 0.2 * ((interval + counter) % 4));
		func_CreateEnemyShot01(GetX(), GetY() + 14, speed, 90, _SHOT04);

		loop(interval){
			yield;
			wait_WaitWhileFreeze();
		}
	}
}

//r[蔻eXg_Vacula
task main_TestBeamCollisionVacula()
{
	loop(10){yield;}
	loop{

		if(REMY_CommonDataArrayEx_Get("INVADER", "Enemies.BeamHit", g_EnemyID) > 0)
		{
			PlaySE(se_Missile);
			appeared = false;
			//main_Shot_Counter(1.6, 5, _SHOT05);
			REMY_CommonDataArrayEx_Set("INVADER", "Enemies.BeamHit", g_EnemyID, 0);
		}
		yield;
	}

}//end function

task main_Vanish()
{
	func_DeleteBBShot();
	VanishEnemy();
}//end task


#include_function".\enemy_basic.txt"
#include_function".\enemy_move_routine.txt"
#include_function".\enemy_shot.txt"
#include_function".\enemy_shot_func.txt"
#include_function".\enemy_shot_routine.txt"

#include_function"..\lib_REMY\include_effect.txt"
#include_function"..\lib_REMY\include_tool.txt"

}//end script