#ifndef __AICOMBATHPP__
#define __AICOMBATHPP__


enum HTHTYPE { HIGHSWING_HTH,LOWSWING_HTH,HIGHBLOCK_HTH,LOWBLOCK_HTH,SIDESTEP_HTH,
		HIGHKICK_HTH,LOWKICK_HTH,MOVEBACK_HTH,MOVETHROUGH_HTH,CRUSH_HTH};

enum RANGETYPE { CHARGE_RANGE,ATTACK_RANGE,FLANK_RANGE,COVER_RANGE,KNEEL_RANGE,PRONE_RANGE};

// hth structures for data
typedef struct 
{
} highSwingData;
typedef struct 
{
} lowSwingData;
typedef struct 
{
} highBlockData;
typedef struct 
{
} lowBlockData;
typedef struct 
{
} sideStepData;
typedef struct 
{
} highKickData;
typedef struct 
{
} lowKickData;
typedef struct 
{
} moveBackData;
typedef struct 
{
} moveThroughData;
typedef struct 
{
} crushData;


// ranged structures for data
typedef struct 
{
} chargeData;
typedef struct 
{
} attackData;
typedef struct 
{
	BOOL left;
} flankData;
typedef struct 
{
} coverData;
typedef struct 
{
} kneelData;
typedef struct 
{
} proneData;

typedef union {
highSwingData HighSwingHTHData;
lowSwingData LowSwingHTHData;
highBlockData HighBlockHTHData;
lowBlockData LowBlockHTHData;
sideStepData SideStepHTHData;
highKickData HighKickHTHData;
lowKickData LowKickHTHData;
moveBackData MoveBackHTHData;
moveThroughData MoveThroughHTHData;
crushData CrushHTHData;
} HTHUnion;

typedef union {
chargeData ChargeRangeData;
attackData AttackRangeData;
flankData FlankRangeData;
coverData CoverRangeData;
kneelData KneelRangeData;
proneData ProneRangeData;
} RangeUnion;

class AICombat  {

public:
	AICombat (AI *parent);
	~AICombat (void);


	virtual CommandEntry *Think (double value,CommandEntry *lastcom);  // if need to remove then delete
};

#endif