//_\etc StagepCN[ht@C


//ݒЂƂ܂Ƃ
sub MY_Initialize_Display
{
	let DIFFICULTLY = GetCommonDataDefault("DIFFICULTLY", d_NORM);
	add_background_picture(GetClipMaxX+64,  40, [ 0, 96, 0, 96][DIFFICULTLY], [64, 64, 96, 96][DIFFICULTLY], 96, 32, imgNUM);

	add_background_picture(GetClipMaxX+16,  70, 128, 16, 40, 24, imgNUM);
	STAGE_DrawScore(24, 74);

	add_background_picture(GetClipMaxX+16, 130,  80, 40, 64, 24, imgNUM);
	STAGE_DrawLife(64, 134);
	
	add_background_picture(GetClipMaxX+16, 178,   0, 40, 80, 24, imgNUM);
	STAGE_DrawBomb(64, 182);

	add_background_picture(GetClipMaxX+16, 238,   0, 16, 64, 24, imgNUM);
	STAGE_DrawMAXScore(124, 222);

	add_background_picture(GetClipMaxX+16, 272,  64, 16, 64, 24, imgNUM);
	STAGE_DrawGraze(124, 256);

	STAGE_DrawBen;
	ItemAppeared;
}


//̃xg[`
sub STAGE_DrawBen()
{
	STAGE_DrawBen_SUB("BENT1", 0);
	STAGE_DrawBen_SUB("BENT2", 1);
	STAGE_DrawBen_SUB("BENT3", 2);
}

task STAGE_DrawBen_SUB(STRING, BEN_NUM)
{
	let SIZE_X = 32;
	let SIZE_Y = 21;
	
	let tenmetu = 0;
	
	//ݒ
	let obj=Obj_Create(OBJ_EFFECT);
	ObjEffect_SetTexture(obj, imgBEN);
	ObjEffect_SetRenderState(obj, ALPHA);
	ObjEffect_SetLayer(obj, 7);
	ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
	ObjEffect_CreateVertex(obj, 4);
	ObjEffect_SetVertexXY(obj, 0, -SIZE_X/2, -SIZE_Y/2);
	ObjEffect_SetVertexXY(obj, 1,  SIZE_X/2, -SIZE_Y/2);
	ObjEffect_SetVertexXY(obj, 2,  SIZE_X/2,  SIZE_Y/2);
	ObjEffect_SetVertexXY(obj, 3, -SIZE_X/2,  SIZE_Y/2);
	ObjEffect_SetScale(obj, 1, 1);
	Obj_SetPosition(obj, GetClipMinX+24 + BEN_NUM*30, GetClipMaxY-16);

	loop
	{
		if (GetCommonDataDefault("UFO_STATE", 0))	//UFOo
			{ tenmetu += 0.75; }
		else
			{ tenmetu = 0; }
		
		let color = BENTLER_COLOR[GetCommonDataDefault(STRING, Bentler_BLANK)];
		let X1 = trunc((color-1)%4) * 64;
		let Y1 = trunc((color-1)/4) * 64 + trunc(tenmetu%3)*SIZE_Y;
		ObjEffect_SetVertexUV(obj, 0, X1, Y1);
		ObjEffect_SetVertexUV(obj, 1, X1+SIZE_X, Y1);
		ObjEffect_SetVertexUV(obj, 2, X1+SIZE_X, Y1+SIZE_Y);
		ObjEffect_SetVertexUV(obj, 3, X1, Y1+SIZE_Y);
		yield;
	}

	Obj_Delete(obj);
}

