//-----------------------
//ACeIuWFNgǗ
//-----------------------
let m_ItemData_Status;
let m_ItemData_Energy;
let m_ItemData_PositionX;
let m_ItemData_PositionY;
let m_ItemData_Type;


function func_ObjItem_Reset()
{

	let init = [];
	ascent(i in 0..const_ItemMaxCount)
	{
		init = init ~ [0];
	}
	m_ItemData_Status = init;
	m_ItemData_Type = init;
	m_ItemData_Energy = init;
	m_ItemData_PositionX = init;
	m_ItemData_PositionY = init;
}

function func_ObjItem_GetStatus(let id){return m_ItemData_Status[id]; }
function func_ObjItem_SetStatus(let id, let val){m_ItemData_Status[id] = val; }

function func_ObjItem_GetX(let id){return m_ItemData_PositionX[id]; }
function func_ObjItem_GetY(let id){return m_ItemData_PositionY[id]; }

function func_ObjItem_GetEnergy(let id){return m_ItemData_Energy[id]; }
function func_ObjItem_SetEnergy(let id, let val){m_ItemData_Energy[id] = val; }

function func_ObjItem_GetType(let id){return m_ItemData_Type[id]; }



//ACe𐶐
task main_ObjItem_Star(let itemID, let x, let y, let item_pow)
{
	let delete_immediate = true;
	let rect;
	let size;
	let alive = true;

	SetItemParam();

	let obj_item = REMY_Effect_CreateObject(img_System, 4, 5);
	REMY_Effect_SetVertexSquare(obj_item, rect, [0, 0], [255, 255, 255, 100]);
	Obj_SetPosition(obj_item, x, y);
	Obj_SetSpeed(obj_item, 0);
	Obj_SetAngle(obj_item, 90);
	//ObjEffect_SetRenderState(obj_item, ALPHA);
	ObjEffect_SetScale(obj_item, size, size);

	//tO
	m_ItemData_Status[itemID] =_ITEM_APPEAR;
	m_ItemData_Type[itemID] = _ITEMTYPE_STAR;

	local{
		Move();
		SetObjShot();
		loop
		{
			if(!alive){ break; }
			yield;
		}
		Finalize();
	}
	//---------------------------------

	task Move()
	{
		let speed = -1;
		loop{
			if(!alive){ break; }
			speed = (speed + 0.1);
			if(speed > 4){ speed = 4; }
			Obj_SetSpeed(obj_item, speed);

			//ŊmF
			local{
				let state = m_ItemData_Status[itemID];
				if(state == _ITEM_ERASED){ alive = false; break; }
			}
			local
			{
				if(Obj_GetY(obj_item) > 480){ alive = false; break; }
			}

			//Wo^
			local{
				m_ItemData_PositionX[itemID] = Obj_GetX(obj_item);
				m_ItemData_PositionY[itemID] = Obj_GetY(obj_item);
			}
			
			yield;
		}
	}

	function SetItemParam()
	{
		if(item_pow >= 15){
			size = 1.0;
			rect = func_GetGraphicRect("STAR5");
		}
		else if(item_pow >= 6)
		{
			size = 1.0;
			rect = func_GetGraphicRect("STAR2");
		}
		else if(item_pow >= 3)
		{
			size = 1.2;
			rect = func_GetGraphicRect("STAR1");
		}
		else
		{
			size = 0.4 + 0.4 * item_pow;
			rect = func_GetGraphicRect("STAR");
		}
	}

	task SetObjShot()
	{
		let obj = Obj_Create(OBJ_SHOT);
		ObjShot_SetGraphic(obj, WHITE01);
		Obj_SetCollisionToPlayer(obj, false);
		Obj_SetAlpha(obj, 00);
		loop
		{
			if(!alive){ break; }
			Obj_SetPosition(obj, Obj_GetX(obj_item), Obj_GetY(obj_item));
			if(Obj_BeDeleted(obj)){ delete_immediate = false; alive = false; }
			yield;
		}
		Obj_Delete(obj);

	}


	function Finalize()
	{
		if(delete_immediate){Obj_Delete(obj_item); }
		else{ REMY_Effect_FadeDelete(obj_item, 10, 4, [255, 255, 255, 100]); } 
		m_ItemData_Status[itemID] = _ITEM_READY;
	}

}//end task


//XyVACe𐶐
task main_ObjItem_Special(let itemID, let x, let y, let item_type)
{
	let delete_immediate = true;
	let rect;
	let alive = true;

	SetItemParam();

	let obj_item = REMY_Effect_CreateObject(img_System, 4, 5);
	REMY_Effect_SetVertexSquare(obj_item, rect, [0, 0], [255, 255, 255, 255]);
	Obj_SetPosition(obj_item, x, y);
	Obj_SetSpeed(obj_item, 0);
	Obj_SetAngle(obj_item, 90);
	//ObjEffect_SetRenderState(obj_item, ALPHA);
	ObjEffect_SetScale(obj_item, 1.2, 1.2);
	Obj_SetAutoDelete(obj_item, false);

	m_ItemData_Status[itemID] = _ITEM_APPEAR;
	m_ItemData_Type[itemID] = item_type;

	local{
		Move();
		SetObjShot();
		loop
		{
			if(!alive){ break; }
			yield;
		}
		Finalize();
	}
	//---------------------------------

	task Move()
	{
		let speed = -0.5;
		loop{
			speed = (speed + 0.05);
			if(speed > 3){ speed = 3; }
			Obj_SetSpeed(obj_item, speed);

			//ŊmF
			local{
				let state = m_ItemData_Status[itemID];
				if(state == _ITEM_ERASED){ alive = false; break; }
			}
			local
			{
				if(Obj_GetY(obj_item) > 480){ alive = false; break; }
			}

			//Wo^
			local{
				m_ItemData_PositionX[itemID] = Obj_GetX(obj_item);
				m_ItemData_PositionY[itemID] = Obj_GetY(obj_item);
			}
			
			yield;
		}
	}

	function SetItemParam()
	{
		alternative(item_type)
		case(_ITEMTYPE_RAPIER){rect = func_GetGraphicRect("ITEM_RAPIER");}
		case(_ITEMTYPE_SPREAD){rect = func_GetGraphicRect("ITEM_SPREAD");}
		case(_ITEMTYPE_ERASE){rect = func_GetGraphicRect("ITEM_ERASE");}
		case(_ITEMTYPE_FREEZE){rect = func_GetGraphicRect("ITEM_FREEZE");}
		case(_ITEMTYPE_1UP){rect = func_GetGraphicRect("ITEM_1UP");}
	}

	task SetObjShot()
	{
		let obj = Obj_Create(OBJ_SHOT);
		ObjShot_SetGraphic(obj, WHITE01);
		Obj_SetCollisionToPlayer(obj, false);
		Obj_SetAlpha(obj, 00);
		Obj_SetAutoDelete(obj, false);
		loop
		{
			if(!alive){ break; }
			Obj_SetPosition(obj, Obj_GetX(obj_item), Obj_GetY(obj_item));
			if(Obj_BeDeleted(obj)){delete_immediate = false; alive = false; }
			yield;
		}
		Obj_Delete(obj);

	}

	function Finalize()
	{
		if(delete_immediate){Obj_Delete(obj_item); }
		else{ REMY_Effect_FadeDelete(obj_item, 10, 4, [255, 255, 255, 255]); } 
		m_ItemData_Status[itemID] = _ITEM_READY;
	}

}//end task




