(svn r19710) -Codechange: deduplicate GUI code for starting/stopping vehicles

pull/155/head
smatz 14 years ago
parent cb92cdf975
commit ce9d3a2d6a

@ -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();
}

@ -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

@ -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);

Loading…
Cancel
Save