From 2e3a4d41ce8778355388333239463339668622df Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sat, 25 Apr 2020 12:02:49 +0200 Subject: [PATCH] Clean up some ride construction variables --- src/openrct2-ui/windows/RideConstruction.cpp | 75 +++++++++++--------- src/openrct2/ride/Ride.cpp | 8 +-- src/openrct2/ride/Track.h | 2 + src/openrct2/windows/_legacy.cpp | 30 ++++---- 4 files changed, 61 insertions(+), 54 deletions(-) diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index c39dedab6f..5397c6582e 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -563,7 +563,7 @@ rct_window* window_ride_construction_open() _currentBrakeSpeed2 = 8; _currentSeatRotationAngle = 4; - _currentTrackCurve = RideTypeDescriptors[ride->type].StartTrackPiece | 0x100; + _currentTrackCurve = RideTypeDescriptors[ride->type].StartTrackPiece | RideConstructionSpecialPieceSelected; _currentTrackSlopeEnd = 0; _currentTrackBankEnd = 0; _currentTrackLiftHill = 0; @@ -712,7 +712,7 @@ static void window_ride_construction_resize(rct_window* w) uint64_t disabledWidgets = 0; - if (_currentTrackCurve & 0x100) + if (_currentTrackCurve & RideConstructionSpecialPieceSelected) { disabledWidgets |= (1ULL << WIDX_SLOPE_GROUPBOX) | (1ULL << WIDX_BANKING_GROUPBOX) | (1ULL << WIDX_SLOPE_DOWN_STEEP) | (1ULL << WIDX_SLOPE_DOWN) | (1ULL << WIDX_LEVEL) | (1ULL << WIDX_SLOPE_UP) | (1ULL << WIDX_SLOPE_UP_STEEP) @@ -1321,28 +1321,28 @@ static void window_ride_construction_mousedown(rct_window* w, rct_widgetindex wi { if (_currentTrackCurve == TRACK_CURVE_LEFT && _currentTrackBankEnd == TRACK_BANK_LEFT) { - _currentTrackCurve = TRACK_ELEM_LEFT_HALF_BANKED_HELIX_DOWN_LARGE | 0x100; + _currentTrackCurve = TRACK_ELEM_LEFT_HALF_BANKED_HELIX_DOWN_LARGE | RideConstructionSpecialPieceSelected; _currentTrackPrice = MONEY32_UNDEFINED; window_ride_construction_update_active_elements(); break; } else if (_currentTrackCurve == TRACK_CURVE_RIGHT && _currentTrackBankEnd == TRACK_BANK_RIGHT) { - _currentTrackCurve = TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_LARGE | 0x100; + _currentTrackCurve = TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_LARGE | RideConstructionSpecialPieceSelected; _currentTrackPrice = MONEY32_UNDEFINED; window_ride_construction_update_active_elements(); break; } else if (_currentTrackCurve == TRACK_CURVE_LEFT_SMALL && _currentTrackBankEnd == TRACK_BANK_LEFT) { - _currentTrackCurve = TRACK_ELEM_LEFT_HALF_BANKED_HELIX_DOWN_SMALL | 0x100; + _currentTrackCurve = TRACK_ELEM_LEFT_HALF_BANKED_HELIX_DOWN_SMALL | RideConstructionSpecialPieceSelected; _currentTrackPrice = MONEY32_UNDEFINED; window_ride_construction_update_active_elements(); break; } else if (_currentTrackCurve == TRACK_CURVE_RIGHT_SMALL && _currentTrackBankEnd == TRACK_BANK_RIGHT) { - _currentTrackCurve = TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_SMALL | 0x100; + _currentTrackCurve = TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_SMALL | RideConstructionSpecialPieceSelected; _currentTrackPrice = MONEY32_UNDEFINED; window_ride_construction_update_active_elements(); break; @@ -1352,14 +1352,15 @@ static void window_ride_construction_mousedown(rct_window* w, rct_widgetindex wi { if (_currentTrackCurve == TRACK_CURVE_LEFT && _currentTrackBankEnd == TRACK_BANK_LEFT) { - _currentTrackCurve = TRACK_ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_DOWN | 0x100; + _currentTrackCurve = TRACK_ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_DOWN | RideConstructionSpecialPieceSelected; _currentTrackPrice = MONEY32_UNDEFINED; window_ride_construction_update_active_elements(); break; } else if (_currentTrackCurve == TRACK_CURVE_RIGHT && _currentTrackBankEnd == TRACK_BANK_RIGHT) { - _currentTrackCurve = TRACK_ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_DOWN | 0x100; + _currentTrackCurve = TRACK_ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_DOWN + | RideConstructionSpecialPieceSelected; _currentTrackPrice = MONEY32_UNDEFINED; window_ride_construction_update_active_elements(); break; @@ -1371,14 +1372,14 @@ static void window_ride_construction_mousedown(rct_window* w, rct_widgetindex wi { if (_currentTrackCurve == TRACK_CURVE_LEFT) { - _currentTrackCurve = TRACK_ELEM_LEFT_QUARTER_HELIX_LARGE_DOWN | 0x100; + _currentTrackCurve = TRACK_ELEM_LEFT_QUARTER_HELIX_LARGE_DOWN | RideConstructionSpecialPieceSelected; _currentTrackPrice = MONEY32_UNDEFINED; window_ride_construction_update_active_elements(); break; } else if (_currentTrackCurve == TRACK_CURVE_RIGHT) { - _currentTrackCurve = TRACK_ELEM_RIGHT_QUARTER_HELIX_LARGE_DOWN | 0x100; + _currentTrackCurve = TRACK_ELEM_RIGHT_QUARTER_HELIX_LARGE_DOWN | RideConstructionSpecialPieceSelected; _currentTrackPrice = MONEY32_UNDEFINED; window_ride_construction_update_active_elements(); break; @@ -1438,7 +1439,7 @@ static void window_ride_construction_mousedown(rct_window* w, rct_widgetindex wi { if (_rideConstructionState == RIDE_CONSTRUCTION_STATE_FRONT && _currentTrackCurve == TRACK_CURVE_NONE) { - _currentTrackCurve = TRACK_ELEM_REVERSE_FREEFALL_SLOPE | 0x100; + _currentTrackCurve = TRACK_ELEM_REVERSE_FREEFALL_SLOPE | RideConstructionSpecialPieceSelected; window_ride_construction_update_active_elements(); } } @@ -1453,28 +1454,28 @@ static void window_ride_construction_mousedown(rct_window* w, rct_widgetindex wi { if (_currentTrackCurve == TRACK_CURVE_LEFT && _currentTrackBankEnd == TRACK_BANK_LEFT) { - _currentTrackCurve = TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_LARGE | 0x100; + _currentTrackCurve = TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_LARGE | RideConstructionSpecialPieceSelected; _currentTrackPrice = MONEY32_UNDEFINED; window_ride_construction_update_active_elements(); break; } else if (_currentTrackCurve == TRACK_CURVE_RIGHT && _currentTrackBankEnd == TRACK_BANK_RIGHT) { - _currentTrackCurve = TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_UP_LARGE | 0x100; + _currentTrackCurve = TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_UP_LARGE | RideConstructionSpecialPieceSelected; _currentTrackPrice = MONEY32_UNDEFINED; window_ride_construction_update_active_elements(); break; } else if (_currentTrackCurve == TRACK_CURVE_LEFT_SMALL && _currentTrackBankEnd == TRACK_BANK_LEFT) { - _currentTrackCurve = TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_SMALL | 0x100; + _currentTrackCurve = TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_SMALL | RideConstructionSpecialPieceSelected; _currentTrackPrice = MONEY32_UNDEFINED; window_ride_construction_update_active_elements(); break; } else if (_currentTrackCurve == TRACK_CURVE_RIGHT_SMALL && _currentTrackBankEnd == TRACK_BANK_RIGHT) { - _currentTrackCurve = TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_UP_SMALL | 0x100; + _currentTrackCurve = TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_UP_SMALL | RideConstructionSpecialPieceSelected; _currentTrackPrice = MONEY32_UNDEFINED; window_ride_construction_update_active_elements(); break; @@ -1484,14 +1485,14 @@ static void window_ride_construction_mousedown(rct_window* w, rct_widgetindex wi { if (_currentTrackCurve == TRACK_CURVE_LEFT && _currentTrackBankEnd == TRACK_BANK_LEFT) { - _currentTrackCurve = TRACK_ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_UP | 0x100; + _currentTrackCurve = TRACK_ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_UP | RideConstructionSpecialPieceSelected; _currentTrackPrice = MONEY32_UNDEFINED; window_ride_construction_update_active_elements(); break; } else if (_currentTrackCurve == TRACK_CURVE_RIGHT && _currentTrackBankEnd == TRACK_BANK_RIGHT) { - _currentTrackCurve = TRACK_ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_UP | 0x100; + _currentTrackCurve = TRACK_ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_UP | RideConstructionSpecialPieceSelected; _currentTrackPrice = MONEY32_UNDEFINED; window_ride_construction_update_active_elements(); break; @@ -1503,14 +1504,14 @@ static void window_ride_construction_mousedown(rct_window* w, rct_widgetindex wi { if (_currentTrackCurve == TRACK_CURVE_LEFT) { - _currentTrackCurve = TRACK_ELEM_LEFT_QUARTER_HELIX_LARGE_UP | 0x100; + _currentTrackCurve = TRACK_ELEM_LEFT_QUARTER_HELIX_LARGE_UP | RideConstructionSpecialPieceSelected; _currentTrackPrice = MONEY32_UNDEFINED; window_ride_construction_update_active_elements(); break; } else if (_currentTrackCurve == TRACK_CURVE_RIGHT) { - _currentTrackCurve = TRACK_ELEM_RIGHT_QUARTER_HELIX_LARGE_UP | 0x100; + _currentTrackCurve = TRACK_ELEM_RIGHT_QUARTER_HELIX_LARGE_UP | RideConstructionSpecialPieceSelected; _currentTrackPrice = MONEY32_UNDEFINED; window_ride_construction_update_active_elements(); break; @@ -1672,7 +1673,7 @@ static void window_ride_construction_dropdown(rct_window* w, rct_widgetindex wid _currentTrackLiftHill &= ~CONSTRUCTION_LIFT_HILL_SELECTED; break; } - _currentTrackCurve = trackPiece | 0x100; + _currentTrackCurve = trackPiece | RideConstructionSpecialPieceSelected; window_ride_construction_update_active_elements(); } static void RideConstructPlacedForwardGameActionCallback(const GameAction* ga, const TrackPlaceActionResult* result); @@ -1850,10 +1851,10 @@ static void window_ride_construction_construct(rct_window* w) viewport_set_visibility(1); } - if ((_currentTrackCurve >= (TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_SMALL | 0x100) - && _currentTrackCurve <= (TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_LARGE | 0x100)) - || (_currentTrackCurve >= (TRACK_ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_UP | 0x100) - && _currentTrackCurve <= (TRACK_ELEM_RIGHT_QUARTER_HELIX_LARGE_DOWN | 0x100)) + if ((_currentTrackCurve >= (TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_SMALL | RideConstructionSpecialPieceSelected) + && _currentTrackCurve <= (TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_LARGE | RideConstructionSpecialPieceSelected)) + || (_currentTrackCurve >= (TRACK_ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_UP | RideConstructionSpecialPieceSelected) + && _currentTrackCurve <= (TRACK_ELEM_RIGHT_QUARTER_HELIX_LARGE_DOWN | RideConstructionSpecialPieceSelected)) || (_currentTrackSlopeEnd != TRACK_SLOPE_NONE)) { viewport_set_visibility(2); @@ -2065,10 +2066,10 @@ static void window_ride_construction_update(rct_window* w) switch (_currentTrackCurve) { - case TRACK_ELEM_SPINNING_TUNNEL | 0x100: - case TRACK_ELEM_WHIRLPOOL | 0x100: - case TRACK_ELEM_RAPIDS | 0x100: - case TRACK_ELEM_WATERFALL | 0x100: + case TRACK_ELEM_SPINNING_TUNNEL | RideConstructionSpecialPieceSelected: + case TRACK_ELEM_WHIRLPOOL | RideConstructionSpecialPieceSelected: + case TRACK_ELEM_RAPIDS | RideConstructionSpecialPieceSelected: + case TRACK_ELEM_WATERFALL | RideConstructionSpecialPieceSelected: widget_invalidate(w, WIDX_CONSTRUCT); break; } @@ -2265,7 +2266,7 @@ static void window_ride_construction_invalidate(rct_window* w) } rct_string_id stringId = STR_RIDE_CONSTRUCTION_SPECIAL; - if (_currentTrackCurve & 0x100) + if (_currentTrackCurve & RideConstructionSpecialPieceSelected) { stringId = RideConfigurationStringIds[_currentTrackCurve & 0xFF]; if (stringId == STR_RAPIDS && ride->type == RIDE_TYPE_CAR_RIDE) @@ -3081,9 +3082,11 @@ static void window_ride_construction_update_widgets(rct_window* w) window_ride_construction_widgets[WIDX_U_TRACK].type = WWT_EMPTY; window_ride_construction_widgets[WIDX_O_TRACK].type = WWT_EMPTY; - bool brakesSelected = _selectedTrackType == TRACK_ELEM_BRAKES || _currentTrackCurve == (0x100 | TRACK_ELEM_BRAKES); + bool brakesSelected = _selectedTrackType == TRACK_ELEM_BRAKES + || _currentTrackCurve == (RideConstructionSpecialPieceSelected | TRACK_ELEM_BRAKES); _boosterTrackSelected = track_element_is_booster(ride->type, _selectedTrackType) - || (ride->type != RIDE_TYPE_STEEL_WILD_MOUSE && _currentTrackCurve == (0x100 | TRACK_ELEM_BOOSTER)); + || (ride->type != RIDE_TYPE_STEEL_WILD_MOUSE + && _currentTrackCurve == (RideConstructionSpecialPieceSelected | TRACK_ELEM_BOOSTER)); if (!brakesSelected && !_boosterTrackSelected) { @@ -3101,8 +3104,9 @@ static void window_ride_construction_update_widgets(rct_window* w) window_ride_construction_widgets[WIDX_O_TRACK].image = SPR_RIDE_CONSTRUCTION_WATER_CHANNEL; window_ride_construction_widgets[WIDX_U_TRACK].tooltip = STR_RIDE_CONSTRUCTION_STANDARD_RC_TRACK_TIP; window_ride_construction_widgets[WIDX_O_TRACK].tooltip = STR_RIDE_CONSTRUCTION_WATER_CHANNEL_TIP; - if ((_currentTrackCurve < TRACK_CURVE_LEFT_SMALL || _currentTrackCurve == (0x100 | TRACK_ELEM_S_BEND_LEFT) - || _currentTrackCurve == (0x100 | TRACK_ELEM_S_BEND_RIGHT)) + if ((_currentTrackCurve < TRACK_CURVE_LEFT_SMALL + || _currentTrackCurve == (RideConstructionSpecialPieceSelected | TRACK_ELEM_S_BEND_LEFT) + || _currentTrackCurve == (RideConstructionSpecialPieceSelected | TRACK_ELEM_S_BEND_RIGHT)) && _currentTrackSlopeEnd == TRACK_SLOPE_NONE && _currentTrackBankEnd == TRACK_BANK_NONE) { window_ride_construction_widgets[WIDX_BANKING_GROUPBOX].text = STR_RIDE_CONSTRUCTION_TRACK_STYLE; @@ -3168,7 +3172,8 @@ static void window_ride_construction_update_widgets(rct_window* w) window_ride_construction_widgets[WIDX_SEAT_ROTATION_ANGLE_SPINNER_UP].type = WWT_EMPTY; window_ride_construction_widgets[WIDX_SEAT_ROTATION_ANGLE_SPINNER_DOWN].type = WWT_EMPTY; if ((rideType == RIDE_TYPE_MULTI_DIMENSION_ROLLER_COASTER || rideType == RIDE_TYPE_MULTI_DIMENSION_ROLLER_COASTER_ALT) - && _selectedTrackType != TRACK_ELEM_BRAKES && _currentTrackCurve != (0x100 | TRACK_ELEM_BRAKES)) + && _selectedTrackType != TRACK_ELEM_BRAKES + && _currentTrackCurve != (RideConstructionSpecialPieceSelected | TRACK_ELEM_BRAKES)) { window_ride_construction_widgets[WIDX_SEAT_ROTATION_GROUPBOX].type = WWT_GROUPBOX; window_ride_construction_widgets[WIDX_SEAT_ROTATION_ANGLE_SPINNER].type = WWT_SPINNER; @@ -3375,7 +3380,7 @@ static void window_ride_construction_show_special_track_dropdown(rct_window* w, trackPieceStringId = STR_BOOSTER; } gDropdownItemsFormat[i] = trackPieceStringId; - if ((trackPiece | 0x100) == _currentTrackCurve) + if ((trackPiece | RideConstructionSpecialPieceSelected) == _currentTrackCurve) { defaultIndex = i; } diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 346749bbca..bfb733c0e7 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -1361,7 +1361,7 @@ static void ride_construction_reset_current_piece() if (!ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_HAS_NO_TRACK) || ride->num_stations == 0) { - _currentTrackCurve = RideTypeDescriptors[ride->type].StartTrackPiece | 0x100; + _currentTrackCurve = RideTypeDescriptors[ride->type].StartTrackPiece | RideConstructionSpecialPieceSelected; _currentTrackSlopeEnd = 0; _currentTrackBankEnd = 0; _currentTrackLiftHill = 0; @@ -1437,7 +1437,7 @@ void ride_construction_set_default_next_piece() { if (track_element_is_booster(ride->type, trackType)) { - curve = 0x100 | TRACK_ELEM_BOOSTER; + curve = RideConstructionSpecialPieceSelected | TRACK_ELEM_BOOSTER; } else { @@ -1501,7 +1501,7 @@ void ride_construction_set_default_next_piece() { if (track_element_is_booster(ride->type, trackType)) { - curve = 0x100 | TRACK_ELEM_BOOSTER; + curve = RideConstructionSpecialPieceSelected | TRACK_ELEM_BOOSTER; } else { @@ -1920,7 +1920,7 @@ int32_t ride_initialise_construction_window(Ride* ride) if (ride == nullptr) return 0; - _currentTrackCurve = RideTypeDescriptors[ride->type].StartTrackPiece | 0x100; + _currentTrackCurve = RideTypeDescriptors[ride->type].StartTrackPiece | RideConstructionSpecialPieceSelected; _currentTrackSlopeEnd = 0; _currentTrackBankEnd = 0; _currentTrackLiftHill = 0; diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index becd6f4ad9..0d8e4ff67d 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -13,6 +13,8 @@ #include "../object/Object.h" #include "Ride.h" +constexpr const uint16_t RideConstructionSpecialPieceSelected = 0x100; + using track_type_t = uint16_t; #pragma pack(push, 1) diff --git a/src/openrct2/windows/_legacy.cpp b/src/openrct2/windows/_legacy.cpp index 0becb1a2e5..45d03dfa34 100644 --- a/src/openrct2/windows/_legacy.cpp +++ b/src/openrct2/windows/_legacy.cpp @@ -449,13 +449,13 @@ void window_ride_construction_mouseup_demolish_next_piece(int32_t x, int32_t y, _currentTrackSelectionFlags = 0; _rideConstructionArrowPulseTime = 0; _currentTrackPieceDirection = direction & 3; - int32_t slope = _currentTrackCurve; - int32_t slopeEnd = _previousTrackSlopeEnd; - int32_t b2 = _currentTrackSlopeEnd; - int32_t bankEnd = _previousTrackBankEnd; - int32_t bankStart = _currentTrackBankEnd; - int32_t b5 = _currentTrackAlternative; - int32_t b4 = _currentTrackLiftHill; + int32_t savedCurrentTrackCurve = _currentTrackCurve; + int32_t savedPreviousTrackSlopeEnd = _previousTrackSlopeEnd; + int32_t savedCurrentTrackSlopeEnd = _currentTrackSlopeEnd; + int32_t savedPreviousTrackBankEnd = _previousTrackBankEnd; + int32_t savedCurrentTrackBankEnd = _currentTrackBankEnd; + int32_t savedCurrentTrackAlternative = _currentTrackAlternative; + int32_t savedCurrentTrackLiftHill = _currentTrackLiftHill; ride_construction_set_default_next_piece(); window_ride_construction_update_active_elements(); auto ride = get_ride(_currentRideIndex); @@ -463,15 +463,15 @@ void window_ride_construction_mouseup_demolish_next_piece(int32_t x, int32_t y, { ride_initialise_construction_window(ride); _currentTrackPieceDirection = direction & 3; - if (!(slope & 0x100)) + if (!(savedCurrentTrackCurve & RideConstructionSpecialPieceSelected)) { - _currentTrackCurve = slope; - _previousTrackSlopeEnd = slopeEnd; - _currentTrackSlopeEnd = b2; - _previousTrackBankEnd = bankEnd; - _currentTrackBankEnd = bankStart; - _currentTrackAlternative = b5; - _currentTrackLiftHill = b4; + _currentTrackCurve = savedCurrentTrackCurve; + _previousTrackSlopeEnd = savedPreviousTrackSlopeEnd; + _currentTrackSlopeEnd = savedCurrentTrackSlopeEnd; + _previousTrackBankEnd = savedPreviousTrackBankEnd; + _currentTrackBankEnd = savedCurrentTrackBankEnd; + _currentTrackAlternative = savedCurrentTrackAlternative; + _currentTrackLiftHill = savedCurrentTrackLiftHill; window_ride_construction_update_active_elements(); } }