Add large zero g rolls to the Twister Roller Coaster

This commit is contained in:
mix
2024-10-25 09:40:04 +01:00
parent 2c3b3ee34e
commit e2ccc159cc
45 changed files with 605 additions and 3 deletions
+240
View File
@@ -8383,6 +8383,246 @@
"y": -29,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_left_1_1.png",
"x": -25,
"y": -47,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_left_1_2.png",
"x": -26,
"y": -51,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_left_1_3.png",
"x": -17,
"y": -52,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_left_1_4.png",
"x": -17,
"y": -42,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_left_1_5.png",
"x": -21,
"y": -29,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_left_2_1.png",
"x": -25,
"y": -44,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_left_2_2.png",
"x": -28,
"y": -34,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_left_2_3.png",
"x": -32,
"y": -26,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_left_2_4.png",
"x": -30,
"y": -19,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_left_3_1.png",
"x": -9,
"y": -31,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_left_3_2.png",
"x": -17,
"y": -30,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_left_3_3.png",
"x": -31,
"y": -41,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_left_3_4.png",
"x": -24,
"y": -31,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_left_3_5.png",
"x": -9,
"y": -9,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_left_3_6.png",
"x": -27,
"y": -23,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_left_4_1.png",
"x": -18,
"y": -55,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_left_4_2.png",
"x": -17,
"y": -48,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_left_4_3.png",
"x": -10,
"y": -31,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_left_4_4.png",
"x": -9,
"y": -39,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_left_4_5.png",
"x": -23,
"y": -30,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_right_1_1.png",
"x": -25,
"y": -57,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_right_1_2.png",
"x": -32,
"y": -51,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_right_1_3.png",
"x": -32,
"y": -31,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_right_1_4.png",
"x": -32,
"y": -40,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_right_1_5.png",
"x": -32,
"y": -30,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_right_2_1.png",
"x": -24,
"y": -32,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_right_2_2.png",
"x": -25,
"y": -30,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_right_2_3.png",
"x": -24,
"y": -41,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_right_2_4.png",
"x": -19,
"y": -31,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_right_2_5.png",
"x": -8,
"y": -8,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_right_2_6.png",
"x": -8,
"y": -23,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_right_3_1.png",
"x": -19,
"y": -43,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_right_3_2.png",
"x": -14,
"y": -33,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_right_3_3.png",
"x": -5,
"y": -26,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_right_3_4.png",
"x": -25,
"y": -19,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_right_4_1.png",
"x": -23,
"y": -46,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_right_4_2.png",
"x": -21,
"y": -50,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_right_4_3.png",
"x": -32,
"y": -51,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_right_4_4.png",
"x": -29,
"y": -42,
"palette": "keep"
},
{
"path": "track/bm/large_zero_g_roll_right_4_5.png",
"x": -25,
"y": -29,
"palette": "keep"
},
{
"path": "track/railway/quarter_turn_3_tiles_sw_se_part_3.png",
"x": -8,
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 908 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 918 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 929 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 910 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -18658,6 +18658,357 @@ static void TwisterRCTrackRightZeroGRollDown(
TwisterRCTrackRightZeroGRollUp(session, ride, 2 - trackSequence, (direction + 2) & 3, height, trackElement, supportType);
}
static void TwisterRCTrackLeftLargeZeroGRollUp(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement, SupportType supportType)
{
switch (trackSequence)
{
case 0:
switch (direction)
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 0)),
{ 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 5)),
{ 0, 0, height }, { { 0, 30, height }, { 32, 0, 96 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 9)),
{ 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 10)),
{ 0, 0, height }, { { 0, 30, height }, { 32, 0, 96 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 15)),
{ 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
break;
}
MetalASupportsPaintSetup(session, supportType.metal, MetalSupportPlace::Centre, 21, height, session.SupportColours);
if (direction == 0 || direction == 3)
{
PaintUtilPushTunnelRotated(session, direction, height - 8, kTunnelGroup, TunnelSubType::SlopeStart);
}
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(BlockedSegments::kStraightFlat, direction), 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 88);
break;
case 1:
switch (direction)
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 1)),
{ 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 2)),
{ 0, 0, height }, { { 0, 30, height }, { 32, 0, 96 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 6)),
{ 0, 0, height }, { { 0, 30, height }, { 32, 0, 64 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 11)),
{ 0, 0, height }, { { 0, 2, height }, { 32, 0, 64 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 16)),
{ 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
break;
}
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(BlockedSegments::kStraightFlat, direction), 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 72);
break;
case 2:
switch (direction)
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 3)),
{ 0, 0, height }, { { 0, 30, height }, { 32, 0, 64 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 7)),
{ 0, 0, height }, { { 0, 30, height }, { 32, 0, 48 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 12)),
{ 0, 0, height }, { { 0, 2, height }, { 32, 0, 48 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 17)),
{ 0, 0, height }, { { 0, 2, height }, { 32, 0, 32 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 18)),
{ 0, 0, height }, { { 0, 6, height + 40 }, { 32, 20, 3 } });
break;
}
PaintUtilSetSegmentSupportHeight(
session,
PaintUtilRotateSegments(
EnumsToFlags(
PaintSegment::leftCorner, PaintSegment::topLeftSide, PaintSegment::topCorner,
PaintSegment::bottomLeftSide, PaintSegment::centre, PaintSegment::topRightSide),
direction),
0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 64);
break;
case 3:
PaintUtilSetSegmentSupportHeight(
session,
PaintUtilRotateSegments(
EnumsToFlags(
PaintSegment::leftCorner, PaintSegment::topLeftSide, PaintSegment::topCorner,
PaintSegment::bottomLeftSide, PaintSegment::centre, PaintSegment::topRightSide),
direction),
0xFFFF, 0);
switch (direction)
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 4)),
{ 0, 0, height }, { { 0, 26, height }, { 32, 0, 32 } });
MetalASupportsPaintSetup(
session, supportType.metal, MetalSupportPlace::BottomLeftSide, 0, height + 25, session.SupportColours);
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 8)),
{ 0, 0, height }, { { 0, 26, height }, { 32, 0, 20 } });
MetalASupportsPaintSetup(
session, supportType.metal, MetalSupportPlace::TopLeftSide, 0, height + 32, session.SupportColours);
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 13)),
{ 0, 0, height }, { { 0, 2, height }, { 32, 0, 32 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 14)),
{ 0, 0, height }, { { 0, 6, height + 40 }, { 32, 20, 3 } });
MetalASupportsPaintSetup(
session, supportType.metal, MetalSupportPlace::TopRightSide, 0, height + 36, session.SupportColours);
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 19)),
{ 0, 0, height }, { { 0, 18, height }, { 32, 1, 30 } });
MetalASupportsPaintSetup(
session, supportType.metal, MetalSupportPlace::BottomRightSide, 0, height + 37, session.SupportColours);
break;
}
switch (direction)
{
case 1:
PaintUtilPushTunnelRight(session, height + 8, kTunnelGroup, TunnelSubType::Flat);
break;
case 2:
PaintUtilPushTunnelLeft(session, height + 8, kTunnelGroup, TunnelSubType::Flat);
break;
}
PaintUtilSetGeneralSupportHeight(session, height + 40);
break;
}
}
static void TwisterRCTrackRightLargeZeroGRollUp(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement, SupportType supportType)
{
switch (trackSequence)
{
case 0:
switch (direction)
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 20)),
{ 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 25)),
{ 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 26)),
{ 0, 0, height }, { { 0, 30, height }, { 32, 0, 96 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 31)),
{ 0, 0, height }, { { 0, 30, height }, { 32, 0, 96 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 35)),
{ 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
break;
}
MetalASupportsPaintSetup(session, supportType.metal, MetalSupportPlace::Centre, 21, height, session.SupportColours);
if (direction == 0 || direction == 3)
{
PaintUtilPushTunnelRotated(session, direction, height - 8, kTunnelGroup, TunnelSubType::SlopeStart);
}
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(BlockedSegments::kStraightFlat, direction), 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 88);
break;
case 1:
switch (direction)
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 21)),
{ 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 27)),
{ 0, 0, height }, { { 0, 2, height }, { 32, 0, 64 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 32)),
{ 0, 0, height }, { { 0, 30, height }, { 32, 0, 64 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 36)),
{ 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 37)),
{ 0, 0, height }, { { 0, 30, height }, { 32, 0, 96 } });
break;
}
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(BlockedSegments::kStraightFlat, direction), 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 72);
break;
case 2:
switch (direction)
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 22)),
{ 0, 0, height }, { { 0, 2, height }, { 32, 0, 32 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 23)),
{ 0, 0, height }, { { 0, 6, height + 40 }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 28)),
{ 0, 0, height }, { { 0, 2, height }, { 32, 0, 48 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 33)),
{ 0, 0, height }, { { 0, 30, height }, { 32, 0, 48 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 38)),
{ 0, 0, height }, { { 0, 30, height }, { 32, 0, 64 } });
break;
}
PaintUtilSetSegmentSupportHeight(
session,
PaintUtilRotateSegments(
EnumsToFlags(
PaintSegment::rightCorner, PaintSegment::bottomCorner, PaintSegment::centre, PaintSegment::topRightSide,
PaintSegment::bottomLeftSide, PaintSegment::bottomRightSide),
direction),
0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 64);
break;
case 3:
PaintUtilSetSegmentSupportHeight(
session,
PaintUtilRotateSegments(
EnumsToFlags(
PaintSegment::rightCorner, PaintSegment::bottomCorner, PaintSegment::centre, PaintSegment::topRightSide,
PaintSegment::bottomLeftSide, PaintSegment::bottomRightSide),
direction),
0xFFFF, 0);
switch (direction)
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 24)),
{ 0, 0, height }, { { 0, 18, height }, { 32, 1, 30 } });
MetalASupportsPaintSetup(
session, supportType.metal, MetalSupportPlace::BottomLeftSide, 0, height + 37, session.SupportColours);
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 29)),
{ 0, 0, height }, { { 0, 2, height }, { 32, 0, 32 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 30)),
{ 0, 0, height }, { { 0, 6, height + 40 }, { 32, 20, 3 } });
MetalASupportsPaintSetup(
session, supportType.metal, MetalSupportPlace::TopLeftSide, 0, height + 36, session.SupportColours);
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 34)),
{ 0, 0, height }, { { 0, 26, height }, { 32, 0, 20 } });
MetalASupportsPaintSetup(
session, supportType.metal, MetalSupportPlace::TopRightSide, 0, height + 32, session.SupportColours);
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours.WithIndex((SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 39)),
{ 0, 0, height }, { { 0, 26, height }, { 40, 0, 32 } });
MetalASupportsPaintSetup(
session, supportType.metal, MetalSupportPlace::BottomRightSide, 0, height + 25, session.SupportColours);
break;
}
switch (direction)
{
case 1:
PaintUtilPushTunnelRight(session, height + 8, kTunnelGroup, TunnelSubType::Flat);
break;
case 2:
PaintUtilPushTunnelLeft(session, height + 8, kTunnelGroup, TunnelSubType::Flat);
break;
}
PaintUtilSetGeneralSupportHeight(session, height + 40);
break;
}
}
static void TwisterRCTrackLeftLargeZeroGRollDown(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement, SupportType supportType)
{
TwisterRCTrackLeftLargeZeroGRollUp(
session, ride, 3 - trackSequence, (direction + 2) & 3, height, trackElement, supportType);
}
static void TwisterRCTrackRightLargeZeroGRollDown(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement, SupportType supportType)
{
TwisterRCTrackRightLargeZeroGRollUp(
session, ride, 3 - trackSequence, (direction + 2) & 3, height, trackElement, supportType);
}
TRACK_PAINT_FUNCTION GetTrackPaintFunctionTwisterRC(OpenRCT2::TrackElemType trackType)
{
switch (trackType)
@@ -19169,6 +19520,16 @@ TRACK_PAINT_FUNCTION GetTrackPaintFunctionTwisterRC(OpenRCT2::TrackElemType trac
case TrackElemType::RightZeroGRollDown:
return TwisterRCTrackRightZeroGRollDown;
// Large zero g rolls
case TrackElemType::LeftLargeZeroGRollUp:
return TwisterRCTrackLeftLargeZeroGRollUp;
case TrackElemType::RightLargeZeroGRollUp:
return TwisterRCTrackRightLargeZeroGRollUp;
case TrackElemType::LeftLargeZeroGRollDown:
return TwisterRCTrackLeftLargeZeroGRollDown;
case TrackElemType::RightLargeZeroGRollDown:
return TwisterRCTrackRightLargeZeroGRollDown;
default:
return nullptr;
}
@@ -24,7 +24,7 @@ constexpr RideTypeDescriptor TwisterRollerCoasterRTD =
.Drawer = GetTrackPaintFunctionTwisterRC,
.supportType = MetalSupportType::Tubes,
.enabledTrackGroups = {TrackGroup::flat, TrackGroup::straight, TrackGroup::stationEnd, TrackGroup::liftHill, TrackGroup::flatRollBanking, TrackGroup::verticalLoop, TrackGroup::slope, TrackGroup::slopeSteepUp, TrackGroup::slopeSteepDown, TrackGroup::slopeCurve, TrackGroup::slopeCurveSteep, TrackGroup::sBend, TrackGroup::curveSmall, TrackGroup::curve, TrackGroup::curveLarge, TrackGroup::halfLoop, TrackGroup::corkscrew, TrackGroup::helixDownBankedHalf, TrackGroup::helixUpBankedHalf, TrackGroup::brakes, TrackGroup::onridePhoto, TrackGroup::slopeVertical, TrackGroup::barrelRoll, TrackGroup::poweredLift, TrackGroup::halfLoopLarge, TrackGroup::slopeCurveBanked, TrackGroup::blockBrakes, TrackGroup::slopeRollBanking, TrackGroup::slopeSteepLong, TrackGroup::curveVertical, TrackGroup::quarterLoop, TrackGroup::booster, TrackGroup::twist, TrackGroup::diagBrakes, TrackGroup::diagBlockBrakes, TrackGroup::slopeCurveLarge, TrackGroup::corkscrewLarge, TrackGroup::halfLoopMedium},
.extraTrackGroups = {TrackGroup::liftHillSteep, TrackGroup::brakeForDrop, TrackGroup::zeroGRoll},
.extraTrackGroups = {TrackGroup::liftHillSteep, TrackGroup::brakeForDrop, TrackGroup::zeroGRoll, TrackGroup::zeroGRollLarge},
}),
.InvertedTrackPaintFunctions = {},
.Flags = kRtdFlagsHasThreeColours | kRtdFlagsCommonCoaster | kRtdFlagsCommonCoasterNonAlt |
@@ -24,7 +24,7 @@ constexpr RideTypeDescriptor VerticalDropCoasterRTD =
.Drawer = GetTrackPaintFunctionTwisterRC,
.supportType = MetalSupportType::Boxed,
.enabledTrackGroups = {TrackGroup::flat, TrackGroup::straight, TrackGroup::stationEnd, TrackGroup::liftHill, TrackGroup::liftHillSteep, TrackGroup::flatRollBanking, TrackGroup::verticalLoop, TrackGroup::slope, TrackGroup::slopeSteepUp, TrackGroup::slopeSteepDown, TrackGroup::flatToSteepSlope, TrackGroup::slopeCurve, TrackGroup::slopeCurveSteep, TrackGroup::sBend, TrackGroup::curveSmall, TrackGroup::curve, TrackGroup::curveLarge, TrackGroup::helixDownBankedHalf, TrackGroup::helixUpBankedHalf, TrackGroup::brakes, TrackGroup::onridePhoto, TrackGroup::slopeVertical, TrackGroup::slopeCurveBanked, TrackGroup::blockBrakes, TrackGroup::slopeRollBanking, TrackGroup::curveVertical, TrackGroup::halfLoopLarge, TrackGroup::brakeForDrop, TrackGroup::diagBrakes, TrackGroup::diagBlockBrakes, TrackGroup::slopeCurveLarge, TrackGroup::halfLoopMedium},
.extraTrackGroups = {TrackGroup::halfLoop, TrackGroup::corkscrew, TrackGroup::barrelRoll, TrackGroup::poweredLift, TrackGroup::halfLoopLarge, TrackGroup::quarterLoop, TrackGroup::booster, TrackGroup::twist, TrackGroup::zeroGRoll},
.extraTrackGroups = {TrackGroup::halfLoop, TrackGroup::corkscrew, TrackGroup::barrelRoll, TrackGroup::poweredLift, TrackGroup::halfLoopLarge, TrackGroup::quarterLoop, TrackGroup::booster, TrackGroup::twist, TrackGroup::zeroGRoll, TrackGroup::zeroGRollLarge},
}),
.InvertedTrackPaintFunctions = {},
.Flags = kRtdFlagsHasThreeColours | kRtdFlagsCommonCoaster | kRtdFlagsCommonCoasterNonAlt |
+2 -1
View File
@@ -1291,7 +1291,8 @@ enum : ImageIndex
SPR_G2_BM_TRACK_LARGE_CORKSCREW = SPR_G2_BM_TRACK_GENTLE_LARGE_CURVE_BANKED + 128,
SPR_G2_BM_TRACK_MEDIUM_HALF_LOOP = SPR_G2_BM_TRACK_LARGE_CORKSCREW + 40,
SPR_G2_BM_TRACK_ZERO_G_ROLL = SPR_G2_BM_TRACK_MEDIUM_HALF_LOOP + 44,
SPR_G2_BM_RC_END = SPR_G2_BM_TRACK_ZERO_G_ROLL + 32,
SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL = SPR_G2_BM_TRACK_ZERO_G_ROLL + 32,
SPR_G2_BM_RC_END = SPR_G2_BM_TRACK_LARGE_ZERO_G_ROLL + 40,
SPR_G2_MINIATURE_RAILWAY_BEGIN = SPR_G2_BM_RC_END,
SPR_G2_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_3 = SPR_G2_MINIATURE_RAILWAY_BEGIN,