//============================================
//XNvgpCu REMY
//{֐Cu
//Cȗ̊֐ĂяôœǂݍݕK{
//============================================



//Cuo[W擾=======================================
function REMY_System_GetLibVersion()
{
	return _VERSION;
}//end functoin


//G[\===========================================
//^XNdNG[
//CûݎQ
function private_REMY_ErrorDouble(let name)
{
	RaiseError( name ~ " ̓dNł","ERROR");
}//end function



//͈͊O=================================

//ȈՔ
//x,y:肷鐔l
//dist:ʘg̋
//dist̐lȂlp̒xAy݂邩Ԃ
function REMY_Math_IsOutOfClip(let x, let y, let dist)
{
	return REMY_Math_IsOutOfClipEx(x, y, [GetClipMinX() + dist, GetClipMinY() + dist, GetClipMaxX()-dist, GetClipMaxY()-dist]);

}//end function

//x,y:肷鐔l
//rect: [min_x,min_y,max_x,max_y] g
//(min_x,min_y,max_x,max_y)̎lpxAy݂邩Ԃ
function REMY_Math_IsOutOfClipEx(let x, let y, let rect)
{
	
	return (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3]);
}//end function



//=================================

//x,y:肷鐔l
//dist:a
function REMY_Math_IsIntersectWithPlayer(let x, let y, let dist)
{
	let dist_x = GetPlayerX()-x;
	let dist_y = GetPlayerY()-y;
	return (dist_x * dist_x + dist_y * dist_y < dist * dist)
}

//擾------------------------------
//x,y:肷鐔l
function REMY_Math_DistanceToPlayer(let x, let y)
{
	let dist_x = GetPlayerX()-x;
	let dist_y = GetPlayerY()-y;
	return (dist_x * dist_x + dist_y * dist_y)^0.5
}

//擾------------------------------
//val:肷鐔l
//Ȃ1AȂ-1A[Ȃ0Ԃ
function REMY_Math_Sign(let val)
{
	if(val > 0){ return 1;}
	else if(val < 0){ return -1;}
	return 0;
}//end function


//l臒l`FbN------------------------------


//␳
//val:肷鐔l
//min,max:őlAŏl
//is_loop:l[v邩itrueƍőŏŃ[vAfalseƍőAŏŎ~܂܂j
//l͈͓ɕ␳ĕԂ
function REMY_Math_Limit(let val, let min, let max, let is_loop)
{
	if( !is_loop ){
		if(val < min){ return min; }
		else if(val > max){ return max; }
	}else{
		if(val < min){ return max - (min - val + 1)%(max-min); }
		else if(val > max){ return min + (val - max -1)%(max-min); }		
	}
	return val; 

}//end function

//őlԂ
function REMY_Math_Max(let val1, let val2)
{
	if(val1 < val2){ return val2; }
	return val1; 

}//end function

//ŏlԂ
function REMY_Math_Min(let val1, let val2)
{
	if(val1 > val2){ return val2; }
	return val1; 

}//end function

//␳^UlԂ
function REMY_Math_IsInLimit(let val, let min, let max)
{
	return (val >= min && val <= max );
}//end function


//̐̌Ԃ
//Pȉ̏ꍇ͂PC܂͍ŏȉ̏ꍇ͍ŏԂ
function REMY_Math_IntLength(let val, let min)
{
	let leng;

	if(val < 1){ leng = 1; }
	else if(val < 10 ^ min){leng = min;}
	else{leng = trunc(log10(val)) + 1;}

	return leng;

}//end function


//݂̐̂𕶎ɂĕԂ
function REMY_Math_IntToString(let val, let min)
{
	let str = ToString(val);
	let len = REMY_Math_IntLength(val, 1);
	if(len < min)
	{
		ascent(i in 0..(min-len)){str = "0" ~ str ; }
		return slice(str, 0, min);
	}
	return slice(str, 0, len);

}//end function


//px`FbN------------------------------

//angle:px
//-360720܂ł̊px0-360ɕ␳ĕԂ
function REMY_Math_LimitedAngle(let angle)
{
	if (angle>=360)		{ return (angle - 360); }
	else if (angle<0)	{ return ( angle + 360); }
	return angle;

}//end function


//px擾------------------------------

//angle:px
function REMY_Math_AngleToPlayer(let x, let y)
{
	return REMY_Math_LimitedAngle( atan2(GetPlayerY()-y, GetPlayerX()-x) );
}//end function




//xSE^XN------------------------------

//se:炷SE
//delay:x点t[
task REMY_SE_Delay(let se, let delay)
{
	loop(delay){yield;}
	PlaySE(se);
	return;

}//end task