//_`
task STAGE_DrawScore(x_offset, y_offset)
{
	let SIZE_X = 16;
	let SIZE_Y = 16;
	
	let KETA = 13;
	let POINT_MAX = 10^KETA-1;
	let GRAPH = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
	let old_point = -1;
	
	//ݒ
	ascent (let i in 0 .. KETA)
	{
		let obj = Obj_Create(OBJ_EFFECT);
		GRAPH[i] = obj;
		
		ObjEffect_SetTexture(obj, imgNUM);
		ObjEffect_SetRenderState(obj, ALPHA);
		ObjEffect_SetLayer(obj, 8);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -SIZE_X/2, -SIZE_Y/2);
		ObjEffect_SetVertexXY(obj, 1,  SIZE_X/2, -SIZE_Y/2);
		ObjEffect_SetVertexXY(obj, 2,  SIZE_X/2,  SIZE_Y/2);
		ObjEffect_SetVertexXY(obj, 3, -SIZE_X/2,  SIZE_Y/2);
		ObjEffect_SetScale(obj, 1, 1);
		Obj_SetPosition(obj, GetClipMaxX+x_offset + i*16 - trunc((i+2)/4)*8, GetClipMinY+y_offset);
	}

	loop
	{
		if (old_point != GetScore())
		{
			let X1; let Y1; let i;
			let keta_flag;
			old_point = GetScore();
			
			let P1 = trunc(GetScore()/1000000000);
			let P2 = trunc((GetScore() - P1*1000000000) / 100000000);
			let P3 = trunc((GetScore() - P1*1000000000 - P2*100000000) / 10000000);
			let P4 = trunc((GetScore() - P1*1000000000 - P2*100000000 - P3*10000000) / 1000000);
			let P5 = trunc((GetScore() - P1*1000000000 - P2*100000000 - P3*10000000 - P4*1000000) / 100000);
			let P6 = trunc((GetScore() - P1*1000000000 - P2*100000000 - P3*10000000 - P4*1000000 - P5*100000) / 10000);
			let P7 = trunc((GetScore() - P1*1000000000 - P2*100000000 - P3*10000000 - P4*1000000 - P5*100000 - P6*10000) / 1000);
			let P8 = trunc((GetScore() - P1*1000000000 - P2*100000000 - P3*10000000 - P4*1000000 - P5*100000 - P6*10000 - P7*1000) / 100);
			let P9 = trunc((GetScore() - P1*1000000000 - P2*100000000 - P3*10000000 - P4*1000000 - P5*100000 - P6*10000 - P7*1000 - P8*100) / 10);
			let P10= 0;
			if (GetScore() > POINT_MAX)
				{ P1 = 9; P2 = 9; P3 = 9; P4 = 9; P5 = 9; P6 = 9; P7 = 9; P8 = 9; P9 = 9; P10 = 0; }
			
			//
			if (P1 != 0) { keta_flag = 13; }
			else { if (P2 != 0) { keta_flag = 11; }
				else { if (P3 != 0) { keta_flag = 10; }
					else { if (P4 != 0) { keta_flag = 9; }
						else { if (P5 != 0) { keta_flag = 7; }
							else { if (P6 != 0) { keta_flag = 6; }
								else { if (P7 != 0) { keta_flag = 5; }
									else { if (P8 != 0) { keta_flag = 3; }
										else { if (P9 != 0) { keta_flag = 2; }
											else { keta_flag = 1; }
			} } } } } } } }
			
			//pɂɔzʖڂ炵̂
			i = 12;
			DrawNumber(P10);
			i--; DrawNumber(P9);
			i--; DrawNumber(P8);
			i--; DrawNumber(10);
			i--; DrawNumber(P7);
			i--; DrawNumber(P6);
			i--; DrawNumber(P5);
			i--; DrawNumber(10);
			i--; DrawNumber(P4);
			i--; DrawNumber(P3);
			i--; DrawNumber(P2);
			i--; DrawNumber(10);
			i--; DrawNumber(P1);

			function DrawNumber(num)
			{
				let X1 = num * SIZE_X;
				let Y1 = 0;
				if (i < 13-keta_flag) { X1 = 176; }
				ObjEffect_SetVertexUV(GRAPH[i], 0, X1, Y1);
				ObjEffect_SetVertexUV(GRAPH[i], 1, X1+SIZE_X, Y1);
				ObjEffect_SetVertexUV(GRAPH[i], 2, X1+SIZE_X, Y1+SIZE_Y);
				ObjEffect_SetVertexUV(GRAPH[i], 3, X1, Y1+SIZE_Y);
			}
		}
		yield;
	}
}


//ő哾_`
task STAGE_DrawMAXScore(x_offset, y_offset)
{
	let SIZE_X = 16;
	let SIZE_Y = 16;
	
	let KETA = 5;
	let POINT_MAX = 10^KETA-1;
	let GRAPH = [0, 0, 0, 0, 0];
	let old_point = -1;
	
	//ݒ
	ascent (let i in 0 .. KETA)
	{
		let obj = Obj_Create(OBJ_EFFECT);
		GRAPH[i] = obj;
		
		ObjEffect_SetTexture(obj, imgNUM);
		ObjEffect_SetRenderState(obj, ALPHA);
		ObjEffect_SetLayer(obj, 8);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -SIZE_X/2, -SIZE_Y/2);
		ObjEffect_SetVertexXY(obj, 1,  SIZE_X/2, -SIZE_Y/2);
		ObjEffect_SetVertexXY(obj, 2,  SIZE_X/2,  SIZE_Y/2);
		ObjEffect_SetVertexXY(obj, 3, -SIZE_X/2,  SIZE_Y/2);
		ObjEffect_SetScale(obj, 1, 1);
		Obj_SetPosition(obj, GetClipMaxX+x_offset + i*16, GetClipMinY+y_offset);
	}

	loop
	{
		if (old_point != GetCommonDataDefault("MAX_SCORE", 0))
		{
			let X1; let Y1; let i;
			old_point = GetCommonDataDefault("MAX_SCORE", 0);
			
			let P1 = trunc(old_point / 10000);
			let P2 = trunc((old_point - P1*10000) / 1000);
			let P3 = trunc((old_point - P1*10000 - P2*1000) / 100);
			let P4 = trunc((old_point - P1*10000 - P2*1000 - P3*100) / 10);
			let P5 = trunc( old_point - P1*10000 - P2*1000 - P3*100 - P4*10);
			if (old_point > POINT_MAX)
				{ P1 = 9; P2 = 9; P3 = 9; P4 = 9; P5 = 9; }
			
			//pɂɔzʖڂ炵̂
			i = 0;
			DrawNumber(P1); i++;
			DrawNumber(P2); i++;
			DrawNumber(P3); i++;
			DrawNumber(P4); i++;
			DrawNumber(P5);

			function DrawNumber(num)
			{
				X1 = num * SIZE_X; Y1 = 0;
				ObjEffect_SetVertexUV(GRAPH[i], 0, X1, Y1);
				ObjEffect_SetVertexUV(GRAPH[i], 1, X1+SIZE_X, Y1);
				ObjEffect_SetVertexUV(GRAPH[i], 2, X1+SIZE_X, Y1+SIZE_Y);
				ObjEffect_SetVertexUV(GRAPH[i], 3, X1, Y1+SIZE_Y);
			}
		}
		yield;
	}
}

//Graze`
//łɍő哾_̉Z
task STAGE_DrawGraze(x_offset, y_offset)
{
	let SIZE_X = 16;
	let SIZE_Y = 16;
	
	let KETA = 5;
	let POINT_MAX = 10^KETA-1;
	let GRAPH = [0, 0, 0, 0, 0];
	let old_point = -1;
	
	//ݒ
	ascent (let i in 0 .. KETA)
	{
		let obj = Obj_Create(OBJ_EFFECT);
		GRAPH[i] = obj;
		
		ObjEffect_SetTexture(obj, imgNUM);
		ObjEffect_SetRenderState(obj, ALPHA);
		ObjEffect_SetLayer(obj, 8);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -SIZE_X/2, -SIZE_Y/2);
		ObjEffect_SetVertexXY(obj, 1,  SIZE_X/2, -SIZE_Y/2);
		ObjEffect_SetVertexXY(obj, 2,  SIZE_X/2,  SIZE_Y/2);
		ObjEffect_SetVertexXY(obj, 3, -SIZE_X/2,  SIZE_Y/2);
		ObjEffect_SetScale(obj, 1, 1);
		Obj_SetPosition(obj, GetClipMaxX+x_offset + i*16, GetClipMinY+y_offset);
	}

	loop
	{
		if (old_point != GetGraze())
		{
			let X1; let Y1; let i;
			let P1 = trunc(GetGraze() / 10000);
			let P2 = trunc((GetGraze() - P1*10000) / 1000);
			let P3 = trunc((GetGraze() - P1*10000 - P2*1000) / 100);
			let P4 = trunc((GetGraze() - P1*10000 - P2*1000 - P3*100) / 10);
			let P5 = trunc( GetGraze() - P1*10000 - P2*1000 - P3*100 - P4*10);
			if (GetGraze() > POINT_MAX)
				{ P1 = 9; P2 = 9; P3 = 9; P4 = 9; P5 = 9; }
			
			//pɂɔzʖڂ炵̂
			i = 0;
			DrawNumber(P1); i++;
			DrawNumber(P2); i++;
			DrawNumber(P3); i++;
			DrawNumber(P4); i++;
			DrawNumber(P5);

			function DrawNumber(num)
			{
				X1 = num * SIZE_X; Y1 = 0;
				ObjEffect_SetVertexUV(GRAPH[i], 0, X1, Y1);
				ObjEffect_SetVertexUV(GRAPH[i], 1, X1+SIZE_X, Y1);
				ObjEffect_SetVertexUV(GRAPH[i], 2, X1+SIZE_X, Y1+SIZE_Y);
				ObjEffect_SetVertexUV(GRAPH[i], 3, X1, Y1+SIZE_Y);
			}

			// ő哾_
			let pt = GetCommonDataDefault("MAX_SCORE", 0);
			pt += (trunc(GetGraze()/10) - trunc(old_point/10)) * 10;
			if (pt > 99990) { pt = 99990; }
			SetCommonData("MAX_SCORE", pt);

			old_point = GetGraze();
		}
		yield;
	}
}


//c@`
task STAGE_DrawLife(x_offset, y_offset)
{
	let SIZE_X = 16;
	let SIZE_Y = 16;
	let KETA = 8;
	let GRAPH = [0, 0, 0, 0, 0, 0, 0, 0, 0];
	let old_point = -1;
	
	//ݒ
	ascent (let i in 0 .. KETA)
	{
		let obj = Obj_Create(OBJ_EFFECT);
		GRAPH[i] = obj;
		
		ObjEffect_SetTexture(obj, imgPSTAR);
		ObjEffect_SetRenderState(obj, ALPHA);
		ObjEffect_SetLayer(obj, 8);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -SIZE_X/2, -SIZE_Y/2);
		ObjEffect_SetVertexXY(obj, 1,  SIZE_X/2, -SIZE_Y/2);
		ObjEffect_SetVertexXY(obj, 2,  SIZE_X/2,  SIZE_Y/2);
		ObjEffect_SetVertexXY(obj, 3, -SIZE_X/2,  SIZE_Y/2);
		ObjEffect_SetScale(obj, 1, 1);
		Obj_SetPosition(obj, GetClipMaxX+x_offset + i*SIZE_X, GetClipMinY+y_offset);
	}

	loop
	{
		let tmp = GetPlayerLife() + GetCommonDataDefault("P_PLAYER", 0) / 4;
		if (old_point != tmp)
		{
			old_point = tmp;
			let i = 0;
			loop (KETA)
			{
				let X1 = 0;
				if (i < GetPlayerLife()) { X1 = 64; }
				else if (i < GetPlayerLife()+1) { X1 = 16*GetCommonDataDefault("P_PLAYER", 0); }
				ObjEffect_SetVertexUV(GRAPH[i], 0, X1, 0);
				ObjEffect_SetVertexUV(GRAPH[i], 1, X1+SIZE_X, 0);
				ObjEffect_SetVertexUV(GRAPH[i], 2, X1+SIZE_X, SIZE_Y);
				ObjEffect_SetVertexUV(GRAPH[i], 3, X1, SIZE_Y);
				i++;
			}
		}
		yield;
	}
}

