/***************************************************************/
//
//
//		DirectX	[ai.h]
//
//										Author	kazuki tanaka
//										Date	2016 07/15
/*---------------------------------------------------------------
■Update : 2016/07/15
			AIの部品的な扱いとして一つ一つのインライン関数を定義
/*-------------------------------------------------------------*/
#ifndef _AI_H_

#define _AI_H_

/*---------------------------------------------------------------
	インクルードファイル
---------------------------------------------------------------*/
#include "main.h"
#include "enemy.h"
#include "bullet.h"

#include "player.h"		// 敵がプレイヤーの所在を知っているときなどに使用
						// システム的な判断で距離を計測する際にも使う
#include "game_equation.h"

/*---------------------------------------------------------------
	インクルードファイル
---------------------------------------------------------------*/

// デフォルトAI
void Default_AI (  const LPD3DXVECTOR2 center , const float *length, int loopCount );

// カスタムAI
void Custom_AI (  const LPD3DXVECTOR2 center , const float *length, int loopCount );



////  AI COMPONENTS  /////////////////


// プレイヤーを探すAI
inline void AI_Search( void )
{




}

// プレイヤーを物理攻撃するAI
inline void AI_Attack( void )
{



}

// プレイヤーを追うAI
inline void AI_Chase( void )
{


}

// プレイヤーに対して回り込むAI
inline void AI_GoAround( void )
{

}

// プレイヤーから逃げるAI
inline void AI_Run( void )
{

}

// プレイヤーから距離をとるAI
inline void AI_OpeningTheDistance( void )
{

}

// 弾を撃つAI
inline void AI_ShotBullet( void )
{



}

// 弾をよけるAI
inline void AI_FendOffBullet( void )
{


}

////  SIMPLE COMPONENTS  ////////////////

// 水平移動を行うAI
inline void AI_HorizontalMovement( void )
{

	static bool flag = false;

	D3DXVECTOR2* pos = GetEnemyLocate( );

	// 移動処理
	if( flag ){
	
		pos->x -= 3;

	}
	else{
	
		pos->x += 3;

	}

	// フラグ管理
	if( __ObjectScreenOutSimple( pos ) ){
		
		if( flag ){

			flag = false;
		}
		else{
		
			flag = true;
		}
	}


}

// 垂直移動を行うAI
inline void AI_VerticalMigration( void )
{

	static bool flag = false;

	D3DXVECTOR2* pos = GetEnemyLocate( );

	// 移動処理
	if( flag ){
	
		pos->y -= 3;

	}
	else{
	
		pos->y += 3;

	}

	// フラグ管理
	if( __ObjectScreenOutSimple( pos ) ){
		
		if( flag ){

			flag = false;
		}
		else{
		
			flag = true;
		}
	}


}



#endif	// _AI_H_
