(svn r6524) -Code cleanup r6515: cleaned up the command to start/stop all vehicles in a depot.
authorbjarni
Wed, 27 Sep 2006 12:17:33 +0000
changeset 4648 7bde2a5c36e8
parent 4647 b047726d5a8b
child 4649 38d1633a897d
(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
train.h
train_cmd.c
vehicle.c
--- a/train.h	Wed Sep 27 11:45:26 2006 +0000
+++ b/train.h	Wed Sep 27 12:17:33 2006 +0000
@@ -218,12 +218,6 @@
 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 */
--- a/train_cmd.c	Wed Sep 27 11:45:26 2006 +0000
+++ b/train_cmd.c	Wed Sep 27 12:17:33 2006 +0000
@@ -832,7 +832,7 @@
 
 /* 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;
--- a/vehicle.c	Wed Sep 27 11:45:26 2006 +0000
+++ b/vehicle.c	Wed Sep 27 12:17:33 2006 +0000
@@ -1570,8 +1570,8 @@
 	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 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 @@
 		}
 	}
 
-	free((void*)vl);
+	free(vl);
 	return return_value;
 }