ai/ai_event.h
author truelight
Wed, 23 Nov 2005 15:08:29 +0000
changeset 2690 5a4ed6db4493
child 2694 9b5f6f369ab3
permissions -rw-r--r--
(svn r3232) -Add: implemented the event-system for AIs
-Add: added several hooks (event-callbacks) for road-related-stuff
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 */
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    12
#	define ai_event(player, params...) \
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    13
		if (player < MAX_PLAYERS && _ai_player[player].module != NULL) \
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    14
			gpmi_event(_ai_player[player].module, params)
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
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    23
	void empty_function(PlayerID player, int event, ...) {}
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    24
#	else
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    25
	extern void empty_function(PlayerID player, int event, ...);
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 -------------- */
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    43
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
    44
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
    45
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    46
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
    47
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
    48
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    49
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
    50
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
    51
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    52
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
    53
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
    54
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    55
DEF_EVENTS int ottd_Event_GiveOrder										INITIAL_SET; // (vehicle_index)
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    56
/* ----------------- End of list ------------------ */
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
#endif /* AI_EVENT */