mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-06 06:32:56 +01:00
Implement Classic Wooden Twister diagonal bank
This commit is contained in:
@@ -260,6 +260,14 @@ enum
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_LEFT_BANK_TO_LEFT_QUARTER_TURN_3_25_DEG_UP_FRONT_0_1 = SPR_CSG_BEGIN + 65979,
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_LEFT_BANK_TO_LEFT_QUARTER_TURN_3_25_DEG_UP_FRONT_1_2 = SPR_CSG_BEGIN + 65980,
|
||||
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_LEFT_BANK_0 = SPR_CSG_BEGIN + 66049,
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_LEFT_BANK_1 = SPR_CSG_BEGIN + 66050,
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_LEFT_BANK_2 = SPR_CSG_BEGIN + 66051,
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_LEFT_BANK_3 = SPR_CSG_BEGIN + 66052,
|
||||
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_LEFT_BANK_FRONT_0 = SPR_CSG_BEGIN + 66053,
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_LEFT_BANK_FRONT_2 = SPR_CSG_BEGIN + 66054,
|
||||
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_FLAT_TO_LEFT_BANK_0 = SPR_CSG_BEGIN + 66055,
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_FLAT_TO_LEFT_BANK_1 = SPR_CSG_BEGIN + 66056,
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_FLAT_TO_LEFT_BANK_2 = SPR_CSG_BEGIN + 66057,
|
||||
@@ -600,6 +608,14 @@ enum
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_LEFT_BANK_TO_LEFT_QUARTER_TURN_3_25_DEG_UP_FRONT_HANDRAIL_0_1 = SPR_CSG_BEGIN + 66735,
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_LEFT_BANK_TO_LEFT_QUARTER_TURN_3_25_DEG_UP_FRONT_HANDRAIL_1_2 = SPR_CSG_BEGIN + 66736,
|
||||
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_LEFT_BANK_HANDRAIL_0 = SPR_CSG_BEGIN + 66805,
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_LEFT_BANK_HANDRAIL_1 = SPR_CSG_BEGIN + 66806,
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_LEFT_BANK_HANDRAIL_2 = SPR_CSG_BEGIN + 66807,
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_LEFT_BANK_HANDRAIL_3 = SPR_CSG_BEGIN + 66808,
|
||||
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_LEFT_BANK_FRONT_HANDRAIL_0 = SPR_CSG_BEGIN + 66809,
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_LEFT_BANK_FRONT_HANDRAIL_2 = SPR_CSG_BEGIN + 66810,
|
||||
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_FLAT_TO_LEFT_BANK_HANDRAIL_0 = SPR_CSG_BEGIN + 66811,
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_FLAT_TO_LEFT_BANK_HANDRAIL_1 = SPR_CSG_BEGIN + 66812,
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_FLAT_TO_LEFT_BANK_HANDRAIL_2 = SPR_CSG_BEGIN + 66813,
|
||||
@@ -1611,6 +1627,29 @@ static constexpr std::array<WoodenTrackSection, kNumOrthogonalDirections> kDiagU
|
||||
},
|
||||
} };
|
||||
|
||||
static constexpr std::array<WoodenTrackSection, kNumOrthogonalDirections> kDiagLeftBankImages = { {
|
||||
{
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_LEFT_BANK_0,
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_LEFT_BANK_HANDRAIL_0,
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_LEFT_BANK_FRONT_0,
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_LEFT_BANK_FRONT_HANDRAIL_0,
|
||||
},
|
||||
{
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_LEFT_BANK_1,
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_LEFT_BANK_HANDRAIL_1,
|
||||
},
|
||||
{
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_LEFT_BANK_2,
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_LEFT_BANK_HANDRAIL_2,
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_LEFT_BANK_FRONT_2,
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_LEFT_BANK_FRONT_HANDRAIL_2,
|
||||
},
|
||||
{
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_LEFT_BANK_3,
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_LEFT_BANK_HANDRAIL_3,
|
||||
},
|
||||
} };
|
||||
|
||||
static constexpr std::array<WoodenTrackSection, kNumOrthogonalDirections> kDiagUp25ToRightBankImages = { {
|
||||
{
|
||||
SPR_CLASSIC_WOODEN_TWISTER_RC_DIAG_UP_25_TO_RIGHT_BANK_0,
|
||||
@@ -2017,6 +2056,15 @@ static void ClassicWoodenTwisterRCTrackDiagRightBankToDown25(
|
||||
session, ride, trackSequence, DirectionReverse(direction), height, trackElement, supportType);
|
||||
}
|
||||
|
||||
static void ClassicWoodenTwisterRCTrackDiagRightBank(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement, SupportType supportType)
|
||||
{
|
||||
trackSequence = kMapReversedDiagonalStraight[trackSequence];
|
||||
return WoodenRCTrackDiagLeftBank<false, kDiagLeftBankImages>(
|
||||
session, ride, trackSequence, DirectionReverse(direction), height, trackElement, supportType);
|
||||
}
|
||||
|
||||
static void ClassicWoodenTwisterRCTrackLeftEighthBankToOrthogonal(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement, SupportType supportType)
|
||||
@@ -2140,6 +2188,11 @@ TRACK_PAINT_FUNCTION GetTrackPaintFunctionClassicWoodenTwisterRC(OpenRCT2::Track
|
||||
case TrackElemType::DiagRightBankToDown25:
|
||||
return ClassicWoodenTwisterRCTrackDiagRightBankToDown25;
|
||||
|
||||
case TrackElemType::DiagLeftBank:
|
||||
return WoodenRCTrackDiagLeftBank<false, kDiagLeftBankImages>;
|
||||
case TrackElemType::DiagRightBank:
|
||||
return ClassicWoodenTwisterRCTrackDiagRightBank;
|
||||
|
||||
case TrackElemType::LeftEighthBankToDiag:
|
||||
return WoodenRCTrackLeftEighthBankToDiag<false, kLeftEighthBankToDiagImages>;
|
||||
case TrackElemType::RightEighthBankToDiag:
|
||||
|
||||
@@ -3156,6 +3156,74 @@ static void WoodenRCTrackDiagUp25ToBank(
|
||||
PaintUtilSetGeneralSupportHeight(session, height + 56);
|
||||
}
|
||||
|
||||
/** rct2: 0x008AC9D8 */
|
||||
template<bool isClassic, std::array<WoodenTrackSection, kNumOrthogonalDirections> imageIds>
|
||||
static void WoodenRCTrackDiagLeftBank(
|
||||
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 3:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[direction].track, imageIds[direction].handrail, { -16, -16, height },
|
||||
{ { -16, -16, height }, { 32, 32, 2 } });
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
switch (direction)
|
||||
{
|
||||
case 0:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[direction].track, imageIds[direction].handrail, { -16, -16, height },
|
||||
{ { -16, -16, height }, { 32, 32, 2 } });
|
||||
if (imageIds[direction].frontTrack != ImageIndexUndefined)
|
||||
{
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[direction].frontTrack, imageIds[direction].frontHandrail,
|
||||
{ -16, -16, height }, { { -16, -16, height + 27 }, { 32, 32, 0 } });
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
switch (direction)
|
||||
{
|
||||
case 2:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[direction].track, imageIds[direction].handrail, { -16, -16, height },
|
||||
{ { -16, -16, height }, { 32, 32, 2 } });
|
||||
if (imageIds[direction].frontTrack != ImageIndexUndefined)
|
||||
{
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[direction].frontTrack, imageIds[direction].frontHandrail,
|
||||
{ -16, -16, height }, { { -16, -16, height + 27 }, { 32, 32, 0 } });
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
switch (direction)
|
||||
{
|
||||
case 1:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[direction].track, imageIds[direction].handrail, { -16, -16, height },
|
||||
{ { -16, -16, height }, { 32, 32, 2 } });
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
DrawSupportForSequenceA<OpenRCT2::TrackElemType::DiagLeftBank>(
|
||||
session, supportType.wooden, trackSequence, direction, height, session.SupportColours);
|
||||
PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight);
|
||||
}
|
||||
|
||||
/** rct2: 0x008AC998 */
|
||||
template<bool isClassic, std::array<std::array<WoodenTrackSection, kNumOrthogonalDirections>, 4> imageIds>
|
||||
static void WoodenRCTrackLeftEighthBankToDiag(
|
||||
|
||||
Reference in New Issue
Block a user