#e[Stage]
#Title[Eternal Forth Blizzard]
#Text[ʁF͎]
#Image[]
#ScriptVersion[2]

script_stage_main {
	
	let CSD = GetCurrentScriptDirectory;
	let back = CSD ~ "img\back6.png";
	let fog = CSD ~ "img\fog6.png";
	let letterImg = CSD ~ "img\letter.png";
	let imgList = [back, fog, letterImg];
	
	let position = [[GetCenterX, GetCenterY - 64], [GetCenterX, GetCenterY - 16], [GetCenterX, GetCenterY + 32]];
	let letters = [[0, 0, 159, 31], [0, 32, 63, 63], [64, 32, 127, 63], [0, 64, 63, 95], [64, 64, 127, 95]];
	
	let YES = 1;
	let NO = 0;
	let choose = YES;
	
	// wi֌W̕ϐ
	let backX = 380;
	let backY = 0;
	let backZ = 0;
	let backOffsetX = 512;
	let backOffsetY = 512;
	
	//////////////////////////////////////////
	// XNvg̃t@C(fBNg) //
	//////////////////////////////////////////
	let fileName = CSD ~ "test6.txt";
	
	@Initialize {
		TMain;
		ascent(let i in 0..length(imgList)) {
			LoadGraphic(imgList[i]);
		}
		
		SetPerspectiveClip(10, 2000);
		SetColor(150, 150, 180);
	}

	@MainLoop {
		SetViewTo(0, 0, 0);
		SetViewFrom(500, 88, -40);
		yield;
	}

	@DrawLoop {
	}

	@Finalize {
		ascent(let i in 0..length(imgList)) {
			DeleteGraphic(imgList[i]);
		}
	}

	@BackGround {
		SetTexture(back);
		SetGraphicRect(0, 0, 512, 512);
		
		ascent(let i in -2..3) {
			ascent(let j in -2..3) {
				DrawGraphic3D(backX + backOffsetX * i, backY + backOffsetY * j, backZ);
			}
		}
		
		backX = (backX + 5) % backOffsetX;
		backY = (backY - 13) % backOffsetY;
	}
	
	task TMain {
		yield;
		CreateEnemyBossFromFile(fileName, GetCenterX, 0, 0, 0, 0);
		while(GetEnemyNum != 0) {
			yield;
		}
		
		let x = GetPlayerX;
		let y = GetPlayerY;
		
		let obj = [];
		ascent(let i in 0..5) {
			obj = obj ~ [Obj_Create(OBJ_EFFECT)];
			Obj_SetPosition(obj[i], -500, -500);
			ObjEffect_SetTexture(obj[i], letterImg);
			ObjEffect_SetRenderState(obj[i], ADD);
			ObjEffect_SetPrimitiveType(obj[i], PRIMITIVE_TRIANGLESTRIP);
			ObjEffect_CreateVertex(obj[i], 4);
			
			let width = -letters[i][0] + letters[i][2];
			let height = -letters[i][1] + letters[i][3];
			
			ascent(let j in 0..4) {
				ObjEffect_SetVertexXY(obj[i], j, [-1, 1][trunc(j/2)] * width / 2, [-1, 1][j % 2] * height / 2);
				ObjEffect_SetVertexUV(obj[i], j, letters[i][trunc(j/2) * 2], letters[i][(j % 2) * 2 + 1]);
				ObjEffect_SetVertexColor(obj[i], j, 255, 255, 255, 255);
			}
		}
		
		Obj_SetPosition(obj[0], position[0][0], position[0][1]);
		
		while(GetKeyState(VK_SHOT) != KEY_PUSH) {
			if(choose) {
				Obj_SetPosition(obj[1], -500, -500);
				Obj_SetPosition(obj[2], position[1][0], position[1][1]);
				Obj_SetPosition(obj[3], position[2][0], position[2][1]);
				Obj_SetPosition(obj[4], -500, -500);
				
				if(GetKeyState(VK_DOWN) == KEY_PUSH) {
					choose = NO;
				}
			}else {
				Obj_SetPosition(obj[1], position[1][0], position[1][1]);
				Obj_SetPosition(obj[2], -500, -500);
				Obj_SetPosition(obj[3], -500, -500);
				Obj_SetPosition(obj[4], position[2][0], position[2][1]);
				
				if(GetKeyState(VK_UP) == KEY_PUSH) {
					choose = YES;
				}
			}
			
			SetPlayerX(x);
			SetPlayerY(y);
			yield;
		}
		
		if(choose) {
			Retry;
		}else {
			ClearStage;
		}
	}
}