author | truelight |
Mon, 05 Dec 2005 12:27:58 +0000 | |
changeset 2715 | d406c6ed777e |
parent 2709 | f3c30cf71e6e |
child 2718 | 687e5c297db8 |
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 */ |
5a4ed6db4493
(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 |
5a4ed6db4493
(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 */ |
2715
d406c6ed777e
(svn r3260) -Add: add events for AIs to check if a command execution failed or succeeded
truelight
parents:
2709
diff
changeset
|
12 |
# define ai_event(player, event, params...) \ |
2690
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
13 |
if (player < MAX_PLAYERS && _ai_player[player].module != NULL) \ |
2715
d406c6ed777e
(svn r3260) -Add: add events for AIs to check if a command execution failed or succeeded
truelight
parents:
2709
diff
changeset
|
14 |
gpmi_event(_ai_player[player].module, event, params) |
2690
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
15 |
|
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
16 |
#else |
5a4ed6db4493
(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) |
5a4ed6db4493
(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 |
5a4ed6db4493
(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 :) |
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
20 |
* Ugly, I know, but it works! */ |
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
21 |
|
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
22 |
# ifdef DEF_EVENTS |
2694
9b5f6f369ab3
(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
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
24 |
# else |
2694
9b5f6f369ab3
(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
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
26 |
# endif |
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
27 |
# define ai_event empty_function |
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
28 |
|
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
29 |
#endif /* GPMI */ |
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
30 |
|
5a4ed6db4493
(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 |
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
32 |
* events here, and automaticly they work in OpenTTD without including |
5a4ed6db4493
(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 ;) */ |
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
34 |
#ifdef DEF_EVENTS |
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
35 |
# define DEF_EVENTS |
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
36 |
# define INITIAL_SET = -1 |
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
37 |
#else |
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
38 |
# define DEF_EVENTS extern |
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
39 |
# define INITIAL_SET |
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
40 |
#endif /* DEF_EVENTS */ |
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
41 |
|
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
42 |
/* ------------ 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
|
43 |
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
|
44 |
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
|
45 |
|
2690
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
46 |
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
|
47 |
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
|
48 |
|
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
49 |
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
|
50 |
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
|
51 |
|
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
52 |
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
|
53 |
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
|
54 |
|
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
55 |
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
|
56 |
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
|
57 |
|
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
58 |
DEF_EVENTS int ottd_Event_GiveOrder INITIAL_SET; // (vehicle_index) |
2709 | 59 |
|
60 |
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
|
61 |
/* ----------------- End of list ------------------ */ |
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
62 |
|
5a4ed6db4493
(svn r3232) -Add: implemented the event-system for AIs
truelight
parents:
diff
changeset
|
63 |
#endif /* AI_EVENT */ |