Merge pull request #18257 from rik-smeets/improve-crossing-behaviour

Fix guests 'waiting' on extended railway crossings
This commit is contained in:
Michael Steenbeek 2022-10-09 17:10:14 +02:00 committed by GitHub
commit def6b705cf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 14 additions and 7 deletions

View File

@ -5,6 +5,7 @@
- Fix: [#18064] Unable to dismiss notification messages.
- Fix: [#18122] Ghosts count towards “Great scenery!” guest thought.
- Fix: [#18134] Underground on-ride photo section partially clips through adjacent terrain edge.
- Fix: [#18257] Guests waiting on extended railway crossings.
- Improved: [#18192, #18214] Tycoon Park has been added Extras tab, Competition scenarios have received their own section.
- Change: [#18230] Make the large flat to steep pieces available on the corkscrew roller coaster without cheats.

View File

@ -5289,7 +5289,7 @@ void Guest::UpdateWalking()
}
}
if (PathIsBlockedByVehicle())
if (ShouldWaitForLevelCrossing())
{
// Wait for vehicle to pass
return;

View File

@ -321,9 +321,15 @@ bool Peep::CheckForPath()
return false;
}
bool Peep::PathIsBlockedByVehicle()
bool Peep::ShouldWaitForLevelCrossing()
{
auto curPos = TileCoordsXYZ(GetLocation());
if (FootpathIsBlockedByVehicle(curPos))
{
// If current position is blocked, try to get out of the way
return false;
}
auto dstPos = TileCoordsXYZ(CoordsXYZ{ GetDestination(), NextLoc.z });
if ((curPos.x != dstPos.x || curPos.y != dstPos.y) && FootpathIsBlockedByVehicle(dstPos))
{

View File

@ -412,7 +412,7 @@ public: // Peep
// TODO: Make these private again when done refactoring
public: // Peep
[[nodiscard]] bool CheckForPath();
bool PathIsBlockedByVehicle();
bool ShouldWaitForLevelCrossing();
bool IsOnLevelCrossing();
void PerformNextAction(uint8_t& pathing_result);
void PerformNextAction(uint8_t& pathing_result, TileElement*& tile_result);

View File

@ -1338,7 +1338,7 @@ void Staff::UpdateHeadingToInspect()
if (!CheckForPath())
return;
if (PathIsBlockedByVehicle() && !IsMechanicHeadingToFixRideBlockingPath())
if (ShouldWaitForLevelCrossing() && !IsMechanicHeadingToFixRideBlockingPath())
return;
uint8_t pathingResult;
@ -1446,7 +1446,7 @@ void Staff::UpdateAnswering()
if (!CheckForPath())
return;
if (PathIsBlockedByVehicle() && !IsMechanicHeadingToFixRideBlockingPath())
if (ShouldWaitForLevelCrossing() && !IsMechanicHeadingToFixRideBlockingPath())
return;
uint8_t pathingResult;
@ -1781,7 +1781,7 @@ void Staff::UpdatePatrolling()
if (!CheckForPath())
return;
if (PathIsBlockedByVehicle() && !IsMechanicHeadingToFixRideBlockingPath())
if (ShouldWaitForLevelCrossing() && !IsMechanicHeadingToFixRideBlockingPath())
return;
uint8_t pathingResult;

View File

@ -42,7 +42,7 @@
// This string specifies which version of network stream current build uses.
// It is used for making sure only compatible builds get connected, even within
// single OpenRCT2 version.
#define NETWORK_STREAM_VERSION "2"
#define NETWORK_STREAM_VERSION "3"
#define NETWORK_STREAM_ID OPENRCT2_VERSION "-" NETWORK_STREAM_VERSION
static Peep* _pickup_peep = nullptr;