Merge pull request #13097 from mwnciau/fix-arrow-pulse

Construction arrow pulse improvements
This commit is contained in:
Tulio Leao 2020-10-15 19:54:50 -03:00 committed by GitHub
commit 5ec5ecee48
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 41 additions and 45 deletions

View File

@ -12,6 +12,7 @@
- Fix: [#5178] Lighting effects cannot be disabled in software mode - Fix: [#5178] Lighting effects cannot be disabled in software mode
- Fix: [#5904] Empty errors on tile inspector base height change. - Fix: [#5904] Empty errors on tile inspector base height change.
- Fix: [#6086] Cannot install existing track design with another name. - Fix: [#6086] Cannot install existing track design with another name.
- Fix: [#7443] Construction arrows pulse at irregular intervals.
- Fix: [#7748] Tooltips would not timeout for normal UI elements. - Fix: [#7748] Tooltips would not timeout for normal UI elements.
- Fix: [#8015] RCT2 files are not found when put into the OpenRCT2 folder. - Fix: [#8015] RCT2 files are not found when put into the OpenRCT2 folder.
- Fix: [#8957] Error title missing when building with insufficient funds - Fix: [#8957] Error title missing when building with insufficient funds
@ -22,6 +23,7 @@
- Fix: [#13044] Rides in RCT1 saves all have "0 customers per hour". - Fix: [#13044] Rides in RCT1 saves all have "0 customers per hour".
- Fix: [#13074] Entrance and exit ghosts for mazes not being removed. - Fix: [#13074] Entrance and exit ghosts for mazes not being removed.
- Fix: [#13083] Dialog for renaming conflicting track design crops text out. - Fix: [#13083] Dialog for renaming conflicting track design crops text out.
- Fix: [#13097] Missing direction arrow for stations
- Fix: [#13098] UI buttons for entrance and exit don't toggle according to them being built. - Fix: [#13098] UI buttons for entrance and exit don't toggle according to them being built.
- Fix: [#13098] Maze can still be constructed while placing entrance and exit (original bug). - Fix: [#13098] Maze can still be constructed while placing entrance and exit (original bug).
- Fix: [#13118] Closing construction window resets ride viewport. - Fix: [#13118] Closing construction window resets ride viewport.

View File

@ -19,6 +19,7 @@
#include <openrct2/audio/audio.h> #include <openrct2/audio/audio.h>
#include <openrct2/localisation/Localisation.h> #include <openrct2/localisation/Localisation.h>
#include <openrct2/object/ObjectLimits.h> #include <openrct2/object/ObjectLimits.h>
#include <openrct2/platform/platform.h>
#include <openrct2/sprites.h> #include <openrct2/sprites.h>
#include <openrct2/world/Footpath.h> #include <openrct2/world/Footpath.h>
#include <openrct2/world/Park.h> #include <openrct2/world/Park.h>
@ -27,6 +28,7 @@
static constexpr const rct_string_id WINDOW_TITLE = STR_FOOTPATHS; static constexpr const rct_string_id WINDOW_TITLE = STR_FOOTPATHS;
static constexpr const int32_t WH = 381; static constexpr const int32_t WH = 381;
static constexpr const int32_t WW = 106; static constexpr const int32_t WW = 106;
static constexpr const uint16_t ARROW_PULSE_DURATION = 200;
// clang-format off // clang-format off
enum enum
@ -129,7 +131,7 @@ static rct_window_event_list window_footpath_events([](auto& events)
// clang-format on // clang-format on
static money32 _window_footpath_cost; static money32 _window_footpath_cost;
static int8_t _window_footpath_provisional_path_arrow_timer; static uint32_t _footpathConstructionNextArrowPulse = 0;
static uint8_t _lastUpdatedCameraRotation = UINT8_MAX; static uint8_t _lastUpdatedCameraRotation = UINT8_MAX;
static bool _footpathErrorOccured; static bool _footpathErrorOccured;
@ -473,10 +475,13 @@ static void window_footpath_update_provisional_path_for_bridge_mode(rct_window*
widget_invalidate(w, WIDX_CONSTRUCT); widget_invalidate(w, WIDX_CONSTRUCT);
} }
auto curTime = platform_get_ticks();
// Update little directional arrow on provisional bridge mode path // Update little directional arrow on provisional bridge mode path
if (--_window_footpath_provisional_path_arrow_timer < 0) if (_footpathConstructionNextArrowPulse < curTime)
{ {
_window_footpath_provisional_path_arrow_timer = 5; _footpathConstructionNextArrowPulse = curTime + ARROW_PULSE_DURATION;
gFootpathProvisionalFlags ^= PROVISIONAL_PATH_FLAG_SHOW_ARROW; gFootpathProvisionalFlags ^= PROVISIONAL_PATH_FLAG_SHOW_ARROW;
CoordsXYZ footpathLoc; CoordsXYZ footpathLoc;
footpath_get_next_path_info(&type, footpathLoc, &slope); footpath_get_next_path_info(&type, footpathLoc, &slope);
@ -932,7 +937,6 @@ static void window_footpath_start_bridge_at_point(const ScreenCoordsXY& screenCo
gFootpathConstructFromPosition = { mapCoords, z }; gFootpathConstructFromPosition = { mapCoords, z };
gFootpathConstructDirection = direction; gFootpathConstructDirection = direction;
gFootpathProvisionalFlags = 0; gFootpathProvisionalFlags = 0;
_window_footpath_provisional_path_arrow_timer = 0;
gFootpathConstructSlope = 0; gFootpathConstructSlope = 0;
gFootpathConstructionMode = PATH_CONSTRUCTION_MODE_BRIDGE_OR_TUNNEL; gFootpathConstructionMode = PATH_CONSTRUCTION_MODE_BRIDGE_OR_TUNNEL;
gFootpathConstructValidDirections = INVALID_DIRECTION; gFootpathConstructValidDirections = INVALID_DIRECTION;

View File

@ -25,6 +25,7 @@
#include <openrct2/config/Config.h> #include <openrct2/config/Config.h>
#include <openrct2/localisation/Localisation.h> #include <openrct2/localisation/Localisation.h>
#include <openrct2/network/network.h> #include <openrct2/network/network.h>
#include <openrct2/platform/platform.h>
#include <openrct2/ride/Ride.h> #include <openrct2/ride/Ride.h>
#include <openrct2/ride/RideData.h> #include <openrct2/ride/RideData.h>
#include <openrct2/ride/Track.h> #include <openrct2/ride/Track.h>
@ -38,6 +39,7 @@
static constexpr const rct_string_id WINDOW_TITLE = STR_RIDE_CONSTRUCTION_WINDOW_TITLE; static constexpr const rct_string_id WINDOW_TITLE = STR_RIDE_CONSTRUCTION_WINDOW_TITLE;
static constexpr const int32_t WH = 394; static constexpr const int32_t WH = 394;
static constexpr const int32_t WW = 166; static constexpr const int32_t WW = 166;
static constexpr const uint16_t ARROW_PULSE_DURATION = 200;
#pragma region Widgets #pragma region Widgets
@ -441,6 +443,7 @@ static uint8_t _currentlyShowingBrakeOrBoosterSpeed;
static bool _boosterTrackSelected; static bool _boosterTrackSelected;
static uint32_t _currentDisabledSpecialTrackPieces; static uint32_t _currentDisabledSpecialTrackPieces;
static uint32_t _rideConstructionNextArrowPulse = 0;
static void window_ride_construction_construct(rct_window* w); static void window_ride_construction_construct(rct_window* w);
static void window_ride_construction_mouseup_demolish(rct_window* w); static void window_ride_construction_mouseup_demolish(rct_window* w);
@ -562,7 +565,6 @@ rct_window* window_ride_construction_open()
_currentTrackPieceDirection = 0; _currentTrackPieceDirection = 0;
_rideConstructionState = RIDE_CONSTRUCTION_STATE_PLACE; _rideConstructionState = RIDE_CONSTRUCTION_STATE_PLACE;
_currentTrackSelectionFlags = 0; _currentTrackSelectionFlags = 0;
_rideConstructionArrowPulseTime = 0;
_autoOpeningShop = false; _autoOpeningShop = false;
_autoRotatingShop = true; _autoRotatingShop = true;
_trackPlaceCtrlState = false; _trackPlaceCtrlState = false;
@ -1708,7 +1710,6 @@ static void RideConstructPlacedForwardGameActionCallback(const GameAction* ga, c
_currentTrackPieceDirection = next_track.element->GetDirection(); _currentTrackPieceDirection = next_track.element->GetDirection();
_currentTrackPieceType = next_track.element->AsTrack()->GetTrackType(); _currentTrackPieceType = next_track.element->AsTrack()->GetTrackType();
_currentTrackSelectionFlags = 0; _currentTrackSelectionFlags = 0;
_rideConstructionArrowPulseTime = 0;
_rideConstructionState = RIDE_CONSTRUCTION_STATE_SELECTED; _rideConstructionState = RIDE_CONSTRUCTION_STATE_SELECTED;
ride_select_next_section(); ride_select_next_section();
} }
@ -1752,7 +1753,6 @@ static void RideConstructPlacedBackwardGameActionCallback(const GameAction* ga,
_currentTrackPieceDirection = trackBeginEnd.begin_direction; _currentTrackPieceDirection = trackBeginEnd.begin_direction;
_currentTrackPieceType = trackBeginEnd.begin_element->AsTrack()->GetTrackType(); _currentTrackPieceType = trackBeginEnd.begin_element->AsTrack()->GetTrackType();
_currentTrackSelectionFlags = 0; _currentTrackSelectionFlags = 0;
_rideConstructionArrowPulseTime = 0;
_rideConstructionState = RIDE_CONSTRUCTION_STATE_SELECTED; _rideConstructionState = RIDE_CONSTRUCTION_STATE_SELECTED;
ride_select_previous_section(); ride_select_previous_section();
} }
@ -2550,6 +2550,7 @@ void sub_6C94D8()
{ {
case RIDE_CONSTRUCTION_STATE_FRONT: case RIDE_CONSTRUCTION_STATE_FRONT:
case RIDE_CONSTRUCTION_STATE_BACK: case RIDE_CONSTRUCTION_STATE_BACK:
{
if (!(_currentTrackSelectionFlags & TRACK_SELECTION_FLAG_TRACK)) if (!(_currentTrackSelectionFlags & TRACK_SELECTION_FLAG_TRACK))
{ {
if (window_ride_construction_update_state( if (window_ride_construction_update_state(
@ -2564,11 +2565,12 @@ void sub_6C94D8()
window_ride_construction_update_active_elements(); window_ride_construction_update_active_elements();
} }
} }
_rideConstructionArrowPulseTime--;
if (_rideConstructionArrowPulseTime >= 0)
break;
_rideConstructionArrowPulseTime = 5; auto curTime = platform_get_ticks();
if (_rideConstructionNextArrowPulse >= curTime)
break;
_rideConstructionNextArrowPulse = curTime + ARROW_PULSE_DURATION;
_currentTrackSelectionFlags ^= TRACK_SELECTION_FLAG_ARROW; _currentTrackSelectionFlags ^= TRACK_SELECTION_FLAG_ARROW;
trackPos = _currentTrackBegin; trackPos = _currentTrackBegin;
direction = _currentTrackPieceDirection; direction = _currentTrackPieceDirection;
@ -2584,13 +2586,14 @@ void sub_6C94D8()
gMapSelectFlags |= MAP_SELECT_FLAG_ENABLE_ARROW; gMapSelectFlags |= MAP_SELECT_FLAG_ENABLE_ARROW;
map_invalidate_tile_full(trackPos); map_invalidate_tile_full(trackPos);
break; break;
}
case RIDE_CONSTRUCTION_STATE_SELECTED: case RIDE_CONSTRUCTION_STATE_SELECTED:
{ {
_rideConstructionArrowPulseTime--; auto curTime = platform_get_ticks();
if (_rideConstructionArrowPulseTime >= 0) if (_rideConstructionNextArrowPulse >= curTime)
break; break;
_rideConstructionNextArrowPulse = curTime + ARROW_PULSE_DURATION;
_rideConstructionArrowPulseTime = 5;
_currentTrackSelectionFlags ^= TRACK_SELECTION_FLAG_ARROW; _currentTrackSelectionFlags ^= TRACK_SELECTION_FLAG_ARROW;
direction = _currentTrackPieceDirection & 3; direction = _currentTrackPieceDirection & 3;
type = _currentTrackPieceType; type = _currentTrackPieceType;
@ -2604,14 +2607,15 @@ void sub_6C94D8()
} }
break; break;
} }
case 6: case RIDE_CONSTRUCTION_STATE_MAZE_BUILD:
case 7: case RIDE_CONSTRUCTION_STATE_MAZE_MOVE:
case 8: case RIDE_CONSTRUCTION_STATE_MAZE_FILL:
_rideConstructionArrowPulseTime--; {
if (_rideConstructionArrowPulseTime >= 0) auto curTime = platform_get_ticks();
if (_rideConstructionNextArrowPulse >= curTime)
break; break;
_rideConstructionNextArrowPulse = curTime + ARROW_PULSE_DURATION;
_rideConstructionArrowPulseTime = 5;
_currentTrackSelectionFlags ^= TRACK_SELECTION_FLAG_ARROW; _currentTrackSelectionFlags ^= TRACK_SELECTION_FLAG_ARROW;
trackPos = CoordsXYZ{ _currentTrackBegin.x & 0xFFE0, _currentTrackBegin.y & 0xFFE0, _currentTrackBegin.z + 15 }; trackPos = CoordsXYZ{ _currentTrackBegin.x & 0xFFE0, _currentTrackBegin.y & 0xFFE0, _currentTrackBegin.z + 15 };
gMapSelectArrowPosition = trackPos; gMapSelectArrowPosition = trackPos;
@ -2631,6 +2635,7 @@ void sub_6C94D8()
gMapSelectFlags |= MAP_SELECT_FLAG_ENABLE_ARROW; gMapSelectFlags |= MAP_SELECT_FLAG_ENABLE_ARROW;
map_invalidate_tile_full(trackPos); map_invalidate_tile_full(trackPos);
break; break;
}
} }
} }
@ -3755,7 +3760,6 @@ void ride_construction_tooldown_construct(const ScreenCoordsXY& screenCoords)
_currentTrackBegin.y = mapCoords.y; _currentTrackBegin.y = mapCoords.y;
_currentTrackBegin.z = z; _currentTrackBegin.z = z;
_currentTrackSelectionFlags = 0; _currentTrackSelectionFlags = 0;
_rideConstructionArrowPulseTime = 0;
auto intent = Intent(INTENT_ACTION_UPDATE_MAZE_CONSTRUCTION); auto intent = Intent(INTENT_ACTION_UPDATE_MAZE_CONSTRUCTION);
context_broadcast_intent(&intent); context_broadcast_intent(&intent);
w = window_find_by_class(WC_RIDE_CONSTRUCTION); w = window_find_by_class(WC_RIDE_CONSTRUCTION);
@ -3812,7 +3816,6 @@ void ride_construction_tooldown_construct(const ScreenCoordsXY& screenCoords)
_currentTrackBegin.y = mapCoords.y; _currentTrackBegin.y = mapCoords.y;
_currentTrackBegin.z = z; _currentTrackBegin.z = z;
_currentTrackSelectionFlags = 0; _currentTrackSelectionFlags = 0;
_rideConstructionArrowPulseTime = 0;
window_ride_construction_update_active_elements(); window_ride_construction_update_active_elements();
w = window_find_by_class(WC_RIDE_CONSTRUCTION); w = window_find_by_class(WC_RIDE_CONSTRUCTION);
if (w == nullptr) if (w == nullptr)

View File

@ -101,7 +101,6 @@ CoordsXYZ _currentTrackBegin;
uint8_t _currentTrackPieceDirection; uint8_t _currentTrackPieceDirection;
track_type_t _currentTrackPieceType; track_type_t _currentTrackPieceType;
uint8_t _currentTrackSelectionFlags; uint8_t _currentTrackSelectionFlags;
int8_t _rideConstructionArrowPulseTime;
uint8_t _currentTrackSlopeEnd; uint8_t _currentTrackSlopeEnd;
uint8_t _currentTrackBankEnd; uint8_t _currentTrackBankEnd;
uint8_t _currentTrackLiftHill; uint8_t _currentTrackLiftHill;
@ -1373,13 +1372,16 @@ void ride_construction_invalidate_current_track()
case RIDE_CONSTRUCTION_STATE_MAZE_BUILD: case RIDE_CONSTRUCTION_STATE_MAZE_BUILD:
case RIDE_CONSTRUCTION_STATE_MAZE_MOVE: case RIDE_CONSTRUCTION_STATE_MAZE_MOVE:
case RIDE_CONSTRUCTION_STATE_MAZE_FILL: case RIDE_CONSTRUCTION_STATE_MAZE_FILL:
case RIDE_CONSTRUCTION_STATE_FRONT:
case RIDE_CONSTRUCTION_STATE_BACK:
if (_currentTrackSelectionFlags & TRACK_SELECTION_FLAG_ARROW) if (_currentTrackSelectionFlags & TRACK_SELECTION_FLAG_ARROW)
{ {
map_invalidate_tile_full(_currentTrackBegin.ToTileStart()); map_invalidate_tile_full(_currentTrackBegin.ToTileStart());
gMapSelectFlags &= ~MAP_SELECT_FLAG_ENABLE_ARROW;
} }
ride_construction_remove_ghosts(); ride_construction_remove_ghosts();
break; break;
case RIDE_CONSTRUCTION_STATE_PLACE:
case RIDE_CONSTRUCTION_STATE_ENTRANCE_EXIT:
default: default:
if (_currentTrackSelectionFlags & TRACK_SELECTION_FLAG_ARROW) if (_currentTrackSelectionFlags & TRACK_SELECTION_FLAG_ARROW)
{ {
@ -1611,6 +1613,12 @@ void ride_select_next_section()
// Set next element's height. // Set next element's height.
virtual_floor_set_height(tileElement->GetBaseZ()); virtual_floor_set_height(tileElement->GetBaseZ());
} }
_currentTrackBegin = *newCoords;
_currentTrackPieceDirection = tileElement->GetDirection();
_currentTrackPieceType = tileElement->AsTrack()->GetTrackType();
_currentTrackSelectionFlags = 0;
window_ride_construction_update_active_elements();
} }
else else
{ {
@ -1619,18 +1627,9 @@ void ride_select_next_section()
_currentTrackPieceDirection = direction; _currentTrackPieceDirection = direction;
_currentTrackPieceType = tileElement->AsTrack()->GetTrackType(); _currentTrackPieceType = tileElement->AsTrack()->GetTrackType();
_currentTrackSelectionFlags = 0; _currentTrackSelectionFlags = 0;
_rideConstructionArrowPulseTime = 0;
ride_construction_set_default_next_piece(); ride_construction_set_default_next_piece();
window_ride_construction_update_active_elements(); window_ride_construction_update_active_elements();
return;
} }
_currentTrackBegin = *newCoords;
_currentTrackPieceDirection = tileElement->GetDirection();
_currentTrackPieceType = tileElement->AsTrack()->GetTrackType();
_currentTrackSelectionFlags = 0;
_rideConstructionArrowPulseTime = 0;
window_ride_construction_update_active_elements();
} }
else if (_rideConstructionState == RIDE_CONSTRUCTION_STATE_BACK) else if (_rideConstructionState == RIDE_CONSTRUCTION_STATE_BACK)
{ {
@ -1673,7 +1672,6 @@ void ride_select_previous_section()
_currentTrackPieceDirection = trackBeginEnd.begin_direction; _currentTrackPieceDirection = trackBeginEnd.begin_direction;
_currentTrackPieceType = trackBeginEnd.begin_element->AsTrack()->GetTrackType(); _currentTrackPieceType = trackBeginEnd.begin_element->AsTrack()->GetTrackType();
_currentTrackSelectionFlags = 0; _currentTrackSelectionFlags = 0;
_rideConstructionArrowPulseTime = 0;
if (!scenery_tool_is_active()) if (!scenery_tool_is_active())
{ {
// Set previous element's height. // Set previous element's height.
@ -1690,7 +1688,6 @@ void ride_select_previous_section()
_currentTrackPieceDirection = trackBeginEnd.end_direction; _currentTrackPieceDirection = trackBeginEnd.end_direction;
_currentTrackPieceType = tileElement->AsTrack()->GetTrackType(); _currentTrackPieceType = tileElement->AsTrack()->GetTrackType();
_currentTrackSelectionFlags = 0; _currentTrackSelectionFlags = 0;
_rideConstructionArrowPulseTime = 0;
ride_construction_set_default_next_piece(); ride_construction_set_default_next_piece();
window_ride_construction_update_active_elements(); window_ride_construction_update_active_elements();
} }
@ -1799,7 +1796,6 @@ static bool ride_modify_maze(const CoordsXYE& tileElement)
_currentTrackBegin.y = tileElement.y; _currentTrackBegin.y = tileElement.y;
_currentTrackBegin.z = trackElement->GetBaseZ(); _currentTrackBegin.z = trackElement->GetBaseZ();
_currentTrackSelectionFlags = 0; _currentTrackSelectionFlags = 0;
_rideConstructionArrowPulseTime = 0;
auto intent = Intent(INTENT_ACTION_UPDATE_MAZE_CONSTRUCTION); auto intent = Intent(INTENT_ACTION_UPDATE_MAZE_CONSTRUCTION);
context_broadcast_intent(&intent); context_broadcast_intent(&intent);
@ -1880,7 +1876,6 @@ bool ride_modify(CoordsXYE* input)
_currentTrackPieceDirection = direction; _currentTrackPieceDirection = direction;
_currentTrackPieceType = type; _currentTrackPieceType = type;
_currentTrackSelectionFlags = 0; _currentTrackSelectionFlags = 0;
_rideConstructionArrowPulseTime = 0;
if (ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_HAS_NO_TRACK)) if (ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_HAS_NO_TRACK))
{ {
@ -1900,7 +1895,6 @@ bool ride_modify(CoordsXYE* input)
_currentTrackPieceDirection = direction; _currentTrackPieceDirection = direction;
_currentTrackPieceType = type; _currentTrackPieceType = type;
_currentTrackSelectionFlags = 0; _currentTrackSelectionFlags = 0;
_rideConstructionArrowPulseTime = 0;
ride_select_previous_section(); ride_select_previous_section();
@ -1911,7 +1905,6 @@ bool ride_modify(CoordsXYE* input)
_currentTrackPieceDirection = direction; _currentTrackPieceDirection = direction;
_currentTrackPieceType = type; _currentTrackPieceType = type;
_currentTrackSelectionFlags = 0; _currentTrackSelectionFlags = 0;
_rideConstructionArrowPulseTime = 0;
} }
window_ride_construction_update_active_elements(); window_ride_construction_update_active_elements();
@ -1958,7 +1951,6 @@ int32_t ride_initialise_construction_window(Ride* ride)
_currentTrackPieceDirection = 0; _currentTrackPieceDirection = 0;
_rideConstructionState = RIDE_CONSTRUCTION_STATE_PLACE; _rideConstructionState = RIDE_CONSTRUCTION_STATE_PLACE;
_currentTrackSelectionFlags = 0; _currentTrackSelectionFlags = 0;
_rideConstructionArrowPulseTime = 0;
window_ride_construction_update_active_elements(); window_ride_construction_update_active_elements();
return 1; return 1;
@ -6260,7 +6252,6 @@ bool ride_select_backwards_from_front()
_currentTrackPieceDirection = trackBeginEnd.begin_direction; _currentTrackPieceDirection = trackBeginEnd.begin_direction;
_currentTrackPieceType = trackBeginEnd.begin_element->AsTrack()->GetTrackType(); _currentTrackPieceType = trackBeginEnd.begin_element->AsTrack()->GetTrackType();
_currentTrackSelectionFlags = 0; _currentTrackSelectionFlags = 0;
_rideConstructionArrowPulseTime = 0;
return true; return true;
} }
} }
@ -6286,7 +6277,6 @@ bool ride_select_forwards_from_back()
_currentTrackPieceDirection = next_track.element->GetDirection(); _currentTrackPieceDirection = next_track.element->GetDirection();
_currentTrackPieceType = next_track.element->AsTrack()->GetTrackType(); _currentTrackPieceType = next_track.element->AsTrack()->GetTrackType();
_currentTrackSelectionFlags = 0; _currentTrackSelectionFlags = 0;
_rideConstructionArrowPulseTime = 0;
return true; return true;
} }
} }

View File

@ -1061,7 +1061,6 @@ extern CoordsXYZ _currentTrackBegin;
extern uint8_t _currentTrackPieceDirection; extern uint8_t _currentTrackPieceDirection;
extern track_type_t _currentTrackPieceType; extern track_type_t _currentTrackPieceType;
extern uint8_t _currentTrackSelectionFlags; extern uint8_t _currentTrackSelectionFlags;
extern int8_t _rideConstructionArrowPulseTime;
extern uint8_t _currentTrackSlopeEnd; extern uint8_t _currentTrackSlopeEnd;
extern uint8_t _currentTrackBankEnd; extern uint8_t _currentTrackBankEnd;
extern uint8_t _currentTrackLiftHill; extern uint8_t _currentTrackLiftHill;

View File

@ -434,7 +434,6 @@ void window_ride_construction_mouseup_demolish_next_piece(const CoordsXYZD& piec
_currentTrackBegin.z = floor2(piecePos.z, COORDS_Z_STEP); _currentTrackBegin.z = floor2(piecePos.z, COORDS_Z_STEP);
_rideConstructionState = RIDE_CONSTRUCTION_STATE_FRONT; _rideConstructionState = RIDE_CONSTRUCTION_STATE_FRONT;
_currentTrackSelectionFlags = 0; _currentTrackSelectionFlags = 0;
_rideConstructionArrowPulseTime = 0;
_currentTrackPieceDirection = piecePos.direction & 3; _currentTrackPieceDirection = piecePos.direction & 3;
int32_t savedCurrentTrackCurve = _currentTrackCurve; int32_t savedCurrentTrackCurve = _currentTrackCurve;
int32_t savedPreviousTrackSlopeEnd = _previousTrackSlopeEnd; int32_t savedPreviousTrackSlopeEnd = _previousTrackSlopeEnd;
@ -489,7 +488,6 @@ void window_ride_construction_mouseup_demolish_next_piece(const CoordsXYZD& piec
_currentTrackPieceDirection = piecePos.direction; _currentTrackPieceDirection = piecePos.direction;
_currentTrackPieceType = type; _currentTrackPieceType = type;
_currentTrackSelectionFlags = 0; _currentTrackSelectionFlags = 0;
_rideConstructionArrowPulseTime = 0;
if (_rideConstructionState2 == RIDE_CONSTRUCTION_STATE_FRONT) if (_rideConstructionState2 == RIDE_CONSTRUCTION_STATE_FRONT)
{ {
ride_select_next_section(); ride_select_next_section();