//
//x,y:W frame:o dScale:g嗦 r,g,b:F
task ExplosionA(let x, let y, let frame, let dScale, let r, let g, let b){
	let path = GetCurrentScriptDirectory() ~ "../img/Default_Effect.png";
	let obj = ObjPrim_Create(OBJ_SPRITE_2D);
	ObjPrim_SetTexture(obj, path);
	Obj_SetRenderPriority(obj, 0.65);
	ObjRender_SetBlendType(obj, BLEND_ADD_RGB);
	ObjSprite2D_SetSourceRect(obj, 1, 1, 63, 63);
	ObjSprite2D_SetDestCenter(obj);
	ObjRender_SetPosition(obj, x, y, 0);

	let scale = 0;
	let dR = r / frame;
	let dG = g / frame;
	let dB = b / frame;
	loop(frame){
		ObjRender_SetColor(obj, r, g, b);
		ObjRender_SetScaleXYZ(obj, scale, scale, 1);

		scale += dScale;
		r -= dR;
		g -= dG;
		b -= dB;
		yield;
	}
	Obj_Delete(obj);
}

//SSɊgUĂ(32frame)
//x,y:W maxSpd:gUő呬x clr:e̎
task ExplosionB(let x, let y, let maxSpd, let clr){
	let ang;
	let way = 16;
	let shot;

	loop(3){
		ang = rand(0,360);
		loop(way){
			shot = CreateShotA1(x, y, rand(0.5, maxSpd), ang, clr, 0);
			ObjShot_FadeDelete(shot);
			ang += (360/way);
		}
		yield;
	}
}

//SɌĎkĂ(ExplosionA̋t)
//x,y:W frame:o dScale:k r,g,b:F
task ConcentrationA(let x, let y, let frame, let dScale, let r, let g, let b){
	let path = GetCurrentScriptDirectory() ~ "../img/Default_Effect.png";
	let obj = ObjPrim_Create(OBJ_SPRITE_2D);
	ObjPrim_SetTexture(obj, path);
	Obj_SetRenderPriority(obj, 0.65);
	ObjRender_SetBlendType(obj, BLEND_ADD_RGB);
	ObjSprite2D_SetSourceRect(obj, 1, 1, 63, 63);
	ObjSprite2D_SetDestCenter(obj);
	ObjRender_SetPosition(obj, x, y, 0);

	let scale = frame * dScale;
	let dR = r / frame;
	let dG = g / frame;
	let dB = b / frame;
	let nR = 0;
	let nG = 0;
	let nB = 0;
	loop(frame){
		ObjRender_SetColor(obj, nR, nG, nB);
		ObjRender_SetScaleXYZ(obj, scale, scale, 1);

		scale -= dScale;
		nR += dR;
		nG += dG;
		nB += dB;
		yield;
	}
	Obj_Delete(obj);
}

//̃GtFNgSɌďW܂Ă
//x,y:W maxLen:kő勗 clr:e̎ frame:t[ addFlg:ZeȂ1
task ConcentrationB_Alpha(let x, let y, let maxLen, let clr, let frame, let addFlg){
	let ang;
	let way = 16;
	let shot;
	let len;
	let spd;
	
	loop(3){
		ang = rand(0,360);
		loop(way){
			len = rand(32,maxLen);
			spd = len / (frame+5);
			shot = CreateShotA1(x+len*cos(ang), y+len*sin(ang), spd, ang+180, clr, 0);
			if(addFlg == 1){
				ObjShot_FadeDeleteAtFrameAdd(shot,frame);
			}else{
				ObjShot_FadeDeleteAtFrame(shot,frame);
			}
			ang += (360/way);
		}
		yield;
	}
}

//ƏĂ
//id:eID frameFt[
task ObjShot_FadeDeleteAtFrame(let id, let frame){
	let alpha = 255;
	let dAlpha = alpha / frame;
	
	ObjShot_SetIntersectionEnable(id,false);
	loop(frame){
		ObjRender_SetAlpha(id,alpha);
		yield;
		alpha -= dAlpha;
	}
	Obj_Delete(id);
}

task ObjShot_FadeDeleteAtFrameAdd(let id, let frame){
	let rgb = 255;
	let dRGB = rgb/ frame;
	
	ObjShot_SetIntersectionEnable(id,false);
	loop(frame){
		ObjRender_SetColor(id,rgb,rgb,rgb);
		yield;
		rgb -= dRGB;
	}
	Obj_Delete(id);
}

task ReverseEraseEffect(let x,let y,let r,let g,let b,let frame,let sca){
	let yoko = 7;
	let path = GetCurrentScriptDirectory() ~ "../img/bulletbreak_01_add.png";
	let obj = ObjPrim_Create(OBJ_SPRITE_2D);
	ObjPrim_SetTexture(obj, path);
	Obj_SetRenderPriority(obj, 0.65);
	ObjRender_SetBlendType(obj, BLEND_ADD_RGB);
	ObjSprite2D_SetSourceRect(obj, 32*yoko-1, 0, 32*(yoko+1)-1, 31);
	ObjSprite2D_SetDestCenter(obj);
	ObjRender_SetPosition(obj, x, y, 0);
	ObjRender_SetColor(obj, r, g, b);
	ObjRender_SetScaleXYZ(obj, sca, sca, sca);
	
	let waitTime = truncate(frame / 8);
	loop(7){
		ObjSprite2D_SetSourceRect(obj, 32*yoko-1, 0, 32*(yoko+1)-1, 31);
		loop(waitTime){	yield;	};
		yoko--;
	}
	Obj_Delete(obj);
}

task EraseEffect(let x,let y,let r,let g,let b,let frame,let sca){
	let yoko = 0;
	let path = GetCurrentScriptDirectory() ~ "../img/bulletbreak_01_add.png";
	let obj = ObjPrim_Create(OBJ_SPRITE_2D);
	ObjPrim_SetTexture(obj, path);
	Obj_SetRenderPriority(obj, 0.65);
	ObjRender_SetBlendType(obj, BLEND_ADD_RGB);
	ObjSprite2D_SetSourceRect(obj, 32*yoko-1, 0, 32*(yoko+1)-1, 31);
	ObjSprite2D_SetDestCenter(obj);
	ObjRender_SetPosition(obj, x, y, 0);
	ObjRender_SetColor(obj, r, g, b);
	ObjRender_SetScaleXYZ(obj, sca, sca, sca);
	
	let waitTime = truncate(frame / 8);
	loop(7){
		ObjSprite2D_SetSourceRect(obj, 32*yoko-1, 0, 32*(yoko+1)-1, 31);
		loop(waitTime){	yield;	};
		yoko++;
	}
	Obj_Delete(obj);
}
