ai/ai_event.h
changeset 2690 5a4ed6db4493
child 2694 9b5f6f369ab3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ai/ai_event.h	Wed Nov 23 15:08:29 2005 +0000
@@ -0,0 +1,58 @@
+#ifndef AI_EVENT
+#define AI_EVENT
+
+/* Make the ai_event macro set correctly */
+#ifdef GPMI
+#	include <gpmi.h>
+#	include "ai.h"
+
+/* This is how we call events (with safety-check) to GPMI */
+/* XXX -- This macro (vararg macro) isn't supported on old GCCs, but GPMI
+ *         is using them too, so it isn't a real problem, yet */
+#	define ai_event(player, params...) \
+		if (player < MAX_PLAYERS && _ai_player[player].module != NULL) \
+			gpmi_event(_ai_player[player].module, params)
+
+#else
+/* If GPMI isn't loaded, don't do a thing with the events (for now at least)
+ *  Because old GCCs don't support vararg macros, and OTTD does support those
+ *  GCCs, we need something tricky to ignore the events... and this is the solution :)
+ *  Ugly, I know, but it works! */
+
+#	ifdef DEF_EVENTS
+	void empty_function(PlayerID player, int event, ...) {}
+#	else
+	extern void empty_function(PlayerID player, int event, ...);
+#	endif
+#	define ai_event empty_function
+
+#endif /* GPMI */
+
+/* To make our life a bit easier; you now only have to define new
+ *  events here, and automaticly they work in OpenTTD without including
+ *  the ottd_event package. Just because of some lovely macro-shit ;) */
+#ifdef DEF_EVENTS
+#	define DEF_EVENTS
+#	define INITIAL_SET = -1
+#else
+#	define DEF_EVENTS extern
+#	define INITIAL_SET
+#endif /* DEF_EVENTS */
+
+/* ------------ All available events -------------- */
+DEF_EVENTS int ottd_Event_BuildStation								INITIAL_SET; // (station_index, station_tile)
+DEF_EVENTS int ottd_Event_BuildRoadStation						INITIAL_SET; // (station_index, station_tile)
+
+DEF_EVENTS int ottd_Event_BuildDepot									INITIAL_SET; // (depot_index, depot_tile)
+DEF_EVENTS int ottd_Event_BuildRoadDepot							INITIAL_SET; // (depot_index, depot_tile)
+
+DEF_EVENTS int ottd_Event_BuildVehicle								INITIAL_SET; // (vehicle_index, depot_tile)
+DEF_EVENTS int ottd_Event_BuildRoadVehicle						INITIAL_SET; // (vehicle_index, depot_tile)
+
+DEF_EVENTS int ottd_Event_VehicleEnterDepot						INITIAL_SET; // (vehicle_index, depot_tile)
+DEF_EVENTS int ottd_Event_RoadVehicleEnterDepot				INITIAL_SET; // (vehicle_index, depot_tile)
+
+DEF_EVENTS int ottd_Event_GiveOrder										INITIAL_SET; // (vehicle_index)
+/* ----------------- End of list ------------------ */
+
+#endif /* AI_EVENT */