(svn r3204) Make handling of clicking on vehicles a bit less ugly by avoiding function declarations in .c files and unnecessary indirection
authortron
Wed, 16 Nov 2005 12:52:01 +0000
changeset 2662 42c11a1a0a4b
parent 2661 6d1fe353bcb1
child 2663 f3e7d6d3e3a1
(svn r3204) Make handling of clicking on vehicles a bit less ugly by avoiding function declarations in .c files and unnecessary indirection
aircraft_cmd.c
disaster_cmd.c
roadveh_cmd.c
ship_cmd.c
train_cmd.c
viewport.c
--- a/aircraft_cmd.c	Wed Nov 16 12:37:22 2005 +0000
+++ b/aircraft_cmd.c	Wed Nov 16 12:52:01 2005 +0000
@@ -538,10 +538,6 @@
 	return cost;
 }
 
-void HandleClickOnAircraft(Vehicle *v)
-{
-	ShowAircraftViewWindow(v);
-}
 
 static void CheckIfAircraftNeedsService(Vehicle *v)
 {
--- a/disaster_cmd.c	Wed Nov 16 12:37:22 2005 +0000
+++ b/disaster_cmd.c	Wed Nov 16 12:52:01 2005 +0000
@@ -690,10 +690,6 @@
 	_disastervehicle_tick_procs[v->subtype](v);
 }
 
-void HandleClickOnDisasterVeh(Vehicle *v)
-{
-	// not used
-}
 
 void OnNewDay_DisasterVehicle(Vehicle *v)
 {
--- a/roadveh_cmd.c	Wed Nov 16 12:37:22 2005 +0000
+++ b/roadveh_cmd.c	Wed Nov 16 12:52:01 2005 +0000
@@ -1733,10 +1733,6 @@
 	InvalidateWindowClasses(WC_ROADVEH_LIST);
 }
 
-void HandleClickOnRoadVeh(Vehicle *v)
-{
-	ShowRoadVehViewWindow(v);
-}
 
 void RoadVehiclesYearlyLoop(void)
 {
--- a/ship_cmd.c	Wed Nov 16 12:37:22 2005 +0000
+++ b/ship_cmd.c	Wed Nov 16 12:52:01 2005 +0000
@@ -801,10 +801,6 @@
 	ShipController(v);
 }
 
-void HandleClickOnShip(Vehicle *v)
-{
-	ShowShipViewWindow(v);
-}
 
 void ShipsYearlyLoop(void)
 {
--- a/train_cmd.c	Wed Nov 16 12:37:22 2005 +0000
+++ b/train_cmd.c	Wed Nov 16 12:52:01 2005 +0000
@@ -3630,11 +3630,6 @@
 	}
 }
 
-void HandleClickOnTrain(Vehicle *v)
-{
-	if (v->subtype != TS_Front_Engine) v = GetFirstVehicleInChain(v);
-	ShowTrainViewWindow(v);
-}
 
 void InitializeTrains(void)
 {
--- a/viewport.c	Wed Nov 16 12:37:22 2005 +0000
+++ b/viewport.c	Wed Nov 16 12:52:01 2005 +0000
@@ -4,6 +4,7 @@
 #include "openttd.h"
 #include "debug.h"
 #include "functions.h"
+#include "gui.h"
 #include "spritecache.h"
 #include "strings.h"
 #include "table/sprites.h"
@@ -1696,25 +1697,28 @@
 	if (pt.x != -1) ClickTile(TileVirtXY(pt.x, pt.y));
 }
 
-void HandleClickOnTrain(Vehicle *v);
-void HandleClickOnRoadVeh(Vehicle *v);
-void HandleClickOnAircraft(Vehicle *v);
-void HandleClickOnShip(Vehicle *v);
-static void HandleClickOnSpecialVeh(Vehicle *v) {}
-void HandleClickOnDisasterVeh(Vehicle *v);
-typedef void OnVehicleClickProc(Vehicle *v);
-static OnVehicleClickProc * const _on_vehicle_click_proc[6] = {
-	HandleClickOnTrain,
-	HandleClickOnRoadVeh,
-	HandleClickOnShip,
-	HandleClickOnAircraft,
-	HandleClickOnSpecialVeh,
-	HandleClickOnDisasterVeh,
+
+static void SafeShowTrainViewWindow(const Vehicle* v)
+{
+  if (v->subtype != TS_Front_Engine) v = GetFirstVehicleInChain(v);
+  ShowTrainViewWindow(v);
+}
+
+static void Nop(const Vehicle* v) {}
+
+typedef void OnVehicleClickProc(const Vehicle* v);
+static OnVehicleClickProc* const _on_vehicle_click_proc[] = {
+	SafeShowTrainViewWindow,
+	ShowRoadVehViewWindow,
+	ShowShipViewWindow,
+	ShowAircraftViewWindow,
+	Nop, // Special vehicles
+	Nop  // Disaster vehicles
 };
 
 void HandleViewportClicked(const ViewPort *vp, int x, int y)
 {
-	Vehicle* v;
+	const Vehicle* v;
 
 	if (CheckClickOnTown(vp, x, y)) return;
 	if (CheckClickOnStation(vp, x, y)) return;