#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