mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-16 11:33:03 +01:00
Prevent track design ghost add/delete when shift height is invalid
This commit is contained in:
@@ -219,25 +219,26 @@ namespace OpenRCT2::Ui::Windows
|
||||
if (GameIsNotPaused() || getGameState().cheats.buildInPauseMode)
|
||||
{
|
||||
ClearProvisional();
|
||||
auto res = FindValidTrackDesignPlaceHeight(trackLoc, GAME_COMMAND_FLAG_NO_SPEND | GAME_COMMAND_FLAG_GHOST);
|
||||
CoordsXYZD ghostTrackLoc = trackLoc;
|
||||
auto res = FindValidTrackDesignPlaceHeight(ghostTrackLoc, GAME_COMMAND_FLAG_NO_SPEND | GAME_COMMAND_FLAG_GHOST);
|
||||
|
||||
if (res.Error == GameActions::Status::Ok)
|
||||
{
|
||||
// Valid location found. Place the ghost at the location.
|
||||
auto tdAction = GameActions::TrackDesignAction(trackLoc, *_trackDesign, !gTrackDesignSceneryToggle);
|
||||
auto tdAction = GameActions::TrackDesignAction(ghostTrackLoc, *_trackDesign, !gTrackDesignSceneryToggle);
|
||||
tdAction.SetFlags(GAME_COMMAND_FLAG_NO_SPEND | GAME_COMMAND_FLAG_GHOST);
|
||||
tdAction.SetCallback([&](const GameActions::GameAction*, const GameActions::Result* result) {
|
||||
if (result->Error == GameActions::Status::Ok)
|
||||
{
|
||||
_placementGhostRideId = result->GetData<RideId>();
|
||||
_placementGhostLoc = trackLoc;
|
||||
_placementGhostLoc = ghostTrackLoc;
|
||||
_hasPlacementGhost = true;
|
||||
}
|
||||
});
|
||||
res = GameActions::Execute(&tdAction, getGameState());
|
||||
cost = res.Error == GameActions::Status::Ok ? res.Cost : kMoney64Undefined;
|
||||
|
||||
VirtualFloorSetHeight(trackLoc.z);
|
||||
VirtualFloorSetHeight(ghostTrackLoc.z);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user