diff --git a/distribution/changelog.txt b/distribution/changelog.txt index dff313bf32..024e8dc5a5 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,5 +1,6 @@ 0.4.18 (in development) ------------------------------------------------------------------------ +- Improved: [#23260] Add diagonal (block) brakes to LSM Launched Roller Coaster. 0.4.17 (2024-12-08) ------------------------------------------------------------------------ diff --git a/resources/g2/sprites.json b/resources/g2/sprites.json index b622f3effb..1fd7ac0314 100644 --- a/resources/g2/sprites.json +++ b/resources/g2/sprites.json @@ -2847,6 +2847,46 @@ "y": -9, "palette": "keep" }, + { + "path": "track/lattice_triangle/diagonal_block_brake_closed_alt_0.png", + "x": -32, + "y": 3 + }, + { + "path": "track/lattice_triangle/diagonal_block_brake_closed_alt_1.png", + "x": -8, + "y": -9 + }, + { + "path": "track/lattice_triangle/diagonal_block_brake_closed_alt_2.png", + "x": -32, + "y": 3 + }, + { + "path": "track/lattice_triangle/diagonal_block_brake_closed_alt_3.png", + "x": -8, + "y": -9 + }, + { + "path": "track/lattice_triangle/diagonal_block_brake_open_alt_0.png", + "x": -32, + "y": 3 + }, + { + "path": "track/lattice_triangle/diagonal_block_brake_open_alt_1.png", + "x": -8, + "y": -9 + }, + { + "path": "track/lattice_triangle/diagonal_block_brake_open_alt_2.png", + "x": -32, + "y": 3 + }, + { + "path": "track/lattice_triangle/diagonal_block_brake_open_alt_3.png", + "x": -8, + "y": -9 + }, { "path": "track/lattice_triangle/diagonal_booster_0.png", "x": -32, @@ -2877,6 +2917,46 @@ "x": -8, "y": -9 }, + { + "path": "track/lattice_triangle/diagonal_brake_closed_alt_0.png", + "x": -32, + "y": 3 + }, + { + "path": "track/lattice_triangle/diagonal_brake_closed_alt_1.png", + "x": -8, + "y": -9 + }, + { + "path": "track/lattice_triangle/diagonal_brake_closed_alt_2.png", + "x": -32, + "y": 3 + }, + { + "path": "track/lattice_triangle/diagonal_brake_closed_alt_3.png", + "x": -8, + "y": -9 + }, + { + "path": "track/lattice_triangle/diagonal_brake_open_alt_0.png", + "x": -32, + "y": 3 + }, + { + "path": "track/lattice_triangle/diagonal_brake_open_alt_1.png", + "x": -8, + "y": -9 + }, + { + "path": "track/lattice_triangle/diagonal_brake_open_alt_2.png", + "x": -32, + "y": 3 + }, + { + "path": "track/lattice_triangle/diagonal_brake_open_alt_3.png", + "x": -8, + "y": -9 + }, { "path": "track/lattice_triangle/drive_tyre_1.png", "x": -22, diff --git a/resources/g2/track/lattice_triangle/diagonal_block_brake_closed_alt_0.png b/resources/g2/track/lattice_triangle/diagonal_block_brake_closed_alt_0.png new file mode 100644 index 0000000000..3892bbc03a Binary files /dev/null and b/resources/g2/track/lattice_triangle/diagonal_block_brake_closed_alt_0.png differ diff --git a/resources/g2/track/lattice_triangle/diagonal_block_brake_closed_alt_1.png b/resources/g2/track/lattice_triangle/diagonal_block_brake_closed_alt_1.png new file mode 100644 index 0000000000..a27b55d363 Binary files /dev/null and b/resources/g2/track/lattice_triangle/diagonal_block_brake_closed_alt_1.png differ diff --git a/resources/g2/track/lattice_triangle/diagonal_block_brake_closed_alt_2.png b/resources/g2/track/lattice_triangle/diagonal_block_brake_closed_alt_2.png new file mode 100644 index 0000000000..16df076618 Binary files /dev/null and b/resources/g2/track/lattice_triangle/diagonal_block_brake_closed_alt_2.png differ diff --git a/resources/g2/track/lattice_triangle/diagonal_block_brake_closed_alt_3.png b/resources/g2/track/lattice_triangle/diagonal_block_brake_closed_alt_3.png new file mode 100644 index 0000000000..57798d877c Binary files /dev/null and b/resources/g2/track/lattice_triangle/diagonal_block_brake_closed_alt_3.png differ diff --git a/resources/g2/track/lattice_triangle/diagonal_block_brake_open_alt_0.png b/resources/g2/track/lattice_triangle/diagonal_block_brake_open_alt_0.png new file mode 100644 index 0000000000..42058e8a92 Binary files /dev/null and b/resources/g2/track/lattice_triangle/diagonal_block_brake_open_alt_0.png differ diff --git a/resources/g2/track/lattice_triangle/diagonal_block_brake_open_alt_1.png b/resources/g2/track/lattice_triangle/diagonal_block_brake_open_alt_1.png new file mode 100644 index 0000000000..bf8fa531df Binary files /dev/null and b/resources/g2/track/lattice_triangle/diagonal_block_brake_open_alt_1.png differ diff --git a/resources/g2/track/lattice_triangle/diagonal_block_brake_open_alt_2.png b/resources/g2/track/lattice_triangle/diagonal_block_brake_open_alt_2.png new file mode 100644 index 0000000000..e2a8eabcab Binary files /dev/null and b/resources/g2/track/lattice_triangle/diagonal_block_brake_open_alt_2.png differ diff --git a/resources/g2/track/lattice_triangle/diagonal_block_brake_open_alt_3.png b/resources/g2/track/lattice_triangle/diagonal_block_brake_open_alt_3.png new file mode 100644 index 0000000000..761a85e2ce Binary files /dev/null and b/resources/g2/track/lattice_triangle/diagonal_block_brake_open_alt_3.png differ diff --git a/resources/g2/track/lattice_triangle/diagonal_brake_closed_alt_0.png b/resources/g2/track/lattice_triangle/diagonal_brake_closed_alt_0.png new file mode 100644 index 0000000000..57e108ec96 Binary files /dev/null and b/resources/g2/track/lattice_triangle/diagonal_brake_closed_alt_0.png differ diff --git a/resources/g2/track/lattice_triangle/diagonal_brake_closed_alt_1.png b/resources/g2/track/lattice_triangle/diagonal_brake_closed_alt_1.png new file mode 100644 index 0000000000..00eb707f28 Binary files /dev/null and b/resources/g2/track/lattice_triangle/diagonal_brake_closed_alt_1.png differ diff --git a/resources/g2/track/lattice_triangle/diagonal_brake_closed_alt_2.png b/resources/g2/track/lattice_triangle/diagonal_brake_closed_alt_2.png new file mode 100644 index 0000000000..529a09b2cf Binary files /dev/null and b/resources/g2/track/lattice_triangle/diagonal_brake_closed_alt_2.png differ diff --git a/resources/g2/track/lattice_triangle/diagonal_brake_closed_alt_3.png b/resources/g2/track/lattice_triangle/diagonal_brake_closed_alt_3.png new file mode 100644 index 0000000000..e5c911f354 Binary files /dev/null and b/resources/g2/track/lattice_triangle/diagonal_brake_closed_alt_3.png differ diff --git a/resources/g2/track/lattice_triangle/diagonal_brake_open_alt_0.png b/resources/g2/track/lattice_triangle/diagonal_brake_open_alt_0.png new file mode 100644 index 0000000000..9d7a7f20f4 Binary files /dev/null and b/resources/g2/track/lattice_triangle/diagonal_brake_open_alt_0.png differ diff --git a/resources/g2/track/lattice_triangle/diagonal_brake_open_alt_1.png b/resources/g2/track/lattice_triangle/diagonal_brake_open_alt_1.png new file mode 100644 index 0000000000..b36baeba21 Binary files /dev/null and b/resources/g2/track/lattice_triangle/diagonal_brake_open_alt_1.png differ diff --git a/resources/g2/track/lattice_triangle/diagonal_brake_open_alt_2.png b/resources/g2/track/lattice_triangle/diagonal_brake_open_alt_2.png new file mode 100644 index 0000000000..dc50c34c89 Binary files /dev/null and b/resources/g2/track/lattice_triangle/diagonal_brake_open_alt_2.png differ diff --git a/resources/g2/track/lattice_triangle/diagonal_brake_open_alt_3.png b/resources/g2/track/lattice_triangle/diagonal_brake_open_alt_3.png new file mode 100644 index 0000000000..571e240566 Binary files /dev/null and b/resources/g2/track/lattice_triangle/diagonal_brake_open_alt_3.png differ diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index ddc7d7ace9..ad9b50728a 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -49,7 +49,7 @@ using namespace OpenRCT2; // It is used for making sure only compatible builds get connected, even within // single OpenRCT2 version. -constexpr uint8_t kNetworkStreamVersion = 0; +constexpr uint8_t kNetworkStreamVersion = 1; const std::string kNetworkStreamID = std::string(OPENRCT2_VERSION) + "-" + std::to_string(kNetworkStreamVersion); diff --git a/src/openrct2/paint/track/coaster/LatticeTriangleTrackAlt.cpp b/src/openrct2/paint/track/coaster/LatticeTriangleTrackAlt.cpp index fce98ceb48..e94fff4498 100644 --- a/src/openrct2/paint/track/coaster/LatticeTriangleTrackAlt.cpp +++ b/src/openrct2/paint/track/coaster/LatticeTriangleTrackAlt.cpp @@ -206,6 +206,52 @@ static void LatticeTriangleTrackAltDiagBooster( TrackPaintUtilDiagTilesPaintExtra(session, 3, height, direction, trackSequence, images, supportType.metal); } +static void LatticeTriangleTrackAltDiagBlockBrake( + PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height, + const TrackElement& trackElement, SupportType supportType) +{ + constexpr ImageIndex images[2][kNumOrthogonalDirections] = { + { + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BLOCK_BRAKE_OPEN_ALT_1, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BLOCK_BRAKE_OPEN_ALT_2, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BLOCK_BRAKE_OPEN_ALT_3, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BLOCK_BRAKE_OPEN_ALT_4, + }, + { + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BLOCK_BRAKE_CLOSED_ALT_1, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BLOCK_BRAKE_CLOSED_ALT_2, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BLOCK_BRAKE_CLOSED_ALT_3, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BLOCK_BRAKE_CLOSED_ALT_4, + }, + }; + + TrackPaintUtilDiagTilesPaintExtra( + session, 3, height, direction, trackSequence, images[trackElement.IsBrakeClosed()], supportType.metal); +} + +static void LatticeTriangleTrackAltDiagBrake( + PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height, + const TrackElement& trackElement, SupportType supportType) +{ + constexpr ImageIndex images[2][kNumOrthogonalDirections] = { + { + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BRAKE_OPEN_ALT_1, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BRAKE_OPEN_ALT_2, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BRAKE_OPEN_ALT_3, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BRAKE_OPEN_ALT_4, + }, + { + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BRAKE_CLOSED_ALT_1, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BRAKE_CLOSED_ALT_2, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BRAKE_CLOSED_ALT_3, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BRAKE_CLOSED_ALT_4, + }, + }; + + TrackPaintUtilDiagTilesPaintExtra( + session, 3, height, direction, trackSequence, images[trackElement.IsBrakeClosed()], supportType.metal); +} + TRACK_PAINT_FUNCTION GetTrackPaintFunctionLatticeTriangleTrackAlt(TrackElemType trackType) { switch (trackType) @@ -224,6 +270,10 @@ TRACK_PAINT_FUNCTION GetTrackPaintFunctionLatticeTriangleTrackAlt(TrackElemType return LatticeTriangleTrackAltPoweredLift; case TrackElemType::DiagBooster: return LatticeTriangleTrackAltDiagBooster; + case TrackElemType::DiagBlockBrakes: + return LatticeTriangleTrackAltDiagBlockBrake; + case TrackElemType::DiagBrakes: + return LatticeTriangleTrackAltDiagBrake; default: return GetTrackPaintFunctionLatticeTriangleTrack(trackType); diff --git a/src/openrct2/ride/rtd/coaster/LSMLaunchedRollerCoaster.h b/src/openrct2/ride/rtd/coaster/LSMLaunchedRollerCoaster.h index a884e6e28b..0be82be97a 100644 --- a/src/openrct2/ride/rtd/coaster/LSMLaunchedRollerCoaster.h +++ b/src/openrct2/ride/rtd/coaster/LSMLaunchedRollerCoaster.h @@ -22,7 +22,7 @@ constexpr RideTypeDescriptor LSMLaunchedRollerCoasterRTD = .TrackPaintFunctions = TrackDrawerDescriptor({ .Drawer = GetTrackPaintFunctionLatticeTriangleTrackAlt, .supportType = MetalSupportType::Tubes, - .enabledTrackGroups = {TrackGroup::straight, TrackGroup::stationEnd, TrackGroup::flatRollBanking, TrackGroup::slope, TrackGroup::slopeSteepUp, TrackGroup::slopeSteepDown, TrackGroup::slopeCurve, TrackGroup::slopeCurveSteep, TrackGroup::sBend, TrackGroup::curveSmall, TrackGroup::curve, TrackGroup::curveLarge, TrackGroup::helixDownBankedHalf, TrackGroup::helixUpBankedHalf, TrackGroup::brakes, TrackGroup::onridePhoto, TrackGroup::blockBrakes, TrackGroup::slopeRollBanking, TrackGroup::slopeSteepLong, TrackGroup::slopeCurveBanked, TrackGroup::slopeCurveLarge, TrackGroup::slopeCurveLargeBanked, TrackGroup::booster, TrackGroup::diagBooster, TrackGroup::poweredLift, TrackGroup::slopeVertical, TrackGroup::curveVertical, TrackGroup::barrelRoll, TrackGroup::quarterLoop, TrackGroup::halfLoop, TrackGroup::halfLoopMedium, TrackGroup::halfLoopLarge, TrackGroup::verticalLoop, TrackGroup::corkscrew, TrackGroup::corkscrewLarge, TrackGroup::zeroGRoll, TrackGroup::zeroGRollLarge }, + .enabledTrackGroups = {TrackGroup::straight, TrackGroup::stationEnd, TrackGroup::flatRollBanking, TrackGroup::slope, TrackGroup::slopeSteepUp, TrackGroup::slopeSteepDown, TrackGroup::slopeCurve, TrackGroup::slopeCurveSteep, TrackGroup::sBend, TrackGroup::curveSmall, TrackGroup::curve, TrackGroup::curveLarge, TrackGroup::helixDownBankedHalf, TrackGroup::helixUpBankedHalf, TrackGroup::brakes, TrackGroup::diagBrakes, TrackGroup::diagBlockBrakes, TrackGroup::onridePhoto, TrackGroup::blockBrakes, TrackGroup::slopeRollBanking, TrackGroup::slopeSteepLong, TrackGroup::slopeCurveBanked, TrackGroup::slopeCurveLarge, TrackGroup::slopeCurveLargeBanked, TrackGroup::booster, TrackGroup::diagBooster, TrackGroup::poweredLift, TrackGroup::slopeVertical, TrackGroup::curveVertical, TrackGroup::barrelRoll, TrackGroup::quarterLoop, TrackGroup::halfLoop, TrackGroup::halfLoopMedium, TrackGroup::halfLoopLarge, TrackGroup::verticalLoop, TrackGroup::corkscrew, TrackGroup::corkscrewLarge, TrackGroup::zeroGRoll, TrackGroup::zeroGRollLarge }, .extraTrackGroups = {TrackGroup::liftHill, TrackGroup::liftHillCable}, }), .InvertedTrackPaintFunctions = {}, diff --git a/src/openrct2/sprites.h b/src/openrct2/sprites.h index fe29f564f8..1025e97cd5 100644 --- a/src/openrct2/sprites.h +++ b/src/openrct2/sprites.h @@ -1247,12 +1247,28 @@ enum : ImageIndex SPR_G2_LATTICE_TRIANGLE_TRACK_BRAKE_ALT_OPEN_SW_NE, SPR_G2_LATTICE_TRIANGLE_TRACK_BRAKE_ALT_OPEN_SE_NW, SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BRAKES, - SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BOOSTER_1 = SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BRAKES + 6, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BLOCK_BRAKE_CLOSED_ALT_1 = SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BRAKES + 6, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BLOCK_BRAKE_CLOSED_ALT_2, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BLOCK_BRAKE_CLOSED_ALT_3, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BLOCK_BRAKE_CLOSED_ALT_4, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BLOCK_BRAKE_OPEN_ALT_1, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BLOCK_BRAKE_OPEN_ALT_2, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BLOCK_BRAKE_OPEN_ALT_3, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BLOCK_BRAKE_OPEN_ALT_4, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BOOSTER_1, SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BOOSTER_2, SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BOOSTER_ALT_1, SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BOOSTER_ALT_2, SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BOOSTER_ALT_3, SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BOOSTER_ALT_4, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BRAKE_CLOSED_ALT_1, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BRAKE_CLOSED_ALT_2, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BRAKE_CLOSED_ALT_3, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BRAKE_CLOSED_ALT_4, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BRAKE_OPEN_ALT_1, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BRAKE_OPEN_ALT_2, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BRAKE_OPEN_ALT_3, + SPR_G2_LATTICE_TRIANGLE_TRACK_DIAG_BRAKE_OPEN_ALT_4, SPR_G2_LATTICE_TRIANGLE_TRACK_DRIVE_TYRE_NE_SW, SPR_G2_LATTICE_TRIANGLE_TRACK_DRIVE_TYRE_NW_SE, SPR_G2_LATTICE_TRIANGLE_TRACK_DRIVE_TYRE_SW_NE,