1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-19 13:03:11 +01:00

Use wooden support table for Reverse Freefall and Virginia Reel

This commit is contained in:
Gymnasiast
2024-09-12 22:33:43 +02:00
parent 416119201b
commit 1f93f075f4
2 changed files with 31 additions and 75 deletions

View File

@@ -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<TrackElemType::Flat>(
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<TrackElemType::EndStation>(
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<TrackElemType::ReverseFreefallSlope>(
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<TrackElemType::ReverseFreefallSlope>(
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<TrackElemType::ReverseFreefallSlope>(
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<TrackElemType::OnRidePhoto>(
session, supportType.wooden, trackSequence, direction, height, session.SupportColours);
;
TrackPaintUtilOnridePhotoPaint2(session, direction, trackElement, height);
}

View File

@@ -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<TrackElemType::Flat>(
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<TrackElemType::Up25>(
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<TrackElemType::FlatToUp25>(
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<TrackElemType::Up25ToFlat>(
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<TrackElemType::EndStation>(
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<TrackElemType::LeftQuarterTurn3Tiles>(
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<TrackElemType::LeftQuarterTurn1Tile>(
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;