mirror of https://github.com/OpenRCT2/OpenRCT2.git
Fix #20684: Footpath additions getting removed by ghost track elements
This commit is contained in:
parent
acf931360d
commit
db33968ff6
|
@ -258,16 +258,6 @@ GameActions::Result TrackPlaceAction::Query() const
|
|||
}
|
||||
costs += canBuild.Cost;
|
||||
|
||||
// When building a level crossing, remove any pre-existing path furniture.
|
||||
if (crossingMode == CREATE_CROSSING_MODE_TRACK_OVER_PATH)
|
||||
{
|
||||
auto footpathElement = MapGetFootpathElement(mapLoc);
|
||||
if (footpathElement != nullptr && footpathElement->AsPath()->HasAddition())
|
||||
{
|
||||
footpathElement->AsPath()->SetAddition(0);
|
||||
}
|
||||
}
|
||||
|
||||
const auto clearanceData = canBuild.GetData<ConstructClearResult>();
|
||||
uint8_t mapGroundFlags = clearanceData.GroundFlags & (ELEMENT_IS_ABOVE_GROUND | ELEMENT_IS_UNDERGROUND);
|
||||
if (resultData.GroundFlags != 0 && (resultData.GroundFlags & mapGroundFlags) == 0)
|
||||
|
@ -478,6 +468,16 @@ GameActions::Result TrackPlaceAction::Execute() const
|
|||
}
|
||||
costs += canBuild.Cost;
|
||||
|
||||
// When building a level crossing, remove any pre-existing path furniture.
|
||||
if (crossingMode == CREATE_CROSSING_MODE_TRACK_OVER_PATH && !(GetFlags() & GAME_COMMAND_FLAG_GHOST))
|
||||
{
|
||||
auto footpathElement = MapGetFootpathElement(mapLoc);
|
||||
if (footpathElement != nullptr && footpathElement->AsPath()->HasAddition())
|
||||
{
|
||||
footpathElement->AsPath()->SetAddition(0);
|
||||
}
|
||||
}
|
||||
|
||||
if (!(GetFlags() & GAME_COMMAND_FLAG_GHOST) && !gCheatsDisableClearanceChecks)
|
||||
{
|
||||
FootpathRemoveLitter(mapLoc);
|
||||
|
|
Loading…
Reference in New Issue