summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbjarni <bjarni@openttd.org>2006-09-27 12:17:33 +0000
committerbjarni <bjarni@openttd.org>2006-09-27 12:17:33 +0000
commit5dbfb5c272ba058dc0204b63fecb6e312aefa6b8 (patch)
tree272876206354bfaac7ac0db771c7fee3c49a6f77
parentf18405dfd028c362c9f18f8836a00f02f5e2eb56 (diff)
downloadopenttd-5dbfb5c272ba058dc0204b63fecb6e312aefa6b8.tar.xz
(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
-rw-r--r--train.h8
-rw-r--r--train_cmd.c2
-rw-r--r--vehicle.c14
3 files changed, 11 insertions, 13 deletions
diff --git a/train.h b/train.h
index bb0b309eb..485e80b6f 100644
--- a/train.h
+++ b/train.h
@@ -218,12 +218,6 @@ static inline Vehicle *GetNextVehicle(const Vehicle *v)
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
index c63941e59..d3533ac39 100644
--- a/train_cmd.c
+++ b/train_cmd.c
@@ -832,7 +832,7 @@ int32 CmdBuildRailVehicle(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
/* 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
index 114d1f624..e5cff4fdf 100644
--- a/vehicle.c
+++ b/vehicle.c
@@ -1570,8 +1570,8 @@ int32 CmdMassStartStopVehicle(TileIndex tile, uint32 flags, uint32 p1, uint32 p2
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 tile, uint32 flags, uint32 p1, uint32 p2
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 tile, uint32 flags, uint32 p1, uint32 p2
}
}
- free((void*)vl);
+ free(vl);
return return_value;
}