//シールドゲージ最大値
let ShieldGauge_Max = 1000;
//チャージゲージ最大値
let ChargeGauge_Max = 1000;
//スコア値最大値
let ScorePoint_Max = 99999;

/**
 * シールドゲージ加算
 * 
 * @param { Integer } point 加算するポイント
 */
function AddShieldGauge( point ){
	let gauge = GetShieldGauge() + point;
	if( gauge > ShieldGauge_Max ){
		gauge = ShieldGauge_Max;
	}
	SetCommonDataEx( "OFT", "ShieldGauge", gauge );
}

/**
 * シールドゲージ減算
 * 
 * @param { Integer } point 減算するポイント
 */
function SubShieldGauge( point ){
	let gauge = GetShieldGauge() - point;
	if( gauge < 0 ){
		gauge = 0;
	}
	SetCommonDataEx( "OFT", "ShieldGauge", gauge );
}

/**
 * シールドゲージ取得
 */
function GetShieldGauge(){
	if( IsCommonDataAreaExists( "OFT" ) ){
		return GetCommonDataDefaultEx( "OFT", "ShieldGauge", 0 );
	}else{
		return 0;
	}
}

/**
 * チャージゲージ加算
 * 
 * @param { Integer } point 加算するポイント
 */
function AddChargeGauge( point ){
	let gauge = GetChargeGauge() + point;
	if( GetNowChargeCount() >= GetMaxChargeCount() ){
		gauge = 0;
	}
	if( gauge > ChargeGauge_Max ){
		AddNowChargeCount( 1 );
		gauge -= ChargeGauge_Max;
	}
	SetCommonDataEx( "OFT", "ChargeGauge", gauge );
}

/**
 * チャージゲージ減算
 * 
 * @param { Integer } point 減算するポイント
 */
function SubChargeGauge( point ){
	let gauge = GetChargeGauge() - point;
	if( gauge < 0 ){
		gauge = 0;
	}
	SetCommonDataEx( "OFT", "ChargeGauge", gauge );
}

/**
 * 現在チャージ数加算
 * 
 * @param { Integer } point 加算するチャージ数
 */
function AddNowChargeCount( point ){
	let count = GetNowChargeCount() + point;
	if( count > GetMaxChargeCount() ){
		count = GetMaxChargeCount();
	}
	SetCommonDataEx( "OFT", "NowChargeCount", count );
}

/**
 * 現在チャージ数減算
 * 
 * @param { Integer } point 減算するチャージ数
 */
function SubNowChargeCount( point ){
	let count = GetNowChargeCount() - point;
	if( count < 0 ){
		count = 0;
	}
	SetCommonDataEx( "OFT", "NowChargeCount", count );
}

/**
 * 最大チャージ数設定
 * 
 * @param { Integer } point 設定するチャージ数
 */
function SetMaxChargeCount( count ){
	SetCommonDataEx( "OFT", "MaxChargeCount", count );
}

/**
 * チャージゲージ取得
 */
function GetChargeGauge(){
	if( IsCommonDataAreaExists( "OFT" ) ){
		return GetCommonDataDefaultEx( "OFT", "ChargeGauge", 0 );
	}else{
		return 0;
	}
}

/**
 * 現在チャージ数取得
 */
function GetNowChargeCount(){
	if( IsCommonDataAreaExists( "OFT" ) ){
		return GetCommonDataDefaultEx( "OFT", "NowChargeCount", 0 );
	}else{
		return 0;
	}
}

/**
 * 最大チャージ数取得
 */
function GetMaxChargeCount(){
	if( IsCommonDataAreaExists( "OFT" ) ){
		return GetCommonDataDefaultEx( "OFT", "MaxChargeCount", 0 );
	}else{
		return 0;
	}
}

/**
 * ボムエクステンド値ゲージ加算
 * 
 * @param { Integer } point 加算するボムエクステンド値
 */
function AddBombExtendPoint( point ){
	let gauge = GetBombExtendPoint() + point;
	if( gauge > GetBombExtendNormaPoint() ){
		//ボムアイテム作成
		//シグナルを出し、アイテム管理側で行わせる
		SetCommonDataEx( "OFT", "BombExtendSignal", true );
		
		gauge -= GetBombExtendNormaPoint();
	}
	SetCommonDataEx( "OFT", "BombExtendPoint", gauge );
}

/**
 * ボムエクステンド値ゲージ減算
 * 
 * @param { Integer } point 減算するボムエクステンド値
 */
function SubBombExtendPoint( point ){
	let gauge = GetBombExtendPoint() - point;
	if( gauge < 0 ){
		gauge = 0;
	}
	SetCommonDataEx( "OFT", "BombExtendPoint", gauge );
}

/**
 * ボムエクステンド値取得
 */
function GetBombExtendPoint(){
	if( IsCommonDataAreaExists( "OFT" ) ){
		return GetCommonDataDefaultEx( "OFT", "BombExtendPoint", 0 );
	}else{
		return 0;
	}
}

/**
 * ボムエクステンドノルマ値設定
 * 
 * @param { Integer } point 設定するボムエクステンドノルマ値
 */
function SetBombExtendNormaPoint( point ){
	SetCommonDataEx( "OFT", "BombExtendNormaPoint", point );
}

/**
 * ボムエクステンドノルマ値取得
 */
function GetBombExtendNormaPoint(){
	if( IsCommonDataAreaExists( "OFT" ) ){
		return GetCommonDataDefaultEx( "OFT", "BombExtendNormaPoint", 0 );
	}else{
		return 0;
	}
}

/**
 * スコア値ゲージ加算
 * 
 * @param { Integer } point 加算するスコア値
 */
function AddScorePoint( point ){
	let gauge = GetScorePoint() + point;
	if( gauge > ScorePoint_Max ){
		gauge = ScorePoint_Max;
	}
	SetCommonDataEx( "OFT", "ScorePoint", gauge );
}

/**
 * スコア値ゲージ減算
 * 
 * @param { Integer } point 減算するスコア値
 */
function SubScorePoint( point ){
	let gauge = GetScorePoint() - point;
	if( gauge < 1 ){
		gauge = 1;
	}
	SetCommonDataEx( "OFT", "ScorePoint", gauge );
}

/**
 * スコア値取得
 */
function GetScorePoint(){
	if( IsCommonDataAreaExists( "OFT" ) ){
		return GetCommonDataDefaultEx( "OFT", "ScorePoint", 1 );
	}else{
		return 1;
	}
}
