#ifndef __AIEVENTHPP__ #define __AIEVENTHPP__ enum EVENTTYPE {REACH_EVENT,RANDOM_EVENT,TIME_EVENT,TIMEOUT_EVENT,ATTACKED_EVENT,INTRUDER_EVENT, WALKBY_EVENT,SPEAKTO_EVENT,PATHBLOCK_EVENT,TASKDONE_EVENT,PROTECTEDATTACKED_EVENT}; typedef struct { } ReachEventData; typedef struct { int rollLess; // percentile system } RandomEventData; typedef struct { int timePeriod; } TimeEventData; typedef struct { int timePeriod; int startTime; } TimeoutEventData; typedef struct { } AttackedEventData; typedef struct { } IntruderEventData; typedef struct { } WalkByEventData; typedef struct { } SpeakToEventData; typedef struct { } PathBlockEventData; typedef struct { } TaskDoneEventData; typedef struct { } ProtectedAttackedEventData; typedef union { ReachEventData reachData; RandomEventData randomData; TimeEventData timeData; TimeoutEventData timeoutData; AttackedEventData attackedData; IntruderEventData intruderData; WalkByEventData walkbyData; SpeakToEventData speaktoData; PathBlockEventData pathblockData; TaskDoneEventData taskdoneData; ProtectedAttackedEventData protectedattackedData; } EventUnion; typedef struct EventEntry{ EVENTTYPE eventType; int newStateID; EventUnion eventData; EventEntry *next,*prev; } EventEntry; #endif