From 9dd5fd8d98c752ab99cb359a0f588453b2a2aec7 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek Date: Mon, 18 Dec 2023 11:38:25 +0100 Subject: [PATCH] Update support drawing for thrill rides and water rides (#21007) * Update support drawing for thrill rides and water rides * Consolidate support drawing calls for Go Karts --- src/openrct2/ride/thrill/3dCinema.cpp | 3 +- src/openrct2/ride/thrill/Enterprise.cpp | 3 +- src/openrct2/ride/thrill/GoKarts.cpp | 37 ++-- src/openrct2/ride/thrill/LaunchedFreefall.cpp | 3 +- src/openrct2/ride/thrill/MotionSimulator.cpp | 3 +- src/openrct2/ride/thrill/RotoDrop.cpp | 3 +- src/openrct2/ride/thrill/SwingingShip.cpp | 4 +- src/openrct2/ride/thrill/TopSpin.cpp | 3 +- src/openrct2/ride/thrill/Twist.cpp | 3 +- src/openrct2/ride/water/RiverRapids.cpp | 72 +++++-- src/openrct2/ride/water/SplashBoats.cpp | 182 +++++++++++++----- 11 files changed, 232 insertions(+), 84 deletions(-) diff --git a/src/openrct2/ride/thrill/3dCinema.cpp b/src/openrct2/ride/thrill/3dCinema.cpp index 1d6a2ac7fa..2a1df74504 100644 --- a/src/openrct2/ride/thrill/3dCinema.cpp +++ b/src/openrct2/ride/thrill/3dCinema.cpp @@ -56,7 +56,8 @@ static void Paint3dCinema( int32_t edges = edges_3x3[trackSequence]; - WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.TrackColours[SCHEME_MISC]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_MISC]); const StationObject* stationObject = ride.GetStationObject(); diff --git a/src/openrct2/ride/thrill/Enterprise.cpp b/src/openrct2/ride/thrill/Enterprise.cpp index ae24a39bc0..2d31ae050a 100644 --- a/src/openrct2/ride/thrill/Enterprise.cpp +++ b/src/openrct2/ride/thrill/Enterprise.cpp @@ -95,7 +95,8 @@ static void PaintEnterprise( int32_t edges = edges_4x4[trackSequence]; - WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_MISC]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_MISC]); const StationObject* stationObject = ride.GetStationObject(); TrackPaintUtilPaintFloor(session, edges, session.TrackColours[SCHEME_TRACK], height, floorSpritesCork, stationObject); diff --git a/src/openrct2/ride/thrill/GoKarts.cpp b/src/openrct2/ride/thrill/GoKarts.cpp index e57418d552..af41cc4d48 100644 --- a/src/openrct2/ride/thrill/GoKarts.cpp +++ b/src/openrct2/ride/thrill/GoKarts.cpp @@ -151,7 +151,9 @@ static void PaintGoKartsTrackFlat( PaintUtilPushTunnelRight(session, height, TUNNEL_SQUARE_FLAT); } - WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS]); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20); @@ -187,22 +189,22 @@ static void PaintGoKartsTrack25DegUp( session.WoodenSupportsPrependTo = ps; + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_SUPPORTS], + WoodenSupportTransitionType::Up25Deg); + switch (direction) { case 0: - WoodenASupportsPaintSetup(session, 0, 9, height, session.TrackColours[SCHEME_SUPPORTS]); PaintUtilPushTunnelLeft(session, height - 8, TUNNEL_SQUARE_7); break; case 1: - WoodenASupportsPaintSetup(session, 1, 10, height, session.TrackColours[SCHEME_SUPPORTS]); PaintUtilPushTunnelRight(session, height + 8, TUNNEL_SQUARE_8); break; case 2: - WoodenASupportsPaintSetup(session, 0, 11, height, session.TrackColours[SCHEME_SUPPORTS]); PaintUtilPushTunnelLeft(session, height + 8, TUNNEL_SQUARE_8); break; case 3: - WoodenASupportsPaintSetup(session, 1, 12, height, session.TrackColours[SCHEME_SUPPORTS]); PaintUtilPushTunnelRight(session, height - 8, TUNNEL_SQUARE_7); break; } @@ -241,22 +243,22 @@ static void PaintGoKartsTrackFlatTo25DegUp( session.WoodenSupportsPrependTo = ps; + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_SUPPORTS], + WoodenSupportTransitionType::FlatToUp25Deg); + switch (direction) { case 0: - WoodenASupportsPaintSetup(session, 0, 1, height, session.TrackColours[SCHEME_SUPPORTS]); PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_FLAT); break; case 1: - WoodenASupportsPaintSetup(session, 1, 2, height, session.TrackColours[SCHEME_SUPPORTS]); PaintUtilPushTunnelRight(session, height, TUNNEL_SQUARE_8); break; case 2: - WoodenASupportsPaintSetup(session, 0, 3, height, session.TrackColours[SCHEME_SUPPORTS]); PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_8); break; case 3: - WoodenASupportsPaintSetup(session, 1, 4, height, session.TrackColours[SCHEME_SUPPORTS]); PaintUtilPushTunnelRight(session, height, TUNNEL_SQUARE_FLAT); break; } @@ -295,22 +297,23 @@ static void PaintGoKartsTrack25DegUpToFlat( session.WoodenSupportsPrependTo = ps; + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_SUPPORTS], + WoodenSupportTransitionType::Up25DegToFlat); + switch (direction) { case 0: - WoodenASupportsPaintSetup(session, 0, 5, height, session.TrackColours[SCHEME_SUPPORTS]); + PaintUtilPushTunnelLeft(session, height - 8, TUNNEL_SQUARE_FLAT); break; case 1: - WoodenASupportsPaintSetup(session, 1, 6, height, session.TrackColours[SCHEME_SUPPORTS]); PaintUtilPushTunnelRight(session, height + 8, TUNNEL_14); break; case 2: - WoodenASupportsPaintSetup(session, 0, 7, height, session.TrackColours[SCHEME_SUPPORTS]); PaintUtilPushTunnelLeft(session, height + 8, TUNNEL_14); break; case 3: - WoodenASupportsPaintSetup(session, 1, 8, height, session.TrackColours[SCHEME_SUPPORTS]); PaintUtilPushTunnelRight(session, height - 8, TUNNEL_SQUARE_FLAT); break; } @@ -446,7 +449,9 @@ static void PaintGoKartsStation( } } - WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS]); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20); @@ -516,7 +521,9 @@ static void PaintGoKartsTrackLeftQuarterTurn1Tile( break; } - WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS]); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20); diff --git a/src/openrct2/ride/thrill/LaunchedFreefall.cpp b/src/openrct2/ride/thrill/LaunchedFreefall.cpp index 1e605c4e02..c3c8108a1a 100644 --- a/src/openrct2/ride/thrill/LaunchedFreefall.cpp +++ b/src/openrct2/ride/thrill/LaunchedFreefall.cpp @@ -95,7 +95,8 @@ static void PaintLaunchedFreefallBase( int32_t edges = edges_3x3[trackSequence]; - WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.TrackColours[SCHEME_MISC]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_MISC]); const StationObject* stationObject = ride.GetStationObject(); diff --git a/src/openrct2/ride/thrill/MotionSimulator.cpp b/src/openrct2/ride/thrill/MotionSimulator.cpp index f0f32248ad..9b6ab657cc 100644 --- a/src/openrct2/ride/thrill/MotionSimulator.cpp +++ b/src/openrct2/ride/thrill/MotionSimulator.cpp @@ -109,7 +109,8 @@ static void PaintMotionSimulator( int32_t edges = edges_2x2[trackSequence]; - WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.TrackColours[SCHEME_MISC]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_MISC]); const StationObject* stationObject = ride.GetStationObject(); diff --git a/src/openrct2/ride/thrill/RotoDrop.cpp b/src/openrct2/ride/thrill/RotoDrop.cpp index a803eab8a2..8c2714c7f5 100644 --- a/src/openrct2/ride/thrill/RotoDrop.cpp +++ b/src/openrct2/ride/thrill/RotoDrop.cpp @@ -107,7 +107,8 @@ static void PaintRotoDropBase( int32_t edges = edges_3x3[trackSequence]; - WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.TrackColours[SCHEME_MISC]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_MISC]); const StationObject* stationObject = ride.GetStationObject(); diff --git a/src/openrct2/ride/thrill/SwingingShip.cpp b/src/openrct2/ride/thrill/SwingingShip.cpp index cd66ded8eb..69c8ae7b70 100644 --- a/src/openrct2/ride/thrill/SwingingShip.cpp +++ b/src/openrct2/ride/thrill/SwingingShip.cpp @@ -163,7 +163,9 @@ static void PaintSwingingShip( if (relativeTrackSequence == 1 || relativeTrackSequence == 4) { - WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS]); } else if (direction & 1) { diff --git a/src/openrct2/ride/thrill/TopSpin.cpp b/src/openrct2/ride/thrill/TopSpin.cpp index 63f7c99774..1f7548befd 100644 --- a/src/openrct2/ride/thrill/TopSpin.cpp +++ b/src/openrct2/ride/thrill/TopSpin.cpp @@ -189,7 +189,8 @@ static void PaintTopSpin( int32_t edges = edges_3x3[trackSequence]; - WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_MISC]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_MISC]); const StationObject* stationObject = ride.GetStationObject(); diff --git a/src/openrct2/ride/thrill/Twist.cpp b/src/openrct2/ride/thrill/Twist.cpp index 5f60c48455..c93d25369a 100644 --- a/src/openrct2/ride/thrill/Twist.cpp +++ b/src/openrct2/ride/thrill/Twist.cpp @@ -91,7 +91,8 @@ static void PaintTwist( ImageId imageId; - WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.TrackColours[SCHEME_MISC]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_MISC]); const StationObject* stationObject = ride.GetStationObject(); TrackPaintUtilPaintFloor(session, edges, session.TrackColours[SCHEME_MISC], height, floorSpritesCork, stationObject); diff --git a/src/openrct2/ride/water/RiverRapids.cpp b/src/openrct2/ride/water/RiverRapids.cpp index 07d301188b..c212af76ea 100644 --- a/src/openrct2/ride/water/RiverRapids.cpp +++ b/src/openrct2/ride/water/RiverRapids.cpp @@ -295,7 +295,9 @@ static void PaintRiverRapidsTrackFlat( PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 10, 10, height }, { 1, 2, 5 } }); } - WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS]); if (direction & 1) { @@ -334,7 +336,9 @@ static void PaintRiverRapidsTrack25Deg(PaintSession& session, uint8_t direction, imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]); PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 27, height + 16 }, { 32, 1, 34 } }); - WoodenASupportsPaintSetup(session, 0, 9, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::Up25Deg); PaintUtilPushTunnelLeft(session, height - 8, TUNNEL_SQUARE_7); break; @@ -346,7 +350,9 @@ static void PaintRiverRapidsTrack25Deg(PaintSession& session, uint8_t direction, imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]); PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 27, 0, height + 16 }, { 1, 32, 34 } }); - WoodenASupportsPaintSetup(session, 1, 10, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::Up25Deg); PaintUtilPushTunnelRight(session, height + 8, TUNNEL_SQUARE_8); break; @@ -358,7 +364,9 @@ static void PaintRiverRapidsTrack25Deg(PaintSession& session, uint8_t direction, imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]); PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 27, height + 16 }, { 32, 1, 34 } }); - WoodenASupportsPaintSetup(session, 0, 11, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::Up25Deg); PaintUtilPushTunnelLeft(session, height + 8, TUNNEL_SQUARE_8); break; @@ -369,7 +377,9 @@ static void PaintRiverRapidsTrack25Deg(PaintSession& session, uint8_t direction, imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]); PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 27, 0, height + 16 }, { 1, 32, 34 } }); - WoodenASupportsPaintSetup(session, 1, 12, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::Up25Deg); PaintUtilPushTunnelRight(session, height - 8, TUNNEL_SQUARE_7); break; } @@ -393,7 +403,9 @@ static void PaintRiverRapidsTrack25DegToFlatA( imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]); PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 27, height + 16 }, { 32, 1, 18 } }); - WoodenASupportsPaintSetup(session, 0, 5, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::Up25DegToFlat); PaintUtilPushTunnelLeft(session, height - 8, TUNNEL_SQUARE_FLAT); break; @@ -405,7 +417,9 @@ static void PaintRiverRapidsTrack25DegToFlatA( imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]); PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 27, 0, height + 16 }, { 1, 32, 18 } }); - WoodenASupportsPaintSetup(session, 1, 6, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::Up25DegToFlat); PaintUtilPushTunnelRight(session, height + 8, TUNNEL_14); break; @@ -418,7 +432,9 @@ static void PaintRiverRapidsTrack25DegToFlatA( PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 18 } }); - WoodenASupportsPaintSetup(session, 0, 7, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::Up25DegToFlat); PaintUtilPushTunnelLeft(session, height + 8, TUNNEL_14); break; @@ -429,7 +445,9 @@ static void PaintRiverRapidsTrack25DegToFlatA( imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]); PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 27, 0, height + 16 }, { 1, 32, 18 } }); - WoodenASupportsPaintSetup(session, 1, 8, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::Up25DegToFlat); PaintUtilPushTunnelRight(session, height - 8, TUNNEL_SQUARE_FLAT); break; } @@ -453,7 +471,9 @@ static void PaintRiverRapidsTrack25DegToFlatB( imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]); PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 27, height + 16 }, { 32, 1, 26 } }); - WoodenASupportsPaintSetup(session, 0, 1, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::FlatToUp25Deg); PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_FLAT); break; @@ -465,7 +485,9 @@ static void PaintRiverRapidsTrack25DegToFlatB( imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]); PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 27, 0, height + 16 }, { 1, 32, 26 } }); - WoodenASupportsPaintSetup(session, 1, 2, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::FlatToUp25Deg); PaintUtilPushTunnelRight(session, height, TUNNEL_SQUARE_8); break; @@ -477,7 +499,9 @@ static void PaintRiverRapidsTrack25DegToFlatB( imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]); PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 27, height + 16 }, { 32, 1, 26 } }); - WoodenASupportsPaintSetup(session, 0, 3, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::FlatToUp25Deg); PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_8); break; @@ -488,7 +512,9 @@ static void PaintRiverRapidsTrack25DegToFlatB( imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]); PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 27, 0, height + 16 }, { 1, 32, 26 } }); - WoodenASupportsPaintSetup(session, 1, 4, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::FlatToUp25Deg); PaintUtilPushTunnelRight(session, height, TUNNEL_SQUARE_FLAT); break; } @@ -596,7 +622,9 @@ static void PaintRiverRapidsTrackLeftQuarterTurn1Tile( break; } - WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS]); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20); } @@ -653,7 +681,9 @@ static void PaintRiverRapidsTrackRightQuarterTurn1Tile( break; } - WoodenASupportsPaintSetup(session, 1 - (direction & 1), 0, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NwSe, direction, height, + session.TrackColours[SCHEME_SUPPORTS]); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20); } @@ -713,7 +743,9 @@ static void PaintRiverRapidsTrackWaterfall( PaintAddImageAsChild(session, imageId, { 0, 0, height }, bb); } - WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS]); if (direction & 1) { @@ -754,7 +786,9 @@ static void PaintRiverRapidsTrackRapids( PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 27, height + 17 }, { 32, 1, 11 } }); } - WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS]); if (direction & 1) { @@ -825,7 +859,9 @@ static void PaintRiverRapidsTrackWhirlpool( PaintAddImageAsParent(session, imageId, { 0, 0, height }, bb); } - WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS]); if (direction & 1) { diff --git a/src/openrct2/ride/water/SplashBoats.cpp b/src/openrct2/ride/water/SplashBoats.cpp index 56ec60e072..9a169e90e4 100644 --- a/src/openrct2/ride/water/SplashBoats.cpp +++ b/src/openrct2/ride/water/SplashBoats.cpp @@ -484,7 +484,9 @@ static void PaintSplashBoatsTrack25DegUp( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } }); PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 50 } }); - WoodenASupportsPaintSetup(session, (direction & 1), 9 + direction, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_SUPPORTS], + WoodenSupportTransitionType::Up25Deg); if (direction == 0 || direction == 3) { @@ -509,7 +511,9 @@ static void PaintSplashBoatsTrack60DegUp( session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } }); PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 98 } }); - WoodenASupportsPaintSetup(session, (direction & 1), 21 + direction, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_SUPPORTS], + WoodenSupportTransitionType::Up60Deg); if (direction == 0 || direction == 3) { @@ -533,7 +537,9 @@ static void PaintSplashBoatsTrackFlatTo25DegUp( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } }); PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 42 } }); - WoodenASupportsPaintSetup(session, (direction & 1), 1 + direction, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_SUPPORTS], + WoodenSupportTransitionType::FlatToUp25Deg); if (direction == 0 || direction == 3) { @@ -557,7 +563,9 @@ static void PaintSplashBoatsTrack25DegUpToFlat( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } }); PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 34 } }); - WoodenASupportsPaintSetup(session, (direction & 1), 5 + direction, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_SUPPORTS], + WoodenSupportTransitionType::Up25DegToFlat); if (direction == 0 || direction == 3) { @@ -582,7 +590,9 @@ static void PaintSplashBoatsTrack25DegUpTo60DegUp( session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } }); PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 66 } }); - WoodenASupportsPaintSetup(session, (direction & 1), 13 + direction, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_SUPPORTS], + WoodenSupportTransitionType::Up25DegToUp60Deg); if (direction == 0 || direction == 3) { @@ -607,7 +617,9 @@ static void PaintSplashBoatsTrack60DegUpTo25DegUp( session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } }); PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 66 } }); - WoodenASupportsPaintSetup(session, (direction & 1), 17 + direction, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_SUPPORTS], + WoodenSupportTransitionType::Up60DegToUp25Deg); if (direction == 0 || direction == 3) { @@ -631,9 +643,9 @@ static void PaintSplashBoatsTrack25DegDown( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } }); PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 50 } }); - static constexpr uint8_t specialSupport[] = { 11, 12, 9, 10 }; - WoodenASupportsPaintSetup( - session, (direction & 1), specialSupport[direction], height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, (direction + 2) % NumOrthogonalDirections, height, + session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::Up25Deg); if (direction == 0 || direction == 3) { @@ -664,9 +676,9 @@ static void PaintSplashBoatsTrackFlatTo25DegDown( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } }); PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 34 } }); - static constexpr uint8_t specialSupport[] = { 7, 8, 5, 6 }; - WoodenASupportsPaintSetup( - session, (direction & 1), specialSupport[direction], height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, (direction + 2) % NumOrthogonalDirections, height, + session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::Up25DegToFlat); if (direction == 0 || direction == 3) { @@ -704,9 +716,9 @@ static void PaintSplashBoatsTrack25DegDownToFlat( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } }); PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 42 } }); - static constexpr uint8_t specialSupport[] = { 3, 4, 1, 2 }; - WoodenASupportsPaintSetup( - session, (direction & 1), specialSupport[direction], height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, (direction + 2) % NumOrthogonalDirections, height, + session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::FlatToUp25Deg); if (direction == 0 || direction == 3) { @@ -749,7 +761,9 @@ static void PaintSplashBoatsTrackFlat( PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 26 } }); } - WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS]); if (direction & 1) { @@ -788,7 +802,9 @@ static void PaintSplashBoatsStation( PaintAddImageAsParent(session, imageId, { 0, 0, height }, { 32, 32, 1 }); } - WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS]); TrackPaintUtilDrawNarrowStationPlatform(session, ride, direction, height, 7, trackElement); @@ -810,14 +826,48 @@ static void PaintSplashBoatsTrackLeftQuarterTurn5Tiles( if (trackSequence != 1 && trackSequence != 4) { - static constexpr uint8_t supportTypes[][7] = { - { 0, 0xFF, 5, 3, 0xFF, 5, 1 }, - { 1, 0xFF, 2, 4, 0xFF, 2, 0 }, - { 0, 0xFF, 3, 5, 0xFF, 3, 1 }, - { 1, 0xFF, 4, 2, 0xFF, 4, 0 }, + static constexpr WoodenSupportSubType supportTypes[NumOrthogonalDirections][7] = { + { + WoodenSupportSubType::NeSw, + WoodenSupportSubType::NeSw, // Unused + WoodenSupportSubType::Corner3, + WoodenSupportSubType::Corner1, + WoodenSupportSubType::NeSw, // Unused + WoodenSupportSubType::Corner3, + WoodenSupportSubType::NwSe, + }, + { + WoodenSupportSubType::NwSe, + WoodenSupportSubType::NeSw, // Unused + WoodenSupportSubType::Corner0, + WoodenSupportSubType::Corner2, + WoodenSupportSubType::NeSw, // Unused + WoodenSupportSubType::Corner0, + WoodenSupportSubType::NeSw, + }, + { + WoodenSupportSubType::NeSw, + WoodenSupportSubType::NeSw, // Unused + WoodenSupportSubType::Corner1, + WoodenSupportSubType::Corner3, + WoodenSupportSubType::NeSw, // Unused + WoodenSupportSubType::Corner1, + WoodenSupportSubType::NwSe, + }, + { + WoodenSupportSubType::NwSe, + WoodenSupportSubType::NeSw, // Unused + WoodenSupportSubType::Corner2, + WoodenSupportSubType::Corner0, + WoodenSupportSubType::NeSw, // Unused + WoodenSupportSubType::Corner2, + WoodenSupportSubType::NeSw, + }, }; - uint8_t supportType = supportTypes[direction][trackSequence]; - WoodenASupportsPaintSetup(session, supportType, 0, height, session.TrackColours[SCHEME_SUPPORTS]); + + WoodenASupportsPaintSetup( + session, WoodenSupportType::Truss, supportTypes[direction][trackSequence], height, + session.TrackColours[SCHEME_SUPPORTS]); } switch (trackSequence) @@ -889,14 +939,48 @@ static void PaintSplashBoatsTrackRightQuarterTurn5Tiles( if (trackSequence != 1 && trackSequence != 4) { - static constexpr uint8_t supportTypes[][7] = { - { 0, 0xFF, 4, 2, 0xFF, 4, 1 }, - { 1, 0xFF, 5, 3, 0xFF, 5, 0 }, - { 0, 0xFF, 2, 4, 0xFF, 2, 1 }, - { 1, 0xFF, 3, 5, 0xFF, 3, 0 }, + static constexpr WoodenSupportSubType supportTypes[][7] = { + { + WoodenSupportSubType::NeSw, + WoodenSupportSubType::NeSw, // Unused + WoodenSupportSubType::Corner2, + WoodenSupportSubType::Corner0, + WoodenSupportSubType::NeSw, // Unused + WoodenSupportSubType::Corner2, + WoodenSupportSubType::NwSe, + }, + { + WoodenSupportSubType::NwSe, + WoodenSupportSubType::NeSw, // Unused + WoodenSupportSubType::Corner3, + WoodenSupportSubType::Corner1, + WoodenSupportSubType::NeSw, // Unused + WoodenSupportSubType::Corner3, + WoodenSupportSubType::NeSw, + }, + { + WoodenSupportSubType::NeSw, + WoodenSupportSubType::NeSw, // Unused + WoodenSupportSubType::Corner0, + WoodenSupportSubType::Corner2, + WoodenSupportSubType::NeSw, // Unused + WoodenSupportSubType::Corner0, + WoodenSupportSubType::NwSe, + }, + { + WoodenSupportSubType::NwSe, + WoodenSupportSubType::NeSw, // Unused + WoodenSupportSubType::Corner1, + WoodenSupportSubType::Corner3, + WoodenSupportSubType::NeSw, // Unused + WoodenSupportSubType::Corner1, + WoodenSupportSubType::NeSw, + }, }; - uint8_t supportType = supportTypes[direction][trackSequence]; - WoodenASupportsPaintSetup(session, supportType, 0, height, session.TrackColours[SCHEME_SUPPORTS]); + + WoodenASupportsPaintSetup( + session, WoodenSupportType::Truss, supportTypes[direction][trackSequence], height, + session.TrackColours[SCHEME_SUPPORTS]); } switch (trackSequence) @@ -991,8 +1075,6 @@ static void PaintSplashBoatsTrackSBendLeft( auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][0]); auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][1]); int16_t bboy; - static constexpr int32_t supportTypes1[] = { 5, 2, 3, 4 }; - static constexpr int32_t supportTypes2[] = { 3, 4, 5, 2 }; switch (trackSequence) { @@ -1000,7 +1082,9 @@ static void PaintSplashBoatsTrackSBendLeft( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 27, 2 } }); PaintAddImageAsParentRotated( session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } }); - WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS]); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); break; case 1: @@ -1009,7 +1093,9 @@ static void PaintSplashBoatsTrackSBendLeft( PaintAddImageAsParentRotated( session, direction, frontImageId, { 0, 0, height }, { { 0, bboy, height + 27 }, { 32, 26, 0 } }); - WoodenASupportsPaintSetup(session, supportTypes1[direction], 0, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::Corner3, direction, height, + session.TrackColours[SCHEME_SUPPORTS]); PaintUtilSetSegmentSupportHeight( session, @@ -1022,7 +1108,9 @@ static void PaintSplashBoatsTrackSBendLeft( PaintAddImageAsParentRotated( session, direction, frontImageId, { 0, 0, height }, { { 0, bboy, height + 27 }, { 32, 26, 0 } }); - WoodenASupportsPaintSetup(session, supportTypes2[direction], 0, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::Corner1, direction, height, + session.TrackColours[SCHEME_SUPPORTS]); PaintUtilSetSegmentSupportHeight( session, @@ -1033,7 +1121,9 @@ static void PaintSplashBoatsTrackSBendLeft( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 27, 2 } }); PaintAddImageAsParentRotated( session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } }); - WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS]); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); break; } @@ -1091,8 +1181,6 @@ static void PaintSplashBoatsTrackSBendRight( auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][0]); auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][1]); int16_t bboy; - static constexpr int32_t supportTypes1[] = { 4, 5, 2, 3 }; - static constexpr int32_t supportTypes2[] = { 2, 3, 4, 5 }; switch (trackSequence) { @@ -1100,7 +1188,9 @@ static void PaintSplashBoatsTrackSBendRight( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 27, 2 } }); PaintAddImageAsParentRotated( session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } }); - WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS]); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); break; case 1: @@ -1109,7 +1199,9 @@ static void PaintSplashBoatsTrackSBendRight( PaintAddImageAsParentRotated( session, direction, frontImageId, { 0, 0, height }, { { 0, bboy, height + 27 }, { 32, 26, 0 } }); - WoodenASupportsPaintSetup(session, supportTypes1[direction], 0, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::Corner2, direction, height, + session.TrackColours[SCHEME_SUPPORTS]); PaintUtilSetSegmentSupportHeight( session, @@ -1122,7 +1214,9 @@ static void PaintSplashBoatsTrackSBendRight( PaintAddImageAsParentRotated( session, direction, frontImageId, { 0, 0, height }, { { 0, bboy, height + 27 }, { 32, 26, 0 } }); - WoodenASupportsPaintSetup(session, supportTypes2[direction], 0, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height, + session.TrackColours[SCHEME_SUPPORTS]); PaintUtilSetSegmentSupportHeight( session, @@ -1133,7 +1227,9 @@ static void PaintSplashBoatsTrackSBendRight( PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 27, 2 } }); PaintAddImageAsParentRotated( session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } }); - WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]); + WoodenASupportsPaintSetupRotated( + session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, + session.TrackColours[SCHEME_SUPPORTS]); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); break; }