From 1f93f075f4ecc3d28e3bdcb3808d6c1a20c4d6b5 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Thu, 12 Sep 2024 22:33:43 +0200 Subject: [PATCH] Use wooden support table for Reverse Freefall and Virginia Reel --- .../track/coaster/ReverseFreefallCoaster.cpp | 30 ++++---- .../paint/track/coaster/VirginiaReel.cpp | 76 +++++-------------- 2 files changed, 31 insertions(+), 75 deletions(-) diff --git a/src/openrct2/paint/track/coaster/ReverseFreefallCoaster.cpp b/src/openrct2/paint/track/coaster/ReverseFreefallCoaster.cpp index f3df99068e..1d7d18cb4d 100644 --- a/src/openrct2/paint/track/coaster/ReverseFreefallCoaster.cpp +++ b/src/openrct2/paint/track/coaster/ReverseFreefallCoaster.cpp @@ -16,6 +16,7 @@ #include "../../../world/Map.h" #include "../../Paint.h" #include "../../support/WoodenSupports.h" +#include "../../support/WoodenSupports.hpp" #include "../../tile_element/Paint.TileElement.h" #include "../../tile_element/Segment.h" #include "../../track/Segment.h" @@ -219,8 +220,8 @@ static void PaintReverseFreefallRCFlat( PaintUtilPushTunnelLeft(session, height, kTunnelGroup, TunnelSubType::Flat); } - WoodenASupportsPaintSetupRotated( - session, supportType.wooden, WoodenSupportSubType::NeSw, direction, height, session.SupportColours); + DrawSupportForSequenceA( + session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); } @@ -240,9 +241,6 @@ static void PaintReverseFreefallRCStation( imageId = session.TrackColours.WithIndex(reverse_freefall_rc_track_pieces_station[direction]); PaintAddImageAsChild(session, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 1 } }); - - WoodenASupportsPaintSetupRotated( - session, supportType.wooden, WoodenSupportSubType::NeSw, direction, height, session.SupportColours); } else if (direction == 1 || direction == 3) { @@ -253,10 +251,9 @@ static void PaintReverseFreefallRCStation( imageId = session.TrackColours.WithIndex(reverse_freefall_rc_track_pieces_station[direction]); PaintAddImageAsChild(session, imageId, { 0, 0, height }, { { 6, 0, height }, { 20, 32, 1 } }); - - WoodenASupportsPaintSetupRotated( - session, supportType.wooden, WoodenSupportSubType::NeSw, direction, height, session.SupportColours); } + DrawSupportForSequenceA( + session, supportType.wooden, trackSequence, direction, height, session.SupportColours); TrackPaintUtilDrawStationTunnel(session, direction, height); TrackPaintUtilDrawNarrowStationPlatform(session, ride, direction, height, 5, trackElement); @@ -313,14 +310,14 @@ static void PaintReverseFreefallRCSlope( session, direction, supportsImageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, bbHeight } }); } - WoodenASupportsPaintSetupRotated( - session, supportType.wooden, WoodenSupportSubType::NeSw, direction, height, session.SupportColours); + DrawSupportForSequenceA( + session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + supportHeights[trackSequence]); break; case 5: - if (WoodenASupportsPaintSetupRotated( - session, supportType.wooden, WoodenSupportSubType::NeSw, direction, height, session.SupportColours)) + if (DrawSupportForSequenceA( + session, supportType.wooden, trackSequence, direction, height, session.SupportColours)) { ImageId floorImageId; if (direction & 1) @@ -360,8 +357,8 @@ static void PaintReverseFreefallRCSlope( PaintAddImageAsChildRotated( session, direction, supportsImageId, { 0, 0, height }, { { 27, 6, height }, { 1, 20, 126 } }); } - WoodenASupportsPaintSetupRotated( - session, supportType.wooden, WoodenSupportSubType::NeSw, direction, height, session.SupportColours); + DrawSupportForSequenceA( + session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + supportHeights[trackSequence]); break; @@ -422,8 +419,9 @@ static void PaintReverseFreefallRCOnridePhoto( PaintAddImageAsParentRotated( session, direction, colour.WithIndex(imageIds[direction]), { 0, 0, height }, { { 0, 6, height }, { 32, 20, 1 } }); - WoodenASupportsPaintSetupRotated( - session, supportType.wooden, WoodenSupportSubType::NeSw, direction, height, session.SupportColours); + DrawSupportForSequenceA( + session, supportType.wooden, trackSequence, direction, height, session.SupportColours); + ; TrackPaintUtilOnridePhotoPaint2(session, direction, trackElement, height); } diff --git a/src/openrct2/paint/track/coaster/VirginiaReel.cpp b/src/openrct2/paint/track/coaster/VirginiaReel.cpp index 98d3719894..4c633a1190 100644 --- a/src/openrct2/paint/track/coaster/VirginiaReel.cpp +++ b/src/openrct2/paint/track/coaster/VirginiaReel.cpp @@ -13,6 +13,7 @@ #include "../../../ride/Vehicle.h" #include "../../Paint.h" #include "../../support/WoodenSupports.h" +#include "../../support/WoodenSupports.hpp" #include "../../tile_element/Segment.h" #include "../../track/Segment.h" #include "../../track/Support.h" @@ -182,8 +183,8 @@ static void PaintVirginiaReelTrackFlat( PaintUtilPushTunnelLeft(session, height, kTunnelGroup, TunnelSubType::Flat); } - WoodenASupportsPaintSetupRotated( - session, supportType.wooden, WoodenSupportSubType::NeSw, direction, height, session.SupportColours); + DrawSupportForSequenceA( + session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight); @@ -217,30 +218,20 @@ static void PaintVirginiaReelTrack25DegUp( session.WoodenSupportsPrependTo = ps; } + DrawSupportForSequenceA( + session, supportType.wooden, trackSequence, direction, height, session.SupportColours); switch (direction) { case 0: - WoodenASupportsPaintSetupRotated( - session, supportType.wooden, WoodenSupportSubType::NeSw, direction, height, session.SupportColours, - WoodenSupportTransitionType::Up25Deg); PaintUtilPushTunnelLeft(session, height - 8, kTunnelGroup, TunnelSubType::SlopeStart); break; case 1: - WoodenASupportsPaintSetupRotated( - session, supportType.wooden, WoodenSupportSubType::NeSw, direction, height, session.SupportColours, - WoodenSupportTransitionType::Up25Deg); PaintUtilPushTunnelRight(session, height + 8, kTunnelGroup, TunnelSubType::SlopeEnd); break; case 2: - WoodenASupportsPaintSetupRotated( - session, supportType.wooden, WoodenSupportSubType::NeSw, direction, height, session.SupportColours, - WoodenSupportTransitionType::Up25Deg); PaintUtilPushTunnelLeft(session, height + 8, kTunnelGroup, TunnelSubType::SlopeEnd); break; case 3: - WoodenASupportsPaintSetupRotated( - session, supportType.wooden, WoodenSupportSubType::NeSw, direction, height, session.SupportColours, - WoodenSupportTransitionType::Up25Deg); PaintUtilPushTunnelRight(session, height - 8, kTunnelGroup, TunnelSubType::SlopeStart); break; } @@ -267,39 +258,24 @@ static void PaintVirginiaReelTrackFlatTo25DegUp( case 0: PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 27, 2 } }); - WoodenASupportsPaintSetupRotated( - session, supportType.wooden, WoodenSupportSubType::NeSw, direction, height, session.SupportColours, - WoodenSupportTransitionType::FlatToUp25Deg); - PaintUtilPushTunnelLeft(session, height, kTunnelGroup, TunnelSubType::Flat); break; case 1: ps = PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 2, 0, height }, { 27, 32, 2 } }); session.WoodenSupportsPrependTo = ps; - - WoodenASupportsPaintSetupRotated( - session, supportType.wooden, WoodenSupportSubType::NeSw, direction, height, session.SupportColours, - WoodenSupportTransitionType::FlatToUp25Deg); - PaintUtilPushTunnelRight(session, height, kTunnelGroup, TunnelSubType::SlopeEnd); break; case 2: ps = PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 27, 2 } }); session.WoodenSupportsPrependTo = ps; - - WoodenASupportsPaintSetupRotated( - session, supportType.wooden, WoodenSupportSubType::NeSw, direction, height, session.SupportColours, - WoodenSupportTransitionType::FlatToUp25Deg); - PaintUtilPushTunnelLeft(session, height, kTunnelGroup, TunnelSubType::SlopeEnd); break; case 3: PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 2, 0, height }, { 27, 32, 2 } }); - - WoodenASupportsPaintSetupRotated( - session, supportType.wooden, WoodenSupportSubType::NeSw, direction, height, session.SupportColours, - WoodenSupportTransitionType::FlatToUp25Deg); - PaintUtilPushTunnelRight(session, height, kTunnelGroup, TunnelSubType::Flat); break; } + DrawSupportForSequenceA( + session, supportType.wooden, trackSequence, direction, height, session.SupportColours); + PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat); + PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); PaintUtilSetGeneralSupportHeight(session, height + 48); } @@ -332,30 +308,20 @@ static void PaintVirginiaReelTrack25DegUpToFlat( session.WoodenSupportsPrependTo = ps; } + DrawSupportForSequenceA( + session, supportType.wooden, trackSequence, direction, height, session.SupportColours); switch (direction) { case 0: - WoodenASupportsPaintSetupRotated( - session, supportType.wooden, WoodenSupportSubType::NeSw, direction, height, session.SupportColours, - WoodenSupportTransitionType::Up25DegToFlat); PaintUtilPushTunnelLeft(session, height - 8, kTunnelGroup, TunnelSubType::Flat); break; case 1: - WoodenASupportsPaintSetupRotated( - session, supportType.wooden, WoodenSupportSubType::NeSw, direction, height, session.SupportColours, - WoodenSupportTransitionType::Up25DegToFlat); PaintUtilPushTunnelRight(session, height + 8, kTunnelGroup, TunnelSubType::FlatTo25Deg); break; case 2: - WoodenASupportsPaintSetupRotated( - session, supportType.wooden, WoodenSupportSubType::NeSw, direction, height, session.SupportColours, - WoodenSupportTransitionType::Up25DegToFlat); PaintUtilPushTunnelLeft(session, height + 8, kTunnelGroup, TunnelSubType::FlatTo25Deg); break; case 3: - WoodenASupportsPaintSetupRotated( - session, supportType.wooden, WoodenSupportSubType::NeSw, direction, height, session.SupportColours, - WoodenSupportTransitionType::Up25DegToFlat); PaintUtilPushTunnelRight(session, height - 8, kTunnelGroup, TunnelSubType::Flat); break; } @@ -416,8 +382,8 @@ static void PaintVirginiaReelStation( PaintUtilPushTunnelRight(session, height, kTunnelGroup, TunnelSubType::Flat); } - WoodenASupportsPaintSetupRotated( - session, supportType.wooden, WoodenSupportSubType::NeSw, direction, height, session.SupportColours); + DrawSupportForSequenceA( + session, supportType.wooden, trackSequence, direction, height, session.SupportColours); TrackPaintUtilDrawStation(session, ride, direction, height, trackElement); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); @@ -448,8 +414,8 @@ static void PaintVirginiaReelTrackLeftQuarterTurn3Tiles( break; case 0: case 3: - WoodenASupportsPaintSetupRotated( - session, supportType.wooden, WoodenSupportSubType::Corner3, direction, height, session.SupportColours); + DrawSupportForSequenceA( + session, supportType.wooden, trackSequence, direction, height, session.SupportColours); PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); break; } @@ -482,25 +448,17 @@ static void PaintVirginiaReelTrackLeftQuarterTurn1Tile( TrackPaintUtilLeftQuarterTurn1TilePaint( session, 2, height, 0, direction, session.TrackColours, virginia_reel_track_pieces_flat_quarter_turn_1_tile); + DrawSupportForSequenceA( + session, supportType.wooden, trackSequence, direction, height, session.SupportColours); switch (direction) { case 0: - WoodenASupportsPaintSetup( - session, supportType.wooden, WoodenSupportSubType::Corner3, height, session.SupportColours); PaintUtilPushTunnelLeft(session, height, kTunnelGroup, TunnelSubType::Flat); break; - case 1: - WoodenASupportsPaintSetup( - session, supportType.wooden, WoodenSupportSubType::Corner0, height, session.SupportColours); - break; case 2: - WoodenASupportsPaintSetup( - session, supportType.wooden, WoodenSupportSubType::Corner1, height, session.SupportColours); PaintUtilPushTunnelRight(session, height, kTunnelGroup, TunnelSubType::Flat); break; case 3: - WoodenASupportsPaintSetup( - session, supportType.wooden, WoodenSupportSubType::Corner2, height, session.SupportColours); PaintUtilPushTunnelRight(session, height, kTunnelGroup, TunnelSubType::Flat); PaintUtilPushTunnelLeft(session, height, kTunnelGroup, TunnelSubType::Flat); break;