//====================================-
//スクリプト用ライブラリREMY
//移動制御関数
//敵スクリプトにタスクひとつ
//====================================


let m_MovingStatus =0;
let check_LRmove = false;
let m_MovingValue = 0;

//横移動グラフィック変更用

//state_max		移動グラフィックパターン。正面、右、左の三枚の場合は１、正面、右1、右2、左1、左2の場合は２
//count_state	グラフィック一つ当たりのカウント

//横移動でアニメーションさせる場合用のタスクです。
//ステージスクリプトでも読む込む都合上、GetSpeedX()を直書きできないので、
//REMY_SetLRMoveValue(GetSpeedX());　という一行を毎フレーム実行してください。
//横移動するとカウントが増減し、一定カウント経過でm_MoveingStatusの値が変化します
//後述の関数でm_MoveingStatusを取得し、アニメーション管理に充ててください

//また、このタスクは複数起動しないで下さい

task initialize_REMY_TaskLRMoveStatus(let state_max, let count_state){

	if(check_LRmove){
		private_REMY_ErrorDouble("TaskLRMoveStatus");
	}else{
		check_LRmove = true;
	}

	let counter = 0;
	let counter_max = count_state * state_max -1;
	loop{
		alternative( m_MovingValue )
		case(-1)	{ counter = REMY_GetNumLimited(counter-1, -counter_max ,0, false); }
		case(1)		{ counter = REMY_GetNumLimited(counter+1, 0, counter_max , false); }
		case(0)		{ counter += (REMY_GetSign( counter ) * (-1)); }

		if( counter > 0 ){
			m_MovingStatus = 1 + trunc(counter / count_state);
		}
		else if( counter < 0 ){
			m_MovingStatus = (-1) * (1 + trunc(absolute(counter) / count_state));
		}
		else{
			m_MovingStatus = 0;
		}

		yield;
	}
	return;

}//end task

function REMY_GetLRMoveStatus(){
	return m_MovingStatus;
}//end function


function REMY_SetLRMoveValue(let val){
	m_MovingValue = REMY_GetSign(val);
}//end task

