author | Darkvater |
Tue, 13 Dec 2005 21:21:57 +0000 | |
changeset 2749 | c9312a4a1efe |
parent 2721 | b141131f58b1 |
child 2759 | 9a5079782c67 |
permissions | -rw-r--r-- |
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 | 60 |
|
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 */ |