ai/ai_event.h
author truelight
Mon, 05 Dec 2005 12:27:58 +0000
changeset 2715 d406c6ed777e
parent 2709 f3c30cf71e6e
child 2718 687e5c297db8
permissions -rw-r--r--
(svn r3260) -Add: add events for AIs to check if a command execution failed or succeeded
2690
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
     1
#ifndef AI_EVENT
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
     2
#define AI_EVENT
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
     3
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
     4
/* Make the ai_event macro set correctly */
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
     5
#ifdef GPMI
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
     6
#	include <gpmi.h>
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
     7
#	include "ai.h"
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
     8
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
     9
/* This is how we call events (with safety-check) to GPMI */
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    10
/* XXX -- This macro (vararg macro) isn't supported on old GCCs, but GPMI
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    11
 *         is using them too, so it isn't a real problem, yet */
2715
d406c6ed777e (svn r3260) -Add: add events for AIs to check if a command execution failed or succeeded
truelight
parents: 2709
diff changeset
    12
#	define ai_event(player, event, params...) \
2690
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    13
		if (player < MAX_PLAYERS && _ai_player[player].module != NULL) \
2715
d406c6ed777e (svn r3260) -Add: add events for AIs to check if a command execution failed or succeeded
truelight
parents: 2709
diff changeset
    14
			gpmi_event(_ai_player[player].module, event, params)
2690
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    15
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    16
#else
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    17
/* If GPMI isn't loaded, don't do a thing with the events (for now at least)
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    18
 *  Because old GCCs don't support vararg macros, and OTTD does support those
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    19
 *  GCCs, we need something tricky to ignore the events... and this is the solution :)
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    20
 *  Ugly, I know, but it works! */
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    21
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    22
#	ifdef DEF_EVENTS
2694
9b5f6f369ab3 (svn r3236) - Fix: warnings about 'CDECL must be used with ...' on VS6
Darkvater
parents: 2690
diff changeset
    23
	void CDECL empty_function(PlayerID player, int event, ...) {}
2690
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    24
#	else
2694
9b5f6f369ab3 (svn r3236) - Fix: warnings about 'CDECL must be used with ...' on VS6
Darkvater
parents: 2690
diff changeset
    25
	extern void CDECL empty_function(PlayerID player, int event, ...);
2690
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    26
#	endif
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    27
#	define ai_event empty_function
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    28
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    29
#endif /* GPMI */
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    30
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    31
/* To make our life a bit easier; you now only have to define new
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    32
 *  events here, and automaticly they work in OpenTTD without including
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    33
 *  the ottd_event package. Just because of some lovely macro-shit ;) */
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    34
#ifdef DEF_EVENTS
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    35
#	define DEF_EVENTS
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    36
#	define INITIAL_SET = -1
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    37
#else
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    38
#	define DEF_EVENTS extern
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    39
#	define INITIAL_SET
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    40
#endif /* DEF_EVENTS */
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    41
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    42
/* ------------ All available events -------------- */
2715
d406c6ed777e (svn r3260) -Add: add events for AIs to check if a command execution failed or succeeded
truelight
parents: 2709
diff changeset
    43
DEF_EVENTS int ottd_Event_CommandFailed								INITIAL_SET; // (tile, unique_id)
d406c6ed777e (svn r3260) -Add: add events for AIs to check if a command execution failed or succeeded
truelight
parents: 2709
diff changeset
    44
DEF_EVENTS int ottd_Event_CommandSucceeded						INITIAL_SET; // (tile, unique_id)
d406c6ed777e (svn r3260) -Add: add events for AIs to check if a command execution failed or succeeded
truelight
parents: 2709
diff changeset
    45
2690
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    46
DEF_EVENTS int ottd_Event_BuildStation								INITIAL_SET; // (station_index, station_tile)
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    47
DEF_EVENTS int ottd_Event_BuildRoadStation						INITIAL_SET; // (station_index, station_tile)
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    48
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    49
DEF_EVENTS int ottd_Event_BuildDepot									INITIAL_SET; // (depot_index, depot_tile)
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    50
DEF_EVENTS int ottd_Event_BuildRoadDepot							INITIAL_SET; // (depot_index, depot_tile)
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    51
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    52
DEF_EVENTS int ottd_Event_BuildVehicle								INITIAL_SET; // (vehicle_index, depot_tile)
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    53
DEF_EVENTS int ottd_Event_BuildRoadVehicle						INITIAL_SET; // (vehicle_index, depot_tile)
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    54
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    55
DEF_EVENTS int ottd_Event_VehicleEnterDepot						INITIAL_SET; // (vehicle_index, depot_tile)
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    56
DEF_EVENTS int ottd_Event_RoadVehicleEnterDepot				INITIAL_SET; // (vehicle_index, depot_tile)
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    57
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    58
DEF_EVENTS int ottd_Event_GiveOrder										INITIAL_SET; // (vehicle_index)
2709
f3c30cf71e6e (svn r3253) -Add: add BuildRoad event for AIs
truelight
parents: 2694
diff changeset
    59
f3c30cf71e6e (svn r3253) -Add: add BuildRoad event for AIs
truelight
parents: 2694
diff changeset
    60
DEF_EVENTS int ottd_Event_BuildRoad										INITIAL_SET; // (road_tile, road_pieces)
2690
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    61
/* ----------------- End of list ------------------ */
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    62
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    63
#endif /* AI_EVENT */