1
0
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:
duncanspumpkin
2019-02-18 12:04:02 +00:00
parent 77b25714ff
commit 8bf3689d42
4 changed files with 16 additions and 15 deletions

View File

@@ -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))

View File

@@ -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);
}
}

View File

@@ -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

View File

@@ -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);