Changeset - r12861:5309cab2b296
[Not reviewed]
master
0 3 0
rubidium - 15 years ago 2009-09-01 21:54:59
rubidium@openttd.org
(svn r17363) -Fix [FS#3163] (r16717): feed autoreplace the front of vehicles, otherwise it gets distracted and bails out
3 files changed with 5 insertions and 4 deletions:
0 comments (0 inline, 0 general)
src/rail_cmd.cpp
Show inline comments
 
@@ -2416,13 +2416,13 @@ static VehicleEnterTileStatus VehicleEnt
 
	} else if (_fractcoords_enter[dir] == fract_coord) {
 
		if (DiagDirToDir(ReverseDiagDir(dir)) == v->direction) {
 
			/* enter the depot */
 
			v->track = TRACK_BIT_DEPOT,
 
			v->vehstatus |= VS_HIDDEN; // hide it
 
			v->direction = ReverseDir(v->direction);
 
			if (v->Next() == NULL) VehicleEnterDepot(v);
 
			if (v->Next() == NULL) VehicleEnterDepot(v->First());
 
			v->tile = tile;
 

	
 
			InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile);
 
			return VETSB_ENTERED_WORMHOLE;
 
		}
 
	} else if (fract_coord_leave == fract_coord) {
src/road_cmd.cpp
Show inline comments
 
@@ -1547,13 +1547,13 @@ static VehicleEnterTileStatus VehicleEnt
 
			RoadVehicle *rv = RoadVehicle::From(v);
 
			if (rv->frame == RVC_DEPOT_STOP_FRAME &&
 
					_roadveh_enter_depot_dir[GetRoadDepotDirection(tile)] == rv->state) {
 
				rv->state = RVSB_IN_DEPOT;
 
				rv->vehstatus |= VS_HIDDEN;
 
				rv->direction = ReverseDir(rv->direction);
 
				if (rv->Next() == NULL) VehicleEnterDepot(rv);
 
				if (rv->Next() == NULL) VehicleEnterDepot(rv->First());
 
				rv->tile = tile;
 

	
 
				InvalidateWindowData(WC_VEHICLE_DEPOT, rv->tile);
 
				return VETSB_ENTERED_WORMHOLE;
 
			}
 
		} break;
src/vehicle.cpp
Show inline comments
 
@@ -951,31 +951,32 @@ uint8 CalcPercentVehicleFilled(const Veh
 
	/* Return the percentage */
 
	return (count * 100) / max;
 
}
 

	
 
void VehicleEnterDepot(Vehicle *v)
 
{
 
	/* Always work with the front of the vehicle */
 
	assert(v == v->First());
 

	
 
	switch (v->type) {
 
		case VEH_TRAIN: {
 
			Train *t = Train::From(v);
 
			InvalidateWindowClasses(WC_TRAINS_LIST);
 
			/* Clear path reservation */
 
			SetDepotReservation(t->tile, false);
 
			if (_settings_client.gui.show_track_reservation) MarkTileDirtyByTile(t->tile);
 

	
 
			if (!t->IsFrontEngine()) t = t->First();
 
			UpdateSignalsOnSegment(t->tile, INVALID_DIAGDIR, t->owner);
 
			t->load_unload_time_rem = 0;
 
			ClrBit(t->flags, VRF_TOGGLE_REVERSE);
 
			TrainConsistChanged(t, true);
 
			break;
 
		}
 

	
 
		case VEH_ROAD:
 
			InvalidateWindowClasses(WC_ROADVEH_LIST);
 
			if (!RoadVehicle::From(v)->IsRoadVehFront()) v = v->First();
 
			break;
 

	
 
		case VEH_SHIP:
 
			InvalidateWindowClasses(WC_SHIPS_LIST);
 
			Ship::From(v)->state = TRACK_BIT_DEPOT;
 
			RecalcShipStuff(v);
0 comments (0 inline, 0 general)