changeset 15084:d2731cec52ab draft

(svn r19710) -Codechange: deduplicate GUI code for starting/stopping vehicles
author smatz <smatz@openttd.org>
date Sat, 24 Apr 2010 14:29:30 +0000
parents 68d1f9ea65c3
children 2739f316cd5d
files src/depot_gui.cpp src/vehicle_gui.cpp src/vehicle_gui.h
diffstat 3 files changed, 15 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/src/depot_gui.cpp
+++ b/src/depot_gui.cpp
@@ -508,18 +508,9 @@
 				ShowVehicleViewWindow(v);
 				break;
 
-			case MODE_START_STOP: { // click start/stop flag
-				uint command;
-
-				switch (this->type) {
-					case VEH_TRAIN:    command = CMD_START_STOP_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_STOP_START_TRAIN);        break;
-					case VEH_ROAD:     command = CMD_START_STOP_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE); break;
-					case VEH_SHIP:     command = CMD_START_STOP_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_STOP_START_SHIP);         break;
-					case VEH_AIRCRAFT: command = CMD_START_STOP_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_STOP_START_AIRCRAFT);     break;
-					default: NOT_REACHED();
-				}
-				DoCommandP(v->tile, v->index, 0, command);
-			} break;
+			case MODE_START_STOP: // click start/stop flag
+				StartStopVehicle(v);
+				break;
 
 			default: NOT_REACHED();
 		}
--- a/src/vehicle_gui.cpp
+++ b/src/vehicle_gui.cpp
@@ -1868,6 +1868,16 @@
 	},
 };
 
+/**
+ * Executes #CMD_START_STOP_VEHICLE for given vehicle.
+ * @param v Vehicle to start/stop
+ */
+void StartStopVehicle(const Vehicle *v)
+{
+	assert(v->IsPrimaryVehicle());
+	DoCommandP(v->tile, v->index, 0, _vehicle_command_translation_table[VCT_CMD_START_STOP][v->type]);
+}
+
 /** Checks whether the vehicle may be refitted at the moment.*/
 static bool IsVehicleRefitable(const Vehicle *v)
 {
@@ -2119,8 +2129,7 @@
 					if (tile != INVALID_TILE) ScrollMainWindowToTile(tile);
 				} else {
 					/* Start/Stop */
-					DoCommandP(v->tile, v->index, 0,
-						_vehicle_command_translation_table[VCT_CMD_START_STOP][v->type]);
+					StartStopVehicle(v);
 				}
 				break;
 			case VVW_WIDGET_CENTER_MAIN_VIEH: {// center main view
--- a/src/vehicle_gui.h
+++ b/src/vehicle_gui.h
@@ -108,6 +108,7 @@
 
 /* Unified window procedure */
 void ShowVehicleViewWindow(const Vehicle *v);
+void StartStopVehicle(const Vehicle *v);
 
 Vehicle *CheckClickOnVehicle(const struct ViewPort *vp, int x, int y);