/*{XXNvgGGɂĎgp郍[JȊ֐Cu*/

/*	^ϐ	*/
let cx		= GetCenterX;
let cy		= GetCenterY;
let minx	= GetClipMinX;
let miny	= GetClipMinY;
let maxx	= GetClipMaxX;
let maxy	= GetClipMaxY;
let csd		= GetCurrentScriptDirectory;
/*	܂	*/


/*@t[֐@@*/
function wait(w)//w肵lt[ҋ@
{
	loop(w)
	{
		yield;
	}
}
/*@t[֐@܂Ł@*/

/*@lԂ֐@@*/
function GetAngleToAB(x1,y1,x2,y2)//̍W(x1,y1)̍W(x2,y2)܂ł̊px߂B
{
	return atan2(y2-y1,x2-x1);
}
function GetLengthToAB(x1,y1,x2,y2)//̍W_P`̍W_Q܂ł̋߂
{
	return ((x2-x1)^2+(y2-y1)^2)^(1/2);
}
function GetDouX(x,r,deg)//Cӂ̍W甼ar̉~Aw肳ꂽpxɒɉ~ƌwWԂ֐
{
	return x+r*cos(deg);
}
function GetDouY(y,r,deg)//Cӂ̍W甼ar̉~Aw肳ꂽpxɒɉ~ƌxWԂ֐
{
	return y+r*sin(deg);
}
/*@lԂ֐@܂Ł@*/

