# HG changeset patch # User bjarni # Date 2006-09-27 12:17:33 # Node ID 90818f8d70ac4315fd86f5482e0b3f0925a09951 # Parent ffb355e702bfd905e302538a9fea1778f641ee88 (svn r6524) -Code cleanup r6515: cleaned up the command to start/stop all vehicles in a depot. IsWholeTrainInDepot() is removed as CheckTrainInDepot() could be used instead Cleaned up the check to see if a vehicle is valid for start/stop diff --git a/train.h b/train.h --- a/train.h +++ b/train.h @@ -218,12 +218,6 @@ static inline Vehicle *GetNextVehicle(co void ConvertOldMultiheadToNew(void); void ConnectMultiheadedTrains(void); -static inline bool IsWholeTrainInDepot(const Vehicle *v) -{ - for (; v != NULL; v = v->next) { - if (!(v->vehstatus & VS_HIDDEN)) return false; - } - return true; -} +int CheckTrainInDepot(const Vehicle *v, bool needs_to_be_stopped); #endif /* TRAIN_H */ diff --git a/train_cmd.c b/train_cmd.c --- a/train_cmd.c +++ b/train_cmd.c @@ -832,7 +832,7 @@ int32 CmdBuildRailVehicle(TileIndex tile /* Check if all the wagons of the given train are in a depot, returns the * number of cars (including loco) then. If not it returns -1 */ -static int CheckTrainInDepot(const Vehicle *v, bool needs_to_be_stopped) +int CheckTrainInDepot(const Vehicle *v, bool needs_to_be_stopped) { int count; TileIndex tile = v->tile; diff --git a/vehicle.c b/vehicle.c --- a/vehicle.c +++ b/vehicle.c @@ -1570,8 +1570,8 @@ int32 CmdMassStartStopVehicle(TileIndex int32 return_value = CMD_ERROR; uint i; uint stop_command; - byte vehicle_type = p1; - byte start_stop = p2; + byte vehicle_type = GB(p1, 0, 8); + bool start_stop = HASBIT(p2, 0); switch (vehicle_type) { case VEH_Train: stop_command = CMD_START_STOP_TRAIN; break; @@ -1589,8 +1589,12 @@ int32 CmdMassStartStopVehicle(TileIndex int32 ret; if (!!(v->vehstatus & VS_STOPPED) != start_stop) continue; - if (!(v->vehstatus & VS_HIDDEN)) continue; - if (p1 == VEH_Train && !IsWholeTrainInDepot(v)) continue; + if (vehicle_type == VEH_Train) { + if (CheckTrainInDepot(v, false) == -1) continue; + } else { + if (!(v->vehstatus & VS_HIDDEN)) continue; + } + ret = DoCommand(tile, v->index, 0, flags, stop_command); if (!CmdFailed(ret)) { @@ -1601,7 +1605,7 @@ int32 CmdMassStartStopVehicle(TileIndex } } - free((void*)vl); + free(vl); return return_value; }