//-----------------------
//ACe
//-----------------------



//ACeݒ̃Zbg------------------------
function func_Item_Initialize()
{
	func_ObjItem_Reset();

}//end function

//X^[ACe쐬
task main_Item_CreateStar(let x, let y, let energy)
{
	if(energy == 0){ return; }

	local{
		let id = GetReadyBeamID();
		if(id != -1){

			main_ObjItem_Star(id, x, y, energy);
			//CreateShotFromScript("Item", x, y, -1, 90, 0, [id, energy]);
			func_ObjItem_SetEnergy(id, energy);
			func_ObjItem_SetStatus(id, _ITEM_APPEAR);
		}
	}

	//ID擾
	function GetReadyBeamID()
	{
		let id = -1;
		ascent(i in 0..const_ItemMaxCount)
		{
			if(func_ObjItem_GetStatus(i) == _ITEM_READY)
			{
				id = i;
				break;
			}
		}
		return id;
	}
}

//XyVACe쐬
task main_Item_CreateSpecial(let x, let y, let type)
{
	local{
		let id = GetReadyBeamID();
		if(id != -1){
			main_ObjItem_Special(id, x, y, type);

			//CreateShotFromScript("SpecialItem", x, y, -1, 90, 0, [id, type]);
			func_ObjItem_SetEnergy(id, 0);
			func_ObjItem_SetStatus(id, _ITEM_APPEAR);
		}
	}

	//ID擾
	function GetReadyBeamID()
	{
		let id = -1;
		ascent(i in 0..const_ItemMaxCount)
		{
			if( func_ObjItem_GetStatus(i) == _ITEM_READY)
			{
				id = i;
				break;
			}
		}
		return id;
	}
}

//ACe̎擾
task func_Item_HitNormal(let id, let posX, let posY)
{

	let energy = func_ObjItem_GetEnergy(id);
	func_Beam_AddPower(energy);
	PlaySE(se_EnergyChip);
	func_ObjItem_SetStatus(id, _ITEM_ERASED);
	main_Item_HitEffect(posX, posY, 20, 15, 0);

	let rate  = 1.0;
	if(func_Beam_GetStockCount == func_Beam_GetStockMaxCount){ rate = 5.0 }
	else if(func_Beam_GetStockCount >= func_Beam_GetStockMaxCount * 3 / 4){ rate = 3.0 }
	else if(func_Beam_GetStockCount >= func_Beam_GetStockMaxCount / 2){ rate = 2.0 }

	let score = 10;
	if(energy >= 15){score = 30;}
	else if(energy >= 6){score = 20;}
	func_Score_Add(score * rate );
	main_Effect_Score(posX, posY - 10, score, rate)



}//end task 


//ACe̎擾iXyVj
task func_Item_HitSpecial(let id, let posX, let posY, let type)
{
	if(type == _ITEMTYPE_1UP)
	{
		func_Score_ExtendPlayer();
	}
	else if(func_SpecialBeam_GetEquip() == type && func_SpecialBeam_GetLevel() == 3)
	{
		func_Score_Add(300);
		main_Effect_Score(posX, posY - 10, 300, 1)
	}else{
		func_SpecialBeam_Equip(type);
	}

	PlaySE(se_PowerUp);
	func_ObjItem_SetStatus(id, _ITEM_ERASED);
	main_Item_HitEffect(posX +10, posY, 20, 15, 0);
	main_Item_HitEffect(posX -10, posY, 20, 15, 0);
	main_Item_HitEffect(posX, posY+10, 20, 15, 0);
	main_Item_HitEffect(posX, posY-10, 20, 15, 0);


}//end task 

//qbgGtFNg
task main_Item_HitEffect(let posX, let posY, let size, let time, let angle_base)
{
	let obj = REMY_Effect_CreateObject(img_Explode, 10, 5);
	Obj_SetPosition(obj, posX, posY);

	ascent(j in 0..5)
	{
		VertOuter(j * 2);
		VertInner(j * 2 + 1);
	}

	loop(time){yield;}
	
	Obj_Delete(obj);
	
	//---------
	task VertOuter(let id)
	{
		let angle = angle_base - 45 + 90 * (trunc(id/2));
		let radius = 0;

		ascent(i in 0..time){
			radius = size * (1-  (1 -i / time) * (1 -i / time));
			let x = radius * sin(angle);
			let y = radius * cos(angle);		
			ObjEffect_SetVertexXY(obj, id, x, y);
			ObjEffect_SetVertexUV(obj, id, [0, 16, 0, 16, 0][trunc(id/2)],  [0, 0, 16, 16, 0][trunc(id/2)]);
			ObjEffect_SetVertexColor(obj, id, 255, 255, 255, 255);
			yield;
		}
	}
	
	task VertInner(let id)
	{
		let angle = angle_base - 45 + 90 * (trunc(id/2));
		let radius = 0;

		ascent(i in 0..time){
			radius = size * ((i / time));
			let x = radius * sin(angle);
			let y = radius * cos(angle);		
			ObjEffect_SetVertexXY(obj, id, x, y);
			ObjEffect_SetVertexUV(obj, id, [0, 16, 0, 16, 0][trunc(id/2)],  [0, 0, 16, 16, 0][trunc(id/2)]);
			ObjEffect_SetVertexColor(obj, id, 255, 255, 255, 255);
			yield;
		}
	}
	
}