/*@`֌W̊֐@@*/
function GraphicDefault//OtBbN̐ݒɖ߂֐
{
	SetGraphicScale(1,1);
	SetGraphicAngle(0,0,0);
	SetAlpha(255);
	SetColor(255,255,255);
	SetRenderState(ALPHA);
}
let TEXT_X=0;	let TEXT_Y=0;//DrawMusicpOϐ
function DrawMusic(name)//ėp@Ȗ`֐  Xe[WȂ@DrawTopObjectŎgp𐄏
{
	SetFontColor(200,200,200,100,100,100);
	TEXT_X+=5;
	if(TEXT_X<=maxx-64)
	{
		DrawText(""~name,maxx-TEXT_X,maxy-32,17,255);
	}
	else if(TEXT_X<=maxx+300)
	{
		DrawText(""~name,maxx-(maxx-64),maxy-32,17,255);
	}
	else
	{
		if(TEXT_Y<=32)
		{
			DrawText(""~name,maxx-(maxx-64),maxy-32+TEXT_Y,17,255);
			TEXT_Y+=0.5;
		}
	}
}
let COUNT_B=0;//DrawBackGraphicpϐ
function DrawBackGraphic(name,x1,y1,x2,y2,rollx,rolly)//wi摜\鎩XN[Ή֐
{
	SetGraphicRect(x1,y1,x2,y2);
	SetTexture(name);
	let by=cy-y2+(COUNT_B*rolly)%y2;
	while(by<=cy+y2)
	{
		let bx=cx-x2+(COUNT_B*rollx)%x2;
		while(bx<=cx+x2)
		{
			DrawGraphic(bx,by);
			bx+=x2;
		}
		by+=y2;
	}
	COUNT_B++;
}
/*̊֐HAL900̂؂ l̂ƂŌJĂ镨Ŋ֐ł*/
let FADE_TIME=0;//t[JEg擾DrawCrossFadeText֐pOϐ
let FADE_TEXTX=0;//`ʒuXChDrawCrossFadeText֐pOϐ
function DrawCrossFadeText(name1,name2,textx1,texty1,textx2,texty2)//Cӂ̕PFŕ\ẢɃNXtF[h̃ftHgJ[ŕQ\֐
{

/*	Dݐݒ		*/
	let FontSize1=17;//	P̕TCY		͂PV
	let FontSize2=17;//	Q̕TCY		͂PV
	let FadeStart=30;//	Q̕`̊Jn	͂ROt[
	let FadeIn=60;//	tF[hCɂ鎞	͂UOt[
	let Draw=100;//		̉Ԃ̕`掞		͂PQOt[
	let FadeOut=60;//	tF[hAEgɂ鎞	͂UOt[
	let Shift=8;//		XCh		͂W@RƐȓۏႵ܂
	let DrawEnd=0;//	SĂ̕`I鎞	͎itF[hAEgIƓɑSď܂j
/*	Dݐݒ肱܂	*/

	if(DrawEnd<=FadeStart+FadeIn+Draw+FadeOut)//DrawEnd̍vȂꍇ̏
	{
		DrawEnd=FadeStart+FadeIn+Draw+FadeOut;
	}
	if(FADE_TIME<DrawEnd)//`掞Ԓ
	{
		SetFontColor(240,240,0,255,255,255);//Fۂɐݒ
		DrawText(name1,textx1,texty1,FontSize1,255);
		SetFontColor(255,255,255,255,255,255);//Fɐݒ肷
		if(FADE_TIME<FadeStart)
		{
			;
		}
		else if(FADE_TIME<FadeStart+FadeIn)//tF[hC̏
		{
			FADE_TEXTX=(FadeStart+FadeIn)*Shift-FADE_TIME*Shift;
			DrawText(name2,textx2+FADE_TEXTX,texty2,FontSize2,128);//ŕ`@EXCh
			DrawText(name2,textx2-FADE_TEXTX,texty2,FontSize2,128);//ŕ`@XCh
		}
		else if(FADE_TIME<FadeStart+FadeIn+Draw)//̉@2b
		{
			DrawText(name2,textx2,texty2,FontSize2,255);//̉`
		}
		else if(FADE_TIME<FadeStart+FadeIn+Draw+FadeOut)//tF[hAEg̏@2b
		{
			FADE_TEXTX=(FADE_TIME-FadeStart-FadeIn-Draw)*Shift;//l0@Pt[ɂS@300͍̂ŏ0ɂ邽
			DrawText(name2,textx2+FADE_TEXTX,texty2,FontSize2,128);//ŕ`@EXCh
			DrawText(name2,textx2-FADE_TEXTX,texty2,FontSize2,128);//ŕ`@XCh
		}
	}
	FADE_TIME++;//JEg𑝂₷
}
function ReverseText(text)//w肳ꂽtɂĕԂ֐
{//textɂ͕w
	let w;
	let size=length(text)-1;
	ascent(i in 0..size/2)
	{
		w=text[i];
		text[i]=text[size-i];
		text[size-i]=w;
	}
	return text;
}
function DrawTextEx(text,x,y,size,alpha,type)//DrawTextɒǉIvVwł^Cv
{//typeɂ͕ŐFXȃ^Cvwł@DrawTextƓ
	let long=length(text);//߂
	let revtext=ReverseText(text);//ti[
	if(type=="REVERSE")//o[X@\w肵Ă邩
	{//o[X@\w肵Ă
		DrawText(revtext,x,y,size,alpha);
	}
	else
	{
		ascent(line in 0..long)
		{
			if(type=="COLUMNAR")//cw肩
			{
				DrawText(text[line],x,y+size*line,size,alpha);
			}
			else if(type=="REVERSE_COLUMNAR")//tcw肩
			{
				DrawText(revtext[line],x,y+size*line,size,alpha);
			}
			else if(type=="UP_LEFT")//㏑w肩
			{
				DrawText(text[line],x-size*line,y-size*line,size,alpha);
			}
			else if(type=="UP_RIGHT")//E㏑w肩
			{
				DrawText(text[line],x+size*line,y-size*line,size,alpha);
			}
			else if(type=="DOWN_LEFT")//w肩
			{
				DrawText(text[line],x-size*line,y+size*line,size,alpha);
			}
			else if(type=="DOWN_RIGHT")//Ew肩
			{
				DrawText(text[line],x+size*line,y+size*line,size,alpha);
			}
			else if(type=="REVERSE_UP_LEFT")//㏑w肩
			{
				DrawText(revtext[line],x-size*line,y-size*line,size,alpha);
			}
			else if(type=="REVERSE_UP_RIGHT")//E㏑w肩
			{
				DrawText(revtext[line],x+size*line,y-size*line,size,alpha);
			}
			else if(type=="REVERSE_DOWN_LEFT")//w肩
			{
				DrawText(revtext[line],x-size*line,y+size*line,size,alpha);
			}
			else if(type=="REVERSE_DOWN_RIGHT")//Ew肩
			{
				DrawText(revtext[line],x+size*line,y+size*line,size,alpha);
			}
		}
	}
}
/*@`֌W̊֐@܂Ł@*/

