diff options
author | smatz <smatz@openttd.org> | 2010-04-24 14:29:30 +0000 |
---|---|---|
committer | smatz <smatz@openttd.org> | 2010-04-24 14:29:30 +0000 |
commit | 4a9ef6ce6094b95f1a688ae1563d002f9ff71e07 (patch) | |
tree | dd9ba4bfa0ca5762efc6f4ccf76d531edc1354c4 | |
parent | f56ebd81c35beb0094c487cc3dc45dc0427fae46 (diff) | |
download | openttd-4a9ef6ce6094b95f1a688ae1563d002f9ff71e07.tar.xz |
(svn r19710) -Codechange: deduplicate GUI code for starting/stopping vehicles
-rw-r--r-- | src/depot_gui.cpp | 15 | ||||
-rw-r--r-- | src/vehicle_gui.cpp | 13 | ||||
-rw-r--r-- | src/vehicle_gui.h | 1 |
3 files changed, 15 insertions, 14 deletions
diff --git a/src/depot_gui.cpp b/src/depot_gui.cpp index fef980725..e6d5dfc7c 100644 --- a/src/depot_gui.cpp +++ b/src/depot_gui.cpp @@ -508,18 +508,9 @@ struct DepotWindow : Window { 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(); } diff --git a/src/vehicle_gui.cpp b/src/vehicle_gui.cpp index fa14063fe..db638838c 100644 --- a/src/vehicle_gui.cpp +++ b/src/vehicle_gui.cpp @@ -1868,6 +1868,16 @@ static const uint32 _vehicle_command_translation_table[][4] = { }, }; +/** + * 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 @@ public: 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 diff --git a/src/vehicle_gui.h b/src/vehicle_gui.h index fab4b6bb6..029737204 100644 --- a/src/vehicle_gui.h +++ b/src/vehicle_gui.h @@ -108,6 +108,7 @@ static inline WindowClass GetWindowClassForVehicleType(VehicleType vt) /* Unified window procedure */ void ShowVehicleViewWindow(const Vehicle *v); +void StartStopVehicle(const Vehicle *v); Vehicle *CheckClickOnVehicle(const struct ViewPort *vp, int x, int y); |