mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-15 11:03:00 +01:00
Introduce flag to prevent ghosts in multiplayer
Fix error message arguments Remove dead code. Fix clang format
This commit is contained in:
@@ -1773,6 +1773,11 @@ static void window_ride_construction_construct(rct_window* w)
|
||||
}
|
||||
audio_play_sound_at_location(SOUND_PLACE_ITEM, x, y, z);
|
||||
|
||||
if (network_get_mode() != NETWORK_MODE_NONE)
|
||||
{
|
||||
_currentTrackSelectionFlags |= TRACK_SELECTION_FLAG_TRACK_PLACE_ACTION_QUEUED;
|
||||
}
|
||||
|
||||
if (gTrackGroundFlags & TRACK_ELEMENT_LOCATION_IS_UNDERGROUND)
|
||||
{
|
||||
viewport_set_visibility(1);
|
||||
@@ -2549,7 +2554,8 @@ void sub_6C94D8()
|
||||
{
|
||||
case RIDE_CONSTRUCTION_STATE_FRONT:
|
||||
case RIDE_CONSTRUCTION_STATE_BACK:
|
||||
if (!(_currentTrackSelectionFlags & TRACK_SELECTION_FLAG_TRACK))
|
||||
if (!(_currentTrackSelectionFlags & TRACK_SELECTION_FLAG_TRACK)
|
||||
&& !(_currentTrackSelectionFlags & TRACK_SELECTION_FLAG_TRACK_PLACE_ACTION_QUEUED))
|
||||
{
|
||||
if (window_ride_construction_update_state(
|
||||
&type, &direction, &rideIndex, &liftHillAndAlternativeState, &x, &y, &z, nullptr))
|
||||
|
||||
@@ -123,12 +123,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
const uint8_t(*wallEdges)[16];
|
||||
if (rideTypeFlags & RIDE_TYPE_FLAG_FLAT_RIDE)
|
||||
{
|
||||
wallEdges = &FlatRideTrackSequenceElementAllowedWallEdges[_trackType];
|
||||
}
|
||||
else
|
||||
if (!(rideTypeFlags & RIDE_TYPE_FLAG_FLAT_RIDE))
|
||||
{
|
||||
if (_trackType == TRACK_ELEM_ON_RIDE_PHOTO)
|
||||
{
|
||||
@@ -159,8 +154,6 @@ public:
|
||||
GA_ERROR::DISALLOWED, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, STR_TOO_STEEP_FOR_LIFT_HILL);
|
||||
}
|
||||
}
|
||||
|
||||
wallEdges = &TrackSequenceElementAllowedWallEdges[_trackType];
|
||||
}
|
||||
|
||||
money32 cost = 0;
|
||||
@@ -313,7 +306,8 @@ public:
|
||||
crossingMode))
|
||||
{
|
||||
return std::make_unique<GameActionResult>(
|
||||
GA_ERROR::NO_CLEARANCE, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, gGameCommandErrorText);
|
||||
GA_ERROR::NO_CLEARANCE, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, gGameCommandErrorText,
|
||||
gCommonFormatArgs);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -632,11 +626,12 @@ public:
|
||||
? CREATE_CROSSING_MODE_TRACK_OVER_PATH
|
||||
: CREATE_CROSSING_MODE_NONE;
|
||||
if (!map_can_construct_with_clear_at(
|
||||
tileCoords.x, tileCoords.y, baseZ, clearanceZ, &map_place_non_scenery_clear_func, bl, GetFlags() | GAME_COMMAND_FLAG_APPLY, &cost,
|
||||
crossingMode))
|
||||
tileCoords.x, tileCoords.y, baseZ, clearanceZ, &map_place_non_scenery_clear_func, bl,
|
||||
GetFlags() | GAME_COMMAND_FLAG_APPLY, &cost, crossingMode))
|
||||
{
|
||||
return std::make_unique<GameActionResult>(
|
||||
GA_ERROR::NO_CLEARANCE, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, gGameCommandErrorText);
|
||||
GA_ERROR::NO_CLEARANCE, STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE, gGameCommandErrorText,
|
||||
gCommonFormatArgs);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -883,6 +883,7 @@ enum
|
||||
TRACK_SELECTION_FLAG_TRACK = 1 << 1,
|
||||
TRACK_SELECTION_FLAG_ENTRANCE_OR_EXIT = 1 << 2,
|
||||
TRACK_SELECTION_FLAG_RECHECK = 1 << 3,
|
||||
TRACK_SELECTION_FLAG_TRACK_PLACE_ACTION_QUEUED = 1 << 4,
|
||||
};
|
||||
|
||||
enum
|
||||
|
||||
@@ -176,8 +176,7 @@ money32 place_provisional_track_piece(
|
||||
else
|
||||
{
|
||||
auto trackPlaceAction = TrackPlaceAction(
|
||||
rideIndex, trackType, { x, y, z, static_cast<uint8_t>(trackDirection) }, 0,
|
||||
0, 0, liftHillAndAlternativeState);
|
||||
rideIndex, trackType, { x, y, z, static_cast<uint8_t>(trackDirection) }, 0, 0, 0, liftHillAndAlternativeState);
|
||||
trackPlaceAction.SetFlags(GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_5 | GAME_COMMAND_FLAG_GHOST);
|
||||
// This command must not be sent over the network
|
||||
auto res = GameActions::Execute(&trackPlaceAction);
|
||||
|
||||
Reference in New Issue
Block a user