ai/ai_event.h
author truelight
Tue, 06 Dec 2005 17:12:19 +0000
changeset 2721 806d0f4ddf32
parent 2720 135d5c0aa96c
child 2759 c2a6fd12b41f
permissions -rw-r--r--
(svn r3266) -Codechange: added comments for why the revert of r3625 inside the code.
Also, I forgot to tnx GraphiteNL for his help with this problem. Tnx GraphiteNL :)
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 */
2721
806d0f4ddf32 (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).
806d0f4ddf32 (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
806d0f4ddf32 (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
806d0f4ddf32 (svn r3266) -Codechange: added comments for why the revert of r3625 inside the code.
truelight
parents: 2720
diff changeset
    13
 *   tell us ASAP! */
2718
4e8f9e89af80 (svn r3263) -Fix: use () around 'variables' in macros, gives less crashes ;)
truelight
parents: 2715
diff changeset
    14
#	define ai_event(player, event, ...) \
4e8f9e89af80 (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) \
4e8f9e89af80 (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
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    17
2718
4e8f9e89af80 (svn r3263) -Fix: use () around 'variables' in macros, gives less crashes ;)
truelight
parents: 2715
diff changeset
    18
#else /* GPMI */
2690
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    19
2721
806d0f4ddf32 (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,
806d0f4ddf32 (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
806d0f4ddf32 (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!
806d0f4ddf32 (svn r3266) -Codechange: added comments for why the revert of r3625 inside the code.
truelight
parents: 2720
diff changeset
    23
 */
2720
135d5c0aa96c (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
135d5c0aa96c (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, ...) {}
135d5c0aa96c (svn r3265) -Fix: partly reverted back r3263, because MSVC, who else, doesn't support variadic macros............
truelight
parents: 2718
diff changeset
    26
#	else
135d5c0aa96c (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, ...);
135d5c0aa96c (svn r3265) -Fix: partly reverted back r3263, because MSVC, who else, doesn't support variadic macros............
truelight
parents: 2718
diff changeset
    28
#	endif
135d5c0aa96c (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
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    30
#endif /* GPMI */
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    31
2f810b43cb7f (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
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    33
 *  events here, and automaticly they work in OpenTTD without including
2f810b43cb7f (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 ;) */
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    35
#ifdef DEF_EVENTS
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    36
#	define DEF_EVENTS
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    37
#	define INITIAL_SET = -1
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    38
#else
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    39
#	define DEF_EVENTS extern
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    40
#	define INITIAL_SET
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    41
#endif /* DEF_EVENTS */
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    42
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    43
/* ------------ All available events -------------- */
2715
0ad451d9264b (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)
0ad451d9264b (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)
0ad451d9264b (svn r3260) -Add: add events for AIs to check if a command execution failed or succeeded
truelight
parents: 2709
diff changeset
    46
2690
2f810b43cb7f (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)
2f810b43cb7f (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)
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    49
2f810b43cb7f (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)
2f810b43cb7f (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)
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    52
2f810b43cb7f (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)
2f810b43cb7f (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)
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    55
2f810b43cb7f (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)
2f810b43cb7f (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)
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    58
2f810b43cb7f (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
d059af96a25b (svn r3253) -Add: add BuildRoad event for AIs
truelight
parents: 2694
diff changeset
    60
d059af96a25b (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
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    62
/* ----------------- End of list ------------------ */
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    63
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    64
#endif /* AI_EVENT */