//////////////////////////////////////////////////////////////////////
//===================================================================
//M铌STG`e 8880쐬dhbgGpAjCu
//===================================================================
//////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////
//萔Aϐ`
//////////////////////////////////////////////////////////////////////
/**
*	O[oϐݒ
*/
let enmfin = false;//Gjtrue

/**
*	dޒ萔
*/
let VERYSMALL		= 0;	//ŏ
let VERYSMALL_FLUFF	= 1;	//ŏiȖсj
let SMALL		= 2;	//
let SMALL_CAP		= 3;	//iXqj
let MIDDLE		= 4;	//
let MIDDLE_RIBBON	= 5;	//i{j
let LARGE		= 6;	//
let LARGE_FLOWER	= 7;	//ij

/**
*	`W萔ij
*	n = neutral
*	r = right
*	l = left
*/
let aRECT_VS		= [ 0, 0 ];
let aRECT_VS_F		= [ 224, 0 ];
let aRECT_S		= [ 0, 32 ];
let aRECT_S_C		= [ 0, 80 ];
let aRECT_M		= [ 0, 128 ];
let aRECT_M_R		= [ 0, 176 ];
let aRECT_L		= [ 0, 224 ];
let aRECT_L_F		= [ 0, 288 ];

/**
*	̑
*/
let m_aRect = [];		//`W
let m_Rect_Length = 0;		//`ӂ̒
let m_Delay = 8;		//iR}Ԃ̃fBC
let m_Count = 0;
let m_Rect_Number = 0;		//R}ԍ
let m_aNum_Rotation_Stand = [ 0, 1, 2, 1 ];
let m_aNum_Rotation_Right = [ 4, 5, 6, 5 ];
let m_Connection = true;	//Ěq̃R}ł邩

//////////////////////////////////////////////////////////////////////
//֐
//////////////////////////////////////////////////////////////////////
/**
*	`ӂ̒ݒ
*/
function SetRectLength( let Type ){
	let Rect_Length;
	alternative( Type )
	case( VERYSMALL , VERYSMALL_FLUFF )	{ Rect_Length = 32; }
	case( SMALL	, SMALL_CAP )		{ Rect_Length = 48; }
	case( MIDDLE	, MIDDLE_RIBBON )	{ Rect_Length = 48; }
	case( LARGE	, LARGE_FLOWER )	{ Rect_Length = 64; }
	others					{ assert( 0, "d̎w肪ԈĂ܂" );}
	return( Rect_Length );
}

/**
*	Wݒ
*/
function SetRectFirst( let Type ){
	let aRect = [];
	alternative( Type )
	case( VERYSMALL )	{ aRect = aRECT_VS; }
	case( VERYSMALL_FLUFF )	{ aRect = aRECT_VS_F; }
	case( SMALL )		{ aRect = aRECT_S; }
	case( SMALL_CAP )	{ aRect = aRECT_S_C; }
	case( MIDDLE )		{ aRect = aRECT_M; }
	case( MIDDLE_RIBBON )	{ aRect = aRECT_M_R; }
	case( LARGE )		{ aRect = aRECT_L; }
	case( LARGE_FLOWER )	{ aRect = aRECT_L_F; }
	others			{ assert( 0, "d̎w肪ԈĂ܂" ); }
	return( aRect );
}

/**
*	ݒi@InitializeŌĂяoj
*/
function Initialize_Fairy( let Type ,r,g,b){
	m_Rect_Length = SetRectLength( Type );
	m_aRect = SetRectFirst( Type );
	SetLife(GetLife+100);
	CML(r,g,b);//GƂ
}

/**
*	`i@DrawLoopŖĂяoj
*/			//FIXMEFSetMovePosition03()ł̏cړɉoO
function DrawFairy( let szImage ){
	let DirectionState = trunc( GetSpeedX() );

	//
	if( DirectionState == 0 ){
		m_Rect_Number = m_aNum_Rotation_Stand[ trunc( m_Count % ( 4 * m_Delay ) / m_Delay ) ];
		m_Connection = true;
	}
	//E
	else{
		if( m_Connection ){
			m_Rect_Number = 3;	//StandRightELeftւ̌qR}ԍ = 3
			m_Connection = false;
		}
		else { m_Rect_Number = m_aNum_Rotation_Right[ trunc( m_Count % ( 4 * m_Delay ) / m_Delay ) ]; }
	}
	//`
	SetTexture( szImage );
	SetGraphicRect(
		m_aRect[ 0 ] + m_Rect_Length * m_Rect_Number,
		m_aRect[ 1 ],
		m_aRect[ 0 ] + m_Rect_Length * ( m_Rect_Number + 1 ),
		m_aRect[ 1 ] + m_Rect_Length
	);
	//Ȃ甽]
	if( DirectionState < 0 ){ SetGraphicAngle( 180, 0, 0 ); }
	DrawGraphic( GetX(), GetY() );
	//]㌳ɖ߂
	if( DirectionState < 0 ){ SetGraphicAngle( 0, 0, 0 ); }
	m_Count ++;
}
#include_function".\common.txt"