Changeset - r25971:453e1656120b
[Not reviewed]
master
0 1 0
Patric Stout - 3 years ago 2021-09-18 13:56:23
truebrain@openttd.org
Fix: Prevent train reversing when wholly inside a train depot (#9557)

Co-authored-by: Jonathan G Rennison <j.g.rennison@gmail.com>
1 file changed with 9 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/train_cmd.cpp
Show inline comments
 
@@ -1809,6 +1809,14 @@ static void AdvanceWagonsAfterSwap(Train
 
	}
 
}
 

	
 
static bool IsWholeTrainInsideDepot(const Train *v)
 
{
 
	for (const Train *u = v; u != nullptr; u = u->Next()) {
 
		if (u->track != TRACK_BIT_DEPOT || u->tile != v->tile) return false;
 
	}
 
	return true;
 
}
 

	
 
/**
 
 * Turn a train around.
 
 * @param v %Train to turn around.
 
@@ -1816,6 +1824,7 @@ static void AdvanceWagonsAfterSwap(Train
 
void ReverseTrainDirection(Train *v)
 
{
 
	if (IsRailDepotTile(v->tile)) {
 
		if (IsWholeTrainInsideDepot(v)) return;
 
		InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile);
 
	}
 

	
0 comments (0 inline, 0 general)