
//=======================================================================
//@_^ȍ~̓G̖@w\֐WłB
//@̃t@Cinclude_functionŎ荞ނA
//@KvȕRsyĎgpĂB
//=======================================================================

//=======================================================================
//  摜ւ̃pX \Ⴄꍇ͗vύX
//-----------------------------------------------------------------------
let imgmagic = GetCurrentScriptDirectory~".\img\Circle_Hex_L.png";
//=======================================================================

//-----------------------------------------------------------------------
//  g@w [th10`th13]
//-----------------------------------------------------------------------
task MagicCircleEx(direct) {

	let magic = Obj_Create(OBJ_EFFECT);
	let alpha  = 240;
	let r      = 240;
	let g      = 120;
	let b      = 120;
	let anglez = 0;
	let scale1 = 0;
	let scale2 = 0;
	let scale3 = 0;

	LoadGraphic(imgmagic);

	ObjEffect_SetTexture(magic,imgmagic);
	ObjEffect_SetRenderState(magic,ALPHA);
	ObjEffect_SetPrimitiveType(magic,PRIMITIVE_TRIANGLESTRIP);
	ObjEffect_SetLayer(magic,1);
	ObjEffect_SetScale(magic,scale1,scale1);
	ObjEffect_CreateVertex(magic,4);
	ObjEffect_SetVertexXY(magic,0,-128,-128);
	ObjEffect_SetVertexXY(magic,1,-128, 128);
	ObjEffect_SetVertexXY(magic,2, 128,-128);
	ObjEffect_SetVertexXY(magic,3, 128, 128);
	ObjEffect_SetVertexUV(magic,0,  0,  0);
	ObjEffect_SetVertexUV(magic,1,  0,256);
	ObjEffect_SetVertexUV(magic,2,256,  0);
	ObjEffect_SetVertexUV(magic,3,256,256);
	ObjEffect_SetVertexColor(magic,0,alpha,r,g,b);
	ObjEffect_SetVertexColor(magic,1,alpha,r,g,b);
	ObjEffect_SetVertexColor(magic,2,alpha,r,g,b);
	ObjEffect_SetVertexColor(magic,3,alpha,r,g,b);

	loop(60) {
		scale2 += 90/60;
		scale3  = 0.90*sin(scale2);
		scale1  = 0.10*sin(scale2);
		anglez  = 360*sin(-scale2);

		Obj_SetPosition(magic,GetEnemyX,GetEnemyY);
		ObjEffect_SetScale(magic,scale3+scale1,scale3+scale1);
		ObjEffect_SetAngle(magic,0,0,anglez);
		if(direct) { yield; }
	}
	CreateCommonDataArea("circle");
	if(!direct) { anglez = GetCommonDataDefaultEx("circle","circleanglez",0); scale2 = GetCommonDataDefaultEx("circle","circlescale",0); }
	loop {
		anglez -= 360/60;
		scale2 += 360/120;
		scale1  = 0.10*sin(scale2);

		Obj_SetPosition(magic,GetEnemyX,GetEnemyY);
		ObjEffect_SetScale(magic,scale3+scale1,scale3+scale1);
		ObjEffect_SetAngle(magic,0,0,anglez);
		SetCommonDataEx("circle","circleanglez",anglez);
		SetCommonDataEx("circle","circlescale",scale2);
		yield;
	}
}

//-----------------------------------------------------------------------
//  g@w [th14]
//-----------------------------------------------------------------------
task MagicCircleEx2(direct) {

	let magic = Obj_Create(OBJ_EFFECT);
	let alpha  = 240;
	let r      = 240;
	let g      = 120;
	let b      = 120;
	let lean   = 27;
	let anglex = 0;
	let angley = 0;
	let anglez = 0;
	let scale1 = 0;
	let scale2 = 0;
	let scale3 = 0;

	LoadGraphic(imgmagic);

	ObjEffect_SetTexture(magic,imgmagic);
	ObjEffect_SetRenderState(magic,ALPHA);
	ObjEffect_SetPrimitiveType(magic,PRIMITIVE_TRIANGLESTRIP);
	ObjEffect_SetLayer(magic,1);
	ObjEffect_SetScale(magic,scale1,scale1);
	ObjEffect_CreateVertex(magic,4);
	ObjEffect_SetVertexXY(magic,0,-128,-128);
	ObjEffect_SetVertexXY(magic,1,-128, 128);
	ObjEffect_SetVertexXY(magic,2, 128,-128);
	ObjEffect_SetVertexXY(magic,3, 128, 128);
	ObjEffect_SetVertexUV(magic,0,  0,  0);
	ObjEffect_SetVertexUV(magic,1,  0,256);
	ObjEffect_SetVertexUV(magic,2,256,  0);
	ObjEffect_SetVertexUV(magic,3,256,256);
	ObjEffect_SetVertexColor(magic,0,alpha,r,g,b);
	ObjEffect_SetVertexColor(magic,1,alpha,r,g,b);
	ObjEffect_SetVertexColor(magic,2,alpha,r,g,b);
	ObjEffect_SetVertexColor(magic,3,alpha,r,g,b);

	loop(60) {
		scale2 += 90/60;
		scale3  = 0.90*sin(scale2);
		scale1  = 0.10*sin(scale2);
		anglez  = 360*sin(-scale2/2);
		anglex  = lean-lean*cos(anglez);
		angley  = lean-lean*sin(anglez);

		Obj_SetPosition(magic,GetEnemyX,GetEnemyY);
		ObjEffect_SetScale(magic,scale3+scale1,scale3+scale1);
		ObjEffect_SetAngle(magic,anglex,angley,anglez);
		if(direct) { yield; }
	}
	CreateCommonDataArea("circle");
	if(!direct) { anglez = GetCommonDataDefaultEx("circle","circleanglez",0); scale2 = GetCommonDataDefaultEx("circle","circlescale",0); }
	loop {
		anglez -= 90/150;
		anglex  = lean-lean*cos(anglez);
		angley  = lean-lean*sin(anglez);

		Obj_SetPosition(magic,GetEnemyX,GetEnemyY);
		ObjEffect_SetScale(magic,scale3+scale1,scale3+scale1);
		ObjEffect_SetAngle(magic,anglex,angley,anglez);
		SetCommonDataEx("circle","circleanglez",anglez);
		yield;
	}
}