//GB
//{XS

script_enemy_main{

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

let appear_alpha = 0;
let appear = false;
@Initialize{


	SetScore(0);
	SetLife(const_EnemyLifeZero + 1000);
	SetCommonDataEx("INVADER","EnemyBoss.Life",1000);
	SetDamageRate(00, 00);
	SetTexture(img_Boss1);
	SetEnemyMarker(true);

	func_Initialize();
	func_Boss_Initialize();

	main_TestBeamCollisionBoss;
	main_TestDefeat();
	main_Boss_EffectShield();
	main_Boss_EffectLife(1000, 100);

	//main_TestDeadLine();
	//main_FadeOutVanish();

	main_MainRoutine();
}


@MainLoop{

	SetCollisionA(GetX(), GetY(), 20);
	SetCollisionB(GetX(), GetY(), 18);
	yield;
}

let animation_frame = 0;
@DrawLoop{

	if(!appear){ return; }
	let rect = func_GetAnimationRect(g_GraType, 0);
	SetGraphicRect(rect[0], rect[1], rect[2], rect[3]);
	SetAlpha(appear_alpha);
	SetRenderState(ALPHA);

	//func_GetColor();
	DrawGraphic(GetX(), GetY());

}


@Finalize{

	//func_Finalize();
	SetCommonDataEx("INVADER","EnemyBoss.Life",000);

}

task main_MainRoutine(){

	m_InvincibleTime = 400;

	loop(400){ yield; }
	appear = true;
	apper_alpha_change();
	main_MoveRoutine();
	main_ShotRoutine();
	main_Boss_LifeManager();
	SetDamageRate(10, 00);

	//--------
	task apper_alpha_change()
	{
		ascent(i in 0..81)
		{
			appear_alpha = 255 * i/80;
			yield;
		}
	}

}//end task

task main_MoveRoutine()
{
	let x = [0, 0, 0, 10, -10, 20, -20, 10, -10, 0, 0, 0];
	let life = ceil((GetLife() - const_EnemyLifeZero)/ 100);

	SetMovePosition03(GetCenterX(), 150, 10, 8);
	pos();

	loop
	{
		yield;
		func_SetPosition();
	}
	
	task pos{
		
		loop{
			if(ceil((GetLife() - const_EnemyLifeZero)/ 100) != life)
			{
				life = ceil((GetLife() - const_EnemyLifeZero)/ 100);
				SetMovePosition03(GetCenterX() + x[life], 150, 80, 8);
			}
			loop(10){ yield; }
		}
	}
}//


task main_ShotRoutine()
{
	let shotnum = 18;

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

	Blast();

	task Blast()
	{
		let base_angle = GetAngleToPlayer() + 90;
		loop
		{
			block_WaitTimerTick(1);
			shot();
		}

		task shot()
		{
			let shot_num = 20;
			ascent(i in 0..shot_num){
				let angle = base_angle + (180 * (i/shot_num));
				let speed = 3.0 -  2.2 * (absolute((shot_num / 2 - i) * 2 / shot_num) ^ 1.5);
				func_CreateEnemyShot01(GetX(), GetY(), speed, angle, _SHOT05);
				func_CreateEnemyShot01(GetX(), GetY(), speed, angle+180, _SHOT05);
			}
			base_angle += 13;
		}

	}


}//

task main_Vanish()
{
	g_Alive = false;

	SetCommonDataEx("INVADER","ScoreBonus.LastEnemyDistance",  500);

	PlaySE(se_BossDefeat);
	VanishEnemy();

}//end task


#include_function".\enemy_basic.txt"
#include_function".\enemy_bossbasic.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



