Add spinning tunnel drawing code to Mini Helicopters

This commit is contained in:
Gymnasiast 2022-11-02 09:25:54 -04:00 committed by Gymnasiast
parent 482971710d
commit ebb264b702
No known key found for this signature in database
GPG Key ID: DBFFF47AB2CA3EDD
3 changed files with 30 additions and 1 deletions

View File

@ -8,6 +8,7 @@
- Improved: [#18350] Changed ride vehicle list to have less padding.
- Improved: [#18422] Allow adding images to music objects.
- Improved: [#18428] [Plugin] Add widget description interfaces to documentation.
- Improved: [#18487] Mini Helicopters track can now draw spinning tunnels.
- Improved: [#18514] Add colour preset to Spiral Slide.
- Change: [#17998] Show cursor when using inverted mouse dragging.
- Change: [#18230] Make the large flat to steep pieces available on the corkscrew roller coaster without cheats.

View File

@ -311,6 +311,31 @@ static void PaintMiniHelicoptersTrackRightQuarterTurn1Tile(
PaintMiniHelicoptersTrackLeftQuarterTurn1Tile(session, ride, trackSequence, (direction + 3) % 4, height, trackElement);
}
static void PaintMiniHelicoptersTrackSpinningTunnel(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
const uint32_t sprites[NumOrthogonalDirections][2] = {
{ SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_NE_SW, 28773 },
{ SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_SE_NW, 28774 },
{ SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_NE_SW, 28773 },
{ SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_SE_NW, 28774 },
};
ImageId imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][0]);
ImageId underlay = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]);
PaintAddImageAsParentRotated(session, direction, underlay, { 0, 6, height - 2 }, { 32, 20, 1 }, { 0, 6, height });
PaintAddImageAsChildRotated(session, direction, imageId, { 0, 0, height }, { 32, 20, 3 }, { 0, 6, height });
track_paint_util_spinning_tunnel_paint(session, 1, height, direction);
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);
WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.TrackColours[SCHEME_MISC]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
}
/**
* rct2: 0x0081F268
*/
@ -349,6 +374,9 @@ TRACK_PAINT_FUNCTION GetTrackPaintFunctionMiniHelicopters(int32_t trackType)
return PaintMiniHelicoptersTrackLeftQuarterTurn1Tile;
case TrackElemType::RightQuarterTurn1Tile:
return PaintMiniHelicoptersTrackRightQuarterTurn1Tile;
case TrackElemType::SpinningTunnel:
return PaintMiniHelicoptersTrackSpinningTunnel;
}
return nullptr;

View File

@ -21,7 +21,7 @@ constexpr const RideTypeDescriptor MiniHelicoptersRTD =
SET_FIELD(AlternateType, RIDE_TYPE_NULL),
SET_FIELD(Category, RIDE_CATEGORY_GENTLE),
SET_FIELD(EnabledTrackPieces, {TRACK_STRAIGHT, TRACK_STATION_END, TRACK_SLOPE, TRACK_CURVE_VERY_SMALL, TRACK_CURVE_SMALL}),
SET_FIELD(ExtraTrackPieces, {}),
SET_FIELD(ExtraTrackPieces, {TRACK_SPINNING_TUNNEL}),
SET_FIELD(CoveredTrackPieces, {}),
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionMiniHelicopters),