//--------------------
//\[X
//--------------------
//

let img_Enemy = GetCurrentScriptDirectory() ~ "enemy\img\invader.png";
let img_Vacula = GetCurrentScriptDirectory() ~ "enemy\img\vacula.png";
let img_Boss1 = GetCurrentScriptDirectory() ~ "enemy\img\boss1.png";
let img_Boss2 = GetCurrentScriptDirectory() ~ "enemy\img\boss2.png";
let img_Wait = GetCurrentScriptDirectory() ~ "enemy\img\wait.png";
let img_Shield = GetCurrentScriptDirectory() ~ "enemy\img\shield.png";
let img_BossLife = GetCurrentScriptDirectory() ~ "enemy\img\life.png";

let img_System = GetCurrentScriptDirectory() ~ "system\img\system2.png";
let img_Explode = GetCurrentScriptDirectory() ~ "system\img\exp.png";
let img_Explode2 = GetCurrentScriptDirectory() ~ "system\img\exp2.png";
let img_Wall = GetCurrentScriptDirectory() ~ "system\img\wall.png";
let img_Line = GetCurrentScriptDirectory() ~ "system\img\line.png";
let img_Console = GetCurrentScriptDirectory() ~ "system\img\console.png";
let img_Warning = GetCurrentScriptDirectory() ~ "system\img\warning.png";

let img_Title = GetCurrentScriptDirectory() ~ "system\img\title.png";
let img_Spell = GetCurrentScriptDirectory() ~ "system\img\spells.png";

let img_Inst01 = GetCurrentScriptDirectory() ~ "system\img\inst1.png";
let img_Inst02 = GetCurrentScriptDirectory() ~ "system\img\inst2.png";
let img_Inst03 = GetCurrentScriptDirectory() ~ "system\img\inst3.png";

let img_Ending = GetCurrentScriptDirectory() ~ "system\img\ending.dat";
let img_Ending2 = GetCurrentScriptDirectory() ~ "system\img\congra.png";
let img_Ending_Back = GetCurrentScriptDirectory() ~ "system\img\ending_back.png";



let se_Result01 = GetCurrentScriptDirectory() ~ "system\se\wood05.wav";
let se_Result02 = GetCurrentScriptDirectory() ~ "system\se\coin06.wav";

let se_Shot = GetCurrentScriptDirectory() ~ "system\se\reflect.wav";
let se_NoDamage = GetCurrentScriptDirectory() ~ "system\se\beep08.wav";
let se_Damage = GetCurrentScriptDirectory() ~ "system\se\pi53.wav";

let se_PowerUp = GetCurrentScriptDirectory() ~ "system\se\pyoro57_a.wav";
let se_Defeat = GetCurrentScriptDirectory() ~ "system\se\pyoro50.wav";
let se_Defeat2 = GetCurrentScriptDirectory() ~ "system\se\fm001.wav";
let se_EnergyChip = GetCurrentScriptDirectory() ~ "system\se\push56.wav";
let se_Extend = GetCurrentScriptDirectory() ~ "system\se\fm010.wav";
let se_TimeStop = GetCurrentScriptDirectory() ~ "system\se\clock04.wav";



let se_UFO = GetCurrentScriptDirectory() ~ "system\se\jump00.wav";
let se_ChargeReady= GetCurrentScriptDirectory() ~ "system\se\cursor27.wav";
let se_Missile = GetCurrentScriptDirectory() ~ "system\se\byoro03.wav";
let se_Bonus1 =  GetCurrentScriptDirectory() ~ "system\se\coin03.wav";
let se_Bonus2 =  GetCurrentScriptDirectory() ~ "system\se\cursor37.wav";
let se_Warning =  GetCurrentScriptDirectory() ~ "system\se\mecha03.wav";

let se_Paper =  GetCurrentScriptDirectory() ~ "system\se\paper00.wav";
let se_Cursor =  GetCurrentScriptDirectory() ~ "system\se\pi77.wav";


let se_Bgm01 = GetCurrentScriptDirectory() ~ "system\se\bgm1.wav";
let se_Bgm02 = GetCurrentScriptDirectory() ~ "system\se\bgm2.wav";
let se_Bgm03 = GetCurrentScriptDirectory() ~ "system\se\bgm3.wav";
let se_Bgm04 = GetCurrentScriptDirectory() ~ "system\se\bgm4.wav";

let se_BgmBoss00 = GetCurrentScriptDirectory() ~ "system\se\chi.wav";

let se_BgmBoss01 = GetCurrentScriptDirectory() ~ "system\se\bgm1_boss3.wav";
let se_BgmBoss02 = GetCurrentScriptDirectory() ~ "system\se\bgm2_boss3.wav";
let se_BgmBoss03 = GetCurrentScriptDirectory() ~ "system\se\bgm3_boss3.wav";
let se_BgmBoss04 = GetCurrentScriptDirectory() ~ "system\se\bgm4_boss3.wav";

let bgm_BgmEnding = GetCurrentScriptDirectory() ~ "system\se\invader_ending.mp3";


//̕`lp擾
function func_GetNumberRect(let num, let place){

	let num_part = trunc( num / (10 ^ place)) % 10;
	let x = 128 + num_part * 8;

	return [x, 0, x + 8, 16];

}//end function


//Rect擾
function func_GetGraphicRect(let type){

	alternative(type)
	case("BEAM"){return [4, 3, 11, 44];}

	case("PLAYER_STOCK"){return [80,0,96,16];}

	case("EVERLASTING"){return [16,16,128,48]}
	case("TIME"){return [64,80,128,96];}
	case("SHIELD"){return [64,96,128,112];}
	case("NAGOYA"){return [0,112,64,128];}
	case("INVADED"){return [0,96,64,112];}
	case("SPECIAL"){return [64,112,128,128];}
	case("PLAYER"){return [0,128,64,144];}

	case("BONUS"){return [0,80,64,96];}

	case("TOTAL"){return [0,144,64,160];}

	case("STAGE"){return [0,64,48,80];}
	case("READY"){return [64,144,127,160];}

	case("SCORE"){return [0,48,48,64];}
	case("HISCORE"){return [48,48,128,64];}

	case("SCORE10"){return [160,192,176,200];}
	case("SCORE20"){return [160,200,176,208];}
	case("SCORE30"){return [160,208,176,216];}

	case("SCORE50"){return [208,192,224,208];}
	case("SCORE100"){return [200,208,224,224];}
	case("SCORE150"){return [232,192,256,208];}
	case("SCORE300"){return [232,208,256,224];}

	case("SCOREx2"){return [176,192,192,200];}
	case("SCOREx3"){return [176,200,192,208];}
	case("SCOREx4"){return [176,208,192,216];}
	case("SCOREx5"){return [176,216,192,224];}


	case("STAR"){return [160,160,176,176];}
	case("STAR1"){return [176,160,192,176];}
	case("STAR2"){return [160,128,192,160];}
	case("STAR5"){return [192,128,224,160];}

	case("ITEM_NONE"){return [48,160,80,192];}
	case("ITEM_RAPIER"){return [48,192,80,224];}
	case("ITEM_SPREAD"){return [80,160,112,192];}
	case("ITEM_ERASE"){return [80,192,112,224];}
	case("ITEM_FREEZE"){return [48,224,80,256];}
	case("ITEM_1UP"){return [80,224,112,256];}
	case("NONE"){return [0,160,48,176];}
	case("SPREAD"){return [0,176,48,192];}
	case("ERASE"){return [0,192,48,208];}
	case("RAPIER"){return [0,208,48,224];}
	case("FREEZE"){return [0,224,48,240];}

	case("EXTEND"){return [160,176,208,192];}
	case("UFO_ENCOUNTER"){return [128,112,256,128];}
	case("WARNING"){return [0,0,384,64];}
	case("CAUTION"){return [80,128,112,160];}

	case("LEVEL0"){return [0,160,16,176];}
	case("LEVEL1"){return [208,176,224,192];}
	case("LEVEL2"){return [224,176,240,192];}
	case("LEVEL3"){return [240,176,256,192];}

	case("TIMER_CHIP"){return [224,160,240,176];}

	case("SPELL01"){return [0,0,228,24];}
	case("SPELL02"){return [0,24,210,48];}
	case("SPELL03"){return [0,48,194,72];}
	case("SPELL04"){return [0,72,228,96];}
	case("SPELL_LINE"){return [0,96,256,128];}


	case("COST1"){return [0,240,8,250];}
	case("COST2"){return [8,240,16,250];}
	case("COST3"){return [16,240,24,250];}
	case("COST4"){return [24,240,32,250];}
	case("COST5"){return [32,240,40,250];}
	case("COST6"){return [40,240,48,250];}

	return [0,0,0,0];

}//end function


//Ԃ
function func_GetGlyphRect(let char)
{
	let code = 30;
	local
	{
		let c = trunc(char);
		if(c == 45){ code = 26; }
		if(c == 43){ code = 27; }
		if(c == 40){ code = 28; }
		if(c == 41){ code = 29; }
		if(c >= 48 && c <= 57){ code = c - 48 + 32; }

		if(c >= 65 && c <= 90){ code = c - 65; }
		if(c >= 97 && c <= 122){ code = c - 97; }
	}
	let x = 128 + 16 * (code % 8);
	let y = 16 + 16 * trunc(code / 8);

	return [x, y, x + 16, y + 16];
}


