ai/ai_event.h
author truelight
Tue, 06 Dec 2005 17:05:14 +0000
changeset 2720 135d5c0aa96c
parent 2718 4e8f9e89af80
child 2721 806d0f4ddf32
permissions -rw-r--r--
(svn r3265) -Fix: partly reverted back r3263, because MSVC, who else, doesn't support variadic macros............
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 */
2718
4e8f9e89af80 (svn r3263) -Fix: use () around 'variables' in macros, gives less crashes ;)
truelight
parents: 2715
diff changeset
    10
#	define ai_event(player, event, ...) \
4e8f9e89af80 (svn r3263) -Fix: use () around 'variables' in macros, gives less crashes ;)
truelight
parents: 2715
diff changeset
    11
		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
    12
			gpmi_event(_ai_player[(player)].module, (event), ##__VA_ARGS__)
2690
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    13
2718
4e8f9e89af80 (svn r3263) -Fix: use () around 'variables' in macros, gives less crashes ;)
truelight
parents: 2715
diff changeset
    14
#else /* GPMI */
2690
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    15
2720
135d5c0aa96c (svn r3265) -Fix: partly reverted back r3263, because MSVC, who else, doesn't support variadic macros............
truelight
parents: 2718
diff changeset
    16
#	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
    17
	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
    18
#	else
135d5c0aa96c (svn r3265) -Fix: partly reverted back r3263, because MSVC, who else, doesn't support variadic macros............
truelight
parents: 2718
diff changeset
    19
	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
    20
#	endif
135d5c0aa96c (svn r3265) -Fix: partly reverted back r3263, because MSVC, who else, doesn't support variadic macros............
truelight
parents: 2718
diff changeset
    21
#	define ai_event empty_function
2690
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    22
#endif /* GPMI */
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    23
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    24
/* 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
    25
 *  events here, and automaticly they work in OpenTTD without including
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    26
 *  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
    27
#ifdef DEF_EVENTS
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    28
#	define DEF_EVENTS
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    29
#	define INITIAL_SET = -1
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    30
#else
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    31
#	define DEF_EVENTS extern
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    32
#	define INITIAL_SET
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    33
#endif /* DEF_EVENTS */
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    34
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    35
/* ------------ 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
    36
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
    37
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
    38
2690
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    39
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
    40
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
    41
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    42
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
    43
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
    44
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    45
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
    46
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
    47
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    48
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
    49
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
    50
2f810b43cb7f (svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff changeset
    51
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
    52
d059af96a25b (svn r3253) -Add: add BuildRoad event for AIs
truelight
parents: 2694
diff changeset
    53
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
    54
/* ----------------- End of list ------------------ */
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
#endif /* AI_EVENT */