//{`
task STAGE_DrawBomb(x_offset, y_offset)
{
	let SIZE_X = 16;
	let SIZE_Y = 16;
	let KETA = 8;
	let GRAPH = [0, 0, 0, 0, 0, 0, 0, 0, 0];
	let old_point = -1;
	
	//ݒ
	ascent (let i in 0 .. KETA)
	{
		let obj = Obj_Create(OBJ_EFFECT);
		GRAPH[i] = obj;
		
		ObjEffect_SetTexture(obj, imgPSTAR);
		ObjEffect_SetRenderState(obj, ALPHA);
		ObjEffect_SetLayer(obj, 8);
		ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_CreateVertex(obj, 4);
		ObjEffect_SetVertexXY(obj, 0, -SIZE_X/2, -SIZE_Y/2);
		ObjEffect_SetVertexXY(obj, 1,  SIZE_X/2, -SIZE_Y/2);
		ObjEffect_SetVertexXY(obj, 2,  SIZE_X/2,  SIZE_Y/2);
		ObjEffect_SetVertexXY(obj, 3, -SIZE_X/2,  SIZE_Y/2);
		ObjEffect_SetScale(obj, 1, 1);
		Obj_SetPosition(obj, GetClipMaxX+x_offset + i*SIZE_X, GetClipMinY+y_offset);
	}

	loop
	{
		let tmp = GetPlayerBomb() + GetCommonDataDefault("P_BOMB", 0) / 4;
		if (old_point != tmp)
		{
			old_point = tmp;

			let i = 0;
			loop (KETA)
			{
				let X1 = 0;
				if (i < GetPlayerBomb()) { X1 = 64; }
				else if (i < GetPlayerBomb()+1) { X1 = 16*trunc(GetCommonDataDefault("P_BOMB", 0)*1.5); }
				ObjEffect_SetVertexUV(GRAPH[i], 0, X1, 0);
				ObjEffect_SetVertexUV(GRAPH[i], 1, X1+SIZE_X, 0);
				ObjEffect_SetVertexUV(GRAPH[i], 2, X1+SIZE_X, SIZE_Y);
				ObjEffect_SetVertexUV(GRAPH[i], 3, X1, SIZE_Y);
				i++;
			}
		}
		yield;
	}
}
	
function add_background_picture(ox, oy, X1, Y1, SIZE_X, SIZE_Y, TEXTURE)
{
	let obj = Obj_Create(OBJ_EFFECT);
	
	ObjEffect_SetTexture(obj, TEXTURE);
	ObjEffect_SetRenderState(obj, ALPHA);
	ObjEffect_SetLayer(obj, 8);
	ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLEFAN);
	ObjEffect_CreateVertex(obj, 4);
	ObjEffect_SetVertexXY(obj, 0,       0, -SIZE_Y/2);
	ObjEffect_SetVertexXY(obj, 1,  SIZE_X, -SIZE_Y/2);
	ObjEffect_SetVertexXY(obj, 2,  SIZE_X,  SIZE_Y/2);
	ObjEffect_SetVertexXY(obj, 3,       0,  SIZE_Y/2);
	ObjEffect_SetVertexUV(obj, 0, X1, Y1);
	ObjEffect_SetVertexUV(obj, 1, X1+SIZE_X, Y1);
	ObjEffect_SetVertexUV(obj, 2, X1+SIZE_X, Y1+SIZE_Y);
	ObjEffect_SetVertexUV(obj, 3, X1, Y1+SIZE_Y);
	ObjEffect_SetScale(obj, 1, 1);
	Obj_SetPosition(obj, ox, oy);
}
