ai/ai_event.h
author truelight
Wed, 30 Nov 2005 16:10:19 +0000
changeset 2706 d31bd0aa0096
parent 2694 99d88a9d5337
child 2709 d059af96a25b
permissions -rw-r--r--
(svn r3250) -Fix: AIs weren't uninitialized when a new game was loaded
2690
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
     1
#ifndef AI_EVENT
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
     2
#define AI_EVENT
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
     3
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
     4
/* Make the ai_event macro set correctly */
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
     5
#ifdef GPMI
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
     6
#	include <gpmi.h>
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
     7
#	include "ai.h"
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
     8
2f810b43cb7f (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 */
2f810b43cb7f (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
2f810b43cb7f (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 */
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    12
#	define ai_event(player, params...) \
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    13
		if (player < MAX_PLAYERS && _ai_player[player].module != NULL) \
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    14
			gpmi_event(_ai_player[player].module, params)
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    15
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    16
#else
2f810b43cb7f (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)
2f810b43cb7f (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
2f810b43cb7f (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 :)
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    20
 *  Ugly, I know, but it works! */
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    21
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    22
#	ifdef DEF_EVENTS
2694
99d88a9d5337 (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
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    24
#	else
2694
99d88a9d5337 (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
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    26
#	endif
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    27
#	define ai_event empty_function
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    28
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    29
#endif /* GPMI */
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    30
2f810b43cb7f (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
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    32
 *  events here, and automaticly they work in OpenTTD without including
2f810b43cb7f (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 ;) */
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    34
#ifdef DEF_EVENTS
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    35
#	define DEF_EVENTS
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    36
#	define INITIAL_SET = -1
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    37
#else
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    38
#	define DEF_EVENTS extern
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    39
#	define INITIAL_SET
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    40
#endif /* DEF_EVENTS */
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    41
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    42
/* ------------ All available events -------------- */
2f810b43cb7f (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)
2f810b43cb7f (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)
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    45
2f810b43cb7f (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)
2f810b43cb7f (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)
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    48
2f810b43cb7f (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)
2f810b43cb7f (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)
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    51
2f810b43cb7f (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)
2f810b43cb7f (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)
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    54
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    55
DEF_EVENTS int ottd_Event_GiveOrder										INITIAL_SET; // (vehicle_index)
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    56
/* ----------------- End of list ------------------ */
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    57
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    58
#endif /* AI_EVENT */