ai/ai_event.h
author Darkvater
Tue, 13 Dec 2005 21:21:57 +0000
changeset 2749 c9312a4a1efe
parent 2721 b141131f58b1
child 2759 9a5079782c67
permissions -rw-r--r--
(svn r3294) - Fix: use INVALID_STRING_ID instead of -1.
- Fix: savegames only give back one message, show this by ignoring the first argument. Perhaps make the message more verbose in the future by adding STR_ equivalents next to the already existing debug messages.
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 */
2721
b141131f58b1 (svn r3266) -Codechange: added comments for why the revert of r3625 inside the code.
truelight
parents: 2720
diff changeset
    10
/* XXX -- This macro works only for some compilers (all GCCs for example).
b141131f58b1 (svn r3266) -Codechange: added comments for why the revert of r3625 inside the code.
truelight
parents: 2720
diff changeset
    11
 *   Some compilers on the other hand (MSCV!!) doesn't support variadic macros
b141131f58b1 (svn r3266) -Codechange: added comments for why the revert of r3625 inside the code.
truelight
parents: 2720
diff changeset
    12
 *   causing this to fail. There is no known solution. If you know any, please
b141131f58b1 (svn r3266) -Codechange: added comments for why the revert of r3625 inside the code.
truelight
parents: 2720
diff changeset
    13
 *   tell us ASAP! */
2718
687e5c297db8 (svn r3263) -Fix: use () around 'variables' in macros, gives less crashes ;)
truelight
parents: 2715
diff changeset
    14
#	define ai_event(player, event, ...) \
687e5c297db8 (svn r3263) -Fix: use () around 'variables' in macros, gives less crashes ;)
truelight
parents: 2715
diff changeset
    15
		if ((player) < MAX_PLAYERS && _ai_player[(player)].module != NULL) \
687e5c297db8 (svn r3263) -Fix: use () around 'variables' in macros, gives less crashes ;)
truelight
parents: 2715
diff changeset
    16
			gpmi_event(_ai_player[(player)].module, (event), ##__VA_ARGS__)
2690
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    17
2718
687e5c297db8 (svn r3263) -Fix: use () around 'variables' in macros, gives less crashes ;)
truelight
parents: 2715
diff changeset
    18
#else /* GPMI */
2690
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    19
2721
b141131f58b1 (svn r3266) -Codechange: added comments for why the revert of r3625 inside the code.
truelight
parents: 2720
diff changeset
    20
/* XXX -- Some compilers (like MSVC :() doesn't support variadic macros,
b141131f58b1 (svn r3266) -Codechange: added comments for why the revert of r3625 inside the code.
truelight
parents: 2720
diff changeset
    21
 *   which means we have to go to a lot of trouble to get the ai_event() ignored
b141131f58b1 (svn r3266) -Codechange: added comments for why the revert of r3625 inside the code.
truelight
parents: 2720
diff changeset
    22
 *   in case GPMI is disabled... KILL KILL KILL!
b141131f58b1 (svn r3266) -Codechange: added comments for why the revert of r3625 inside the code.
truelight
parents: 2720
diff changeset
    23
 */
2720
d4a3224c262f (svn r3265) -Fix: partly reverted back r3263, because MSVC, who else, doesn't support variadic macros............
truelight
parents: 2718
diff changeset
    24
#	ifdef DEF_EVENTS
d4a3224c262f (svn r3265) -Fix: partly reverted back r3263, because MSVC, who else, doesn't support variadic macros............
truelight
parents: 2718
diff changeset
    25
	void CDECL empty_function(PlayerID player, int event, ...) {}
d4a3224c262f (svn r3265) -Fix: partly reverted back r3263, because MSVC, who else, doesn't support variadic macros............
truelight
parents: 2718
diff changeset
    26
#	else
d4a3224c262f (svn r3265) -Fix: partly reverted back r3263, because MSVC, who else, doesn't support variadic macros............
truelight
parents: 2718
diff changeset
    27
	extern void CDECL empty_function(PlayerID player, int event, ...);
d4a3224c262f (svn r3265) -Fix: partly reverted back r3263, because MSVC, who else, doesn't support variadic macros............
truelight
parents: 2718
diff changeset
    28
#	endif
d4a3224c262f (svn r3265) -Fix: partly reverted back r3263, because MSVC, who else, doesn't support variadic macros............
truelight
parents: 2718
diff changeset
    29
#	define ai_event empty_function
2690
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    30
#endif /* GPMI */
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    31
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    32
/* 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
    33
 *  events here, and automaticly they work in OpenTTD without including
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    34
 *  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
    35
#ifdef DEF_EVENTS
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    36
#	define DEF_EVENTS
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    37
#	define INITIAL_SET = -1
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    38
#else
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    39
#	define DEF_EVENTS extern
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    40
#	define INITIAL_SET
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    41
#endif /* DEF_EVENTS */
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    42
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    43
/* ------------ 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
    44
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
    45
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
    46
2690
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    47
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
    48
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
    49
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    50
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
    51
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
    52
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    53
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
    54
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
    55
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    56
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
    57
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
    58
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    59
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
    60
f3c30cf71e6e (svn r3253) -Add: add BuildRoad event for AIs
truelight
parents: 2694
diff changeset
    61
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
    62
/* ----------------- End of list ------------------ */
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    63
5a4ed6db4493 (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    64
#endif /* AI_EVENT */