Changeset - r4648:90818f8d70ac
[Not reviewed]
master
0 3 0
bjarni - 18 years ago 2006-09-27 12:17:33
bjarni@openttd.org
(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
3 files changed with 10 insertions and 12 deletions:
0 comments (0 inline, 0 general)
train.h
Show inline comments
 
@@ -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 */
train_cmd.c
Show inline comments
 
@@ -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;
vehicle.c
Show inline comments
 
@@ -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 (vehicle_type == VEH_Train) {
 
			if (CheckTrainInDepot(v, false) == -1) continue;
 
		} else {
 
		if (!(v->vehstatus & VS_HIDDEN)) continue;
 
		if (p1 == VEH_Train && !IsWholeTrainInDepot(v)) 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;
 
}
 

	
0 comments (0 inline, 0 general)