/*@Vbgn̊֐@@*/
task CreateReflectShot01(x,y,speed,angle,graphic,delay,ref_box)//ȈՓIɂP񂾂˂e
{//ref_box̂Svf1 0zw肷@Ȃevf͉摜Z`Ɠ
	if(length(ref_box)!=4)
	{
		RaiseError("Vɂ͂Svf̐l^zw肵Ă","CreateReflectShot01錾G[");
	}
	let obj=Obj_Create(OBJ_SHOT);
	Obj_SetPosition(obj,x,y);
	Obj_SetSpeed(obj,speed);
	Obj_SetAngle(obj,angle);
	ObjShot_SetGraphic(obj,graphic);
	ObjShot_SetDelay(obj,delay);
	while(Obj_BeDeleted(obj)==false)
	{
		speed=Obj_GetSpeed(obj);
		angle=Obj_GetAngle(obj);
		if(ref_box[0]==1 && Obj_GetX(obj)<=minx)//
		{
			CreateShot01(minx+(minx-Obj_GetX(obj)),Obj_GetY(obj),speed,180-angle,graphic,0);
			Obj_Delete(obj);
		}
		if(ref_box[1]==1 && Obj_GetY(obj)<=miny)//
		{
			CreateShot01(Obj_GetX(obj),miny+(miny-Obj_GetY(obj)),speed,0-angle,graphic,0);
			Obj_Delete(obj);
		}
		if(ref_box[2]==1 && Obj_GetX(obj)>=maxx)//E
		{
			CreateShot01(maxx-(Obj_GetX(obj)-maxx),Obj_GetY(obj),speed,180-angle,graphic,0);
			Obj_Delete(obj);
		}
		if(ref_box[3]==1 && Obj_GetY(obj)>=maxy)//
		{
			CreateShot01(Obj_GetX(obj),maxy-(Obj_GetY(obj)-maxy),speed,0-angle,graphic,0);
			Obj_Delete(obj);
		}
		yield;
	}
}
task CreateReflectShot02(x,y,speed,angle,graphic,delay,ref_box)//ȈՓIɔCӂ̉񐔂w肳ꂽǂŔ˂e𔭎
{//ref_boxɂ͊eǂł̔ˉ񐔂Lq@ȊO01Ɠ
	if(length(ref_box)!=4)
	{
		RaiseError("Vɂ͂Svf̐l^zw肵Ă","CreateReflectShot02錾G[");
	}
	let left=ref_box[0];
	let top=ref_box[1];
	let right=ref_box[2];
	let down=ref_box[3];
	let obj=Obj_Create(OBJ_SHOT);
	Obj_SetPosition(obj,x,y);
	Obj_SetSpeed(obj,speed);
	Obj_SetAngle(obj,angle);
	ObjShot_SetGraphic(obj,graphic);
	ObjShot_SetDelay(obj,delay);
	while(Obj_BeDeleted(obj)==false)
	{
		speed=Obj_GetSpeed(obj);
		angle=Obj_GetAngle(obj);
		if(right>0 && Obj_GetX(obj)>=maxx)//E
		{
			if(right==1)
			{
				CreateShot01(maxx-(Obj_GetX(obj)-maxx),Obj_GetY(obj),speed,180-angle,graphic,0);
				Obj_Delete(obj);
			}
			else
			{
				Obj_SetAngle(obj,180-angle);
				Obj_SetX(obj,maxx-(Obj_GetX(obj)-maxx));
			}
			right--;
		}
		if(down>0 && Obj_GetY(obj)>=maxy)//
		{
			if(down==1)
			{
				CreateShot01(Obj_GetX(obj),maxy-(Obj_GetY(obj)-maxy),speed,0-angle,graphic,0);
				Obj_Delete(obj);
			}
			else
			{
				Obj_SetAngle(obj,0-angle);
				Obj_SetY(obj,maxy-(Obj_GetY(obj)-maxy));
			}
			down--;
		}
		if(left>0 && Obj_GetX(obj)<=minx)//
		{
			if(left==1)
			{
				CreateShot01(minx+(minx-Obj_GetX(obj)),Obj_GetY(obj),speed,180-angle,graphic,0);
				Obj_Delete(obj);
			}
			else
			{
				Obj_SetAngle(obj,180-angle);
				Obj_SetX(obj,minx+(minx-Obj_GetX(obj)));
			}
			left--;
		}
		if(top>0 && Obj_GetY(obj)<=miny)//
		{
			if(top==1)
			{
				CreateShot01(Obj_GetX(obj),miny+(miny-Obj_GetY(obj)),speed,0-angle,graphic,0);
				Obj_Delete(obj);
			}
			else
			{
				Obj_SetAngle(obj,0-angle);
				Obj_SetY(obj,miny+(miny-Obj_GetY(obj)));
			}
			top--;
		}
		yield;
	}
}
function CreateRingShot01(x,y,r,deg,speed,angle,color,delay)//Cӂ̍Ww肳ꂽpxdeg̒ȑꏊɒezuA߂ꂽxƊpxŔ˂֐
{
	CreateShot01(GetDouX(x,r,deg),GetDouY(y,r,deg),speed,angle,color,delay);
}
/*@Vbg`̊֐@܂Ł@*/
