#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