// ショット等に関するその他のインクルード専用スクリプトです
// 汎用関数などがここに格納されます

//---------------------------------------------------------------------------------

//汎用関数 -trueを返す確率-
//   @prob		: trueが出る確率
//   @return		: 確率によりtrueが出たかfalseが出たか 
function fPer(let prob){
	if(rand(0,100) < prob){
		return true;
	}else{
		return false;
	}
}

//汎用関数 -壁に当たっているかの判定-
//   @nX,nY		: 判定する座標
//   @rad		: 判定の範囲内とする半径
//   @return		: どの壁と反射しているか [1]=>左 [2]=>上 [3]=>右 [4]=>下 [0]=>どの壁にも当たっていない (ただし優先度順)
function IsStageClip(let nX,let nY,let rad){
	//左端かどうか
	if(nX-rad < GetClipMinX){
		return 1;
	}
	//上端かどうか
	if(nY-rad < GetClipMinY){
		return 2;
	}
	//右端かどうか
	if(nX+rad > GetClipMaxX){
		return 3;
	}
	//下端かどうか
	if(nY+rad > GetClipMaxY){
		return 4;
	}else{
		return 0;
	}
}

//汎用関数 -フラグを反転させる関数-
//   @flag		: trueまたはfalse
function Toggle(let flag){
	//それだったら単純に!で否定しちゃえばいいじゃない・・・
	//って気付いたのはこの関数を作った後。これはひどい。
	return !flag;
}

//汎用関数 -速度と角度からＸ速度を求める-
//   @speed		: 速度
//   @angle		: 角度
function SAtoS_X(let speed,let angle){
	return cos(angle)*speed;
}

//汎用関数 -速度と角度からＹ速度を求める-
//   @speed		: 速度
//   @angle		: 角度
function SAtoS_Y(let speed,let angle){
	return sin(angle)*speed;
}

//汎用関数 -最小値を返す-
//   @value1		: 値１
//   @value2		: 値２
function Min(let value1, let value2){
	return [value1, value2][value1 >= value2];
}

//汎用関数 -最大値を返す-
//   @value1		: 値１
//   @value2		: 値２
function Max(let value1, let value2){
	return [value1, value2][value1 <= value2];
}

//汎用関数 -0〜360のランダムな値-
function rand360(){
	return rand(0, 360);
}

//汎用関数 -距離計算-
function Dist(let nX1, let nY1, let nX2, let nY2){
	return ((nX2 - nX1)^2 + (nY2 - nY1)^2 )^0.5;
}

//汎用関数 -ベクトルの加算：距離-
function VectorAdd_r(let r1, let t1, let r2, let t2){
	let rX = cos(t1)*r1 + cos(t2)*r2;
	let rY = sin(t1)*r1 + sin(t2)*r2;
	return ((rX)^2 + (rY)^2 )^0.5;
}

//汎用関数 -ベクトルの加算：角度-
function VectorAdd_t(let r1, let t1, let r2, let t2){
	let rX = cos(t1)*r1 + cos(t2)*r2;
	let rY = sin(t1)*r1 + sin(t2)*r2;
	return atan2(rY,rX);
}

//汎用関数 -Ｘ速度とＹ速度から速度を求める-
//   @speed		: 速度
//   @angle		: 角度
function SXYtoS(let speedX,let speedY){
	return (speedX^2 + speedY^2)^0.5;
}

//汎用関数 -ユーザーキーが押されるまで停止-
function SteptoUserKey(){
	while(GetKeyState(VK_USER) != KEY_PUSH){ yield; }
}
