diff options
author | bjarni <bjarni@openttd.org> | 2006-10-07 08:24:11 +0000 |
---|---|---|
committer | bjarni <bjarni@openttd.org> | 2006-10-07 08:24:11 +0000 |
commit | b4974b9d7de81eff1516b70781d16249357b1020 (patch) | |
tree | 92791291c21a0b5bb2a019e186e9a56e00fd88bf | |
parent | c60950d826b2c0af43516f3b682e05b3d0c8f9dc (diff) | |
download | openttd-b4974b9d7de81eff1516b70781d16249357b1020.tar.xz |
(svn r6676) -Fix: [vehicle list windows] mass start/stop now works correctly in shared orders and station lists
-rw-r--r-- | depot_gui.c | 2 | ||||
-rw-r--r-- | vehicle.c | 16 | ||||
-rw-r--r-- | vehicle_gui.c | 2 |
3 files changed, 11 insertions, 9 deletions
diff --git a/depot_gui.c b/depot_gui.c index 0fc2c0920..b8bff252c 100644 --- a/depot_gui.c +++ b/depot_gui.c @@ -699,7 +699,7 @@ static void DepotWndProc(Window *w, WindowEvent *e) case DEPOT_WIDGET_STOP_ALL: case DEPOT_WIDGET_START_ALL: - DoCommandP(w->window_number, WP(w, depot_d).type, e->we.click.widget == DEPOT_WIDGET_START_ALL ? 1 : 0, NULL, CMD_MASS_START_STOP); + DoCommandP(w->window_number, 0, WP(w, depot_d).type | (e->we.click.widget == DEPOT_WIDGET_START_ALL ? (1 << 5) : 0), NULL, CMD_MASS_START_STOP); break; case DEPOT_WIDGET_SELL_ALL: @@ -1582,10 +1582,11 @@ void AgeVehicle(Vehicle *v) /** Starts or stops a lot of vehicles * @param tile Tile of the depot where the vehicles are started/stopped (only used for depots) - * @param p1 Vehicle type + * @param p1 Station/Order/Depot ID (only used for vehicle list windows) * @param p2 bitmask - * - bit 0 false = start vehicles, true = stop vehicles - * - bit 1 if set, then it's a vehicle list window, not a depot and Tile is ignored in this case + * - bit 0-4 Vehicle type + * - bit 5 false = start vehicles, true = stop vehicles + * - bit 6 if set, then it's a vehicle list window, not a depot and Tile is ignored in this case * - bit 8-11 Vehicle List Window type (ignored unless bit 1 is set) */ int32 CmdMassStartStopVehicle(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) @@ -1596,9 +1597,9 @@ int32 CmdMassStartStopVehicle(TileIndex tile, uint32 flags, uint32 p1, uint32 p2 int32 return_value = CMD_ERROR; uint i; uint stop_command; - byte vehicle_type = GB(p1, 0, 8); - bool start_stop = HASBIT(p2, 0); - bool vehicle_list_window = HASBIT(p2, 1); + byte vehicle_type = GB(p2, 0, 5); + bool start_stop = HASBIT(p2, 5); + bool vehicle_list_window = HASBIT(p2, 6); switch (vehicle_type) { case VEH_Train: stop_command = CMD_START_STOP_TRAIN; break; @@ -1609,9 +1610,10 @@ int32 CmdMassStartStopVehicle(TileIndex tile, uint32 flags, uint32 p1, uint32 p2 } if (vehicle_list_window) { + uint16 id = GB(p1, 0, 16); uint16 window_type = p2 & VLW_MASK; - engine_count = GenerateVehicleSortList((const Vehicle***)&vl, &engine_list_length, vehicle_type, _current_player, INVALID_STATION, INVALID_ORDER, INVALID_STATION, window_type); + engine_count = GenerateVehicleSortList((const Vehicle***)&vl, &engine_list_length, vehicle_type, _current_player, id, id, id, window_type); } else { /* Get the list of vehicles in the depot */ BuildDepotVehicleList(vehicle_type, tile, &vl, &engine_list_length, &engine_count, NULL, NULL, NULL); diff --git a/vehicle_gui.c b/vehicle_gui.c index 57c68bb18..6d65fee7e 100644 --- a/vehicle_gui.c +++ b/vehicle_gui.c @@ -1720,7 +1720,7 @@ void PlayerVehWndProc(Window *w, WindowEvent *e) case VLW_WIDGET_STOP_ALL: case VLW_WIDGET_START_ALL: - DoCommandP(0, vl->vehicle_type, (w->window_number & VLW_MASK) | (1 << 1) | (e->we.click.widget == VLW_WIDGET_START_ALL ? 1 : 0), NULL, CMD_MASS_START_STOP); + DoCommandP(0, GB(w->window_number, 16, 16), (w->window_number & VLW_MASK) | (1 << 6) | (e->we.click.widget == VLW_WIDGET_START_ALL ? (1 << 5) : 0) | vl->vehicle_type, NULL, CMD_MASS_START_STOP); break; } } break; |