#include "./SceneCommon.txt"

@Initialize
{
	SetAutoDeleteObject(true);
	
	T_Background_2(0,0,255);
	T_Black;
	ascent(j in -3..4)
	{
		ascent(i in -3..4)
		{
			T_Background(i*0.5,j*0.5,5);
		}
	}
	
	T_BackgroundPause;
	T_Menu();
}

@MainLoop
{
	yield;
}

@Finalize
{
}

task T_BackgroundPause()
{
	//wi
	let dir = GetCurrentScriptDirectory();
	let pathTitle = dir ~ "../../img/white.png";
	let objImage = ObjPrim_Create(OBJ_SPRITE_2D);
	Obj_SetRenderPriorityI(objImage,90);
	ObjPrim_SetTexture(objImage,pathTitle);
	ObjRender_SetColor(objImage,0,0,0);
	ObjSprite2D_SetSourceRect(objImage,0,0,640,480);
	ObjSprite2D_SetDestRect(objImage,0,0,640,480);
	ObjRender_SetAlpha(objImage,127);
}

task T_Menu
{
	let selectIndex = 0;	// Iʒu
	
	task T_MenuItem(let index,let mx,let my,let text)
	{
		let objText = CreateTextObject(mx,my,24,text);
		let AlphaRate = 1;
		loop
		{
			if(index == selectIndex)
			{
//				ObjText_SetFontBorderType(objText,BORDER_FULL);
				ObjRender_SetAlpha(objText,255*AlphaRate);
				ObjText_SetFontSize(objText,24);
			}
			else
			{
//				ObjText_SetFontBorderType(objText,BORDER_NONE);
				ObjRender_SetAlpha(objText,255*AlphaRate*0.6);
				ObjText_SetFontSize(objText,20);
			}
			yield;
		}
	}
	
	// j[zu
	let mx = 300;
	let my = 200;
	let texts = ["ĊJ","Ē","I"];
	var countMenu = length(texts);
	ascent(iText in 0 .. countMenu)
	{
		T_MenuItem(iText,mx,my,texts[iText]);
		my += 32;
	}
	
	// L[ԂZbg܂őҋ@
	while(GetVirtualKeyState(VK_PAUSE) != KEY_FREE){	yield;	}
	// j[I
	let frameKeyHold = 0;	// L[ςȂt[
	loop
	{
		// 
		if(GetVirtualKeyState(VK_OK) == KEY_PULL)
		{
			let listResult = [RESULT_CANCEL,RESULT_RETRY,RESULT_END];
			SetScriptResult(listResult[selectIndex]);
			CloseScript(GetOwnScriptID());
			return;
		}
		// LZ
		if(GetVirtualKeyState(VK_CANCEL) == KEY_PULL || GetVirtualKeyState(VK_PAUSE) == KEY_PULL)
		{
			SetScriptResult(RESULT_CANCEL);
			CloseScript(GetOwnScriptID());
			return;
		}
		// J[\ړ
		if(GetVirtualKeyState(VK_UP) == KEY_PUSH)
		{
			selectIndex--;
		}
		else if(GetVirtualKeyState(VK_DOWN) == KEY_PUSH)
		{
			selectIndex++;
		}
		else if(GetVirtualKeyState(VK_UP) == KEY_HOLD)
		{
			frameKeyHold++;
			if(frameKeyHold == 30 || (frameKeyHold > 30 && (frameKeyHold % 10 == 0)))
			{
				selectIndex--;
			}
		}
		else if(GetVirtualKeyState(VK_DOWN) == KEY_HOLD)
		{
			frameKeyHold++;
			if(frameKeyHold == 30 || (frameKeyHold > 30 && (frameKeyHold % 10 == 0)))
			{
				selectIndex++;
			}
		}
		else
		{
			frameKeyHold = 0;
		}
		
		if(selectIndex < 0) 
		{
			selectIndex = countMenu - 1;
		}
		else
		{
			selectIndex %= countMenu;
		}
		
		yield;
	}
}