//\[X̓ǂݍ
function func_LoadResource()
{
	
	LoadGraphic(img_Enemy);
	LoadGraphic(img_Vacula);
	LoadGraphic(img_Boss1);
	LoadGraphic(img_Boss2);
	LoadGraphic(img_Wait);
	LoadGraphic(img_Shield);
	LoadGraphic(img_BossLife);
	LoadGraphic(img_System);
	LoadGraphic(img_Explode);
	LoadGraphic(img_Explode2);
	LoadGraphic(img_Wall);
	LoadGraphic(img_Line);
	LoadGraphic(img_Console);
	LoadGraphic(img_Spell);
	LoadGraphic(img_Title);
	LoadGraphic(img_Warning);

	LoadSE(se_Result01);
	LoadSE(se_Result02);
	LoadSE(se_Shot);
	LoadSE(se_Defeat);
	LoadSE(se_PowerUp);
	LoadSE(se_TimeStop);
	LoadSE(se_UFO);
	LoadSE(se_Defeat2);
	LoadSE(se_Extend);
	LoadSE(se_Bgm01);
	LoadSE(se_Bgm02);
	LoadSE(se_Bgm03);
	LoadSE(se_Bgm04);
	LoadSE(se_BgmBoss00);
	LoadSE(se_BgmBoss01);
	LoadSE(se_BgmBoss02);
	LoadSE(se_BgmBoss03);
	LoadSE(se_BgmBoss04);
	LoadSE(se_NoDamage);
	LoadSE(se_Damage);
	LoadSE(se_Missile);
	LoadSE(se_Bonus1);
	LoadSE(se_Bonus2);
	LoadSE(se_Warning);
	LoadSE(se_Paper);
	LoadSE(se_Cursor);

}//end function


//\[X̍폜
function func_DeleteResource()
{
	
	DeleteGraphic(img_Enemy);
	DeleteGraphic(img_Vacula);
	DeleteGraphic(img_Boss1);
	DeleteGraphic(img_Boss2);
	DeleteGraphic(img_Wait);
	DeleteGraphic(img_Shield);
	DeleteGraphic(img_BossLife);
	DeleteGraphic(img_System);
	DeleteGraphic(img_Explode);
	DeleteGraphic(img_Explode2);
	DeleteGraphic(img_Wall);
	DeleteGraphic(img_Line);
	DeleteGraphic(img_Console);
	DeleteGraphic(img_Spell);
	DeleteGraphic(img_Title);
	DeleteGraphic(img_Warning);

	DeleteSE(se_Result01);
	DeleteSE(se_Result02);
	DeleteSE(se_Shot);
	DeleteSE(se_Defeat);
	DeleteSE(se_PowerUp);
	DeleteSE(se_TimeStop);
	DeleteSE(se_UFO);
	DeleteSE(se_Defeat2);
	DeleteSE(se_Extend);
	DeleteSE(se_Bgm01);
	DeleteSE(se_Bgm02);
	DeleteSE(se_Bgm03);
	DeleteSE(se_Bgm04);
	DeleteSE(se_BgmBoss00);
	DeleteSE(se_BgmBoss01);
	DeleteSE(se_BgmBoss02);
	DeleteSE(se_BgmBoss03);
	DeleteSE(se_BgmBoss04);
	DeleteSE(se_NoDamage);
	DeleteSE(se_Damage);
	DeleteSE(se_Missile);
	DeleteSE(se_Bonus1);
	DeleteSE(se_Bonus2);
	DeleteSE(se_Warning);
	DeleteSE(se_Paper);
	DeleteSE(se_Cursor);
}//end function


//}jÃ[h
function func_LoadInstruction()
{
	LoadGraphic(img_Inst01);
	LoadGraphic(img_Inst02);
	LoadGraphic(img_Inst03);

}//end function

//}jÃf[g
function func_DeleteInstruction()
{

	DeleteGraphic(img_Inst01);
	DeleteGraphic(img_Inst02);
	DeleteGraphic(img_Inst03);

}//end function

//GfBÕ[h
function func_LoadEnding()
{
	LoadGraphic(img_Ending);
	LoadGraphic(img_Ending2);
	LoadGraphic(img_Ending_Back);
	LoadMusic(bgm_BgmEnding);

}//end function


//GfBÕ[h
function func_DeleteEnding()
{
	if(!func_IsEnding()){ return; }
	DeleteGraphic(img_Ending);
	DeleteGraphic(img_Ending2);
	DeleteGraphic(img_Ending_Back);
	DeleteMusic(bgm_BgmEnding);

}//end function

//XgO`i@DrawLoopĂяoj
function draw_DrawString(let x, let y, let str, let width, let argb)
{
	SetTexture(img_System);

	ascent(i in 0..length(str))
	{
		SetAlpha(argb[0]);
		SetColor(argb[1],argb[2],argb[3]);
		let rect = func_GetGlyphRect(str[i]);
		SetGraphicRect(rect[0],rect[1],rect[2],rect[3]);
		DrawGraphic(x + width * i, y);
	}

}//end function

