mirror of
https://github.com/OpenRCT2/OpenRCT2.git
synced 2025-01-22 10:21:57 -05:00
Implement Classic Wooden Twister left small helix
This commit is contained in:
parent
759f38a9ec
commit
9be0d007ec
3 changed files with 663 additions and 551 deletions
|
@ -190,6 +190,26 @@ enum
|
|||
SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_FRONT_1_1 = SPR_CSG_BEGIN + 65865,
|
||||
SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_FRONT_0_1 = SPR_CSG_BEGIN + 65866,
|
||||
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_2_3 = SPR_CSG_BEGIN + 65885,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_1_3 = SPR_CSG_BEGIN + 65886,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_0_3 = SPR_CSG_BEGIN + 65887,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_2_0 = SPR_CSG_BEGIN + 65888,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_1_0 = SPR_CSG_BEGIN + 65889,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_0_0 = SPR_CSG_BEGIN + 65890,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_2_1 = SPR_CSG_BEGIN + 65891,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_1_1 = SPR_CSG_BEGIN + 65892,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_0_1 = SPR_CSG_BEGIN + 65893,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_2_2 = SPR_CSG_BEGIN + 65894,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_1_2 = SPR_CSG_BEGIN + 65895,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_0_2 = SPR_CSG_BEGIN + 65896,
|
||||
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_2_3 = SPR_CSG_BEGIN + 65897,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_1_3 = SPR_CSG_BEGIN + 65898,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_0_3 = SPR_CSG_BEGIN + 65899,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_2_1 = SPR_CSG_BEGIN + 65900,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_1_1 = SPR_CSG_BEGIN + 65901,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_0_1 = SPR_CSG_BEGIN + 65902,
|
||||
|
||||
SPR_CLASSIC_WOODEN_RC_FLAT_TO_LEFT_BANK_HANDRAIL_0 = SPR_CSG_BEGIN + 66203,
|
||||
SPR_CLASSIC_WOODEN_RC_FLAT_TO_LEFT_BANK_HANDRAIL_1 = SPR_CSG_BEGIN + 66204,
|
||||
SPR_CLASSIC_WOODEN_RC_FLAT_TO_LEFT_BANK_HANDRAIL_2 = SPR_CSG_BEGIN + 66205,
|
||||
|
@ -359,6 +379,26 @@ enum
|
|||
SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_FRONT_HANDRAIL_2_1 = SPR_CSG_BEGIN + 66620,
|
||||
SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_FRONT_HANDRAIL_1_1 = SPR_CSG_BEGIN + 66621,
|
||||
SPR_CLASSIC_WOODEN_RC_BANKED_QUARTER_TURN_3_FRONT_HANDRAIL_0_1 = SPR_CSG_BEGIN + 66622,
|
||||
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_2_3 = SPR_CSG_BEGIN + 66641,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_1_3 = SPR_CSG_BEGIN + 66642,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_0_3 = SPR_CSG_BEGIN + 66643,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_2_0 = SPR_CSG_BEGIN + 66644,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_1_0 = SPR_CSG_BEGIN + 66645,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_0_0 = SPR_CSG_BEGIN + 66646,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_2_1 = SPR_CSG_BEGIN + 66647,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_1_1 = SPR_CSG_BEGIN + 66648,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_0_1 = SPR_CSG_BEGIN + 66649,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_2_2 = SPR_CSG_BEGIN + 66650,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_1_2 = SPR_CSG_BEGIN + 66651,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_0_2 = SPR_CSG_BEGIN + 66652,
|
||||
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_HANDRAIL_2_3 = SPR_CSG_BEGIN + 66653,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_HANDRAIL_1_3 = SPR_CSG_BEGIN + 66654,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_HANDRAIL_0_3 = SPR_CSG_BEGIN + 66655,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_HANDRAIL_2_1 = SPR_CSG_BEGIN + 66656,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_HANDRAIL_1_1 = SPR_CSG_BEGIN + 66657,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_HANDRAIL_0_1 = SPR_CSG_BEGIN + 66658,
|
||||
};
|
||||
|
||||
static constexpr std::array<StraightWoodenTrack, kNumOrthogonalDirections> kFlatToLeftBankImages = { {
|
||||
|
@ -688,6 +728,77 @@ static constexpr std::array<std::array<StraightWoodenTrack, kNumOrthogonalDirect
|
|||
} },
|
||||
} };
|
||||
|
||||
static constexpr std::array<std::array<StraightWoodenTrack, kNumOrthogonalDirections>, 3> kLeftHalfBankedHelixUpSmallImages = {
|
||||
{
|
||||
{ {
|
||||
{
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_0_0,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_0_0,
|
||||
},
|
||||
{
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_0_1,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_0_1,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_0_1,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_HANDRAIL_0_1,
|
||||
},
|
||||
{
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_0_2,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_0_2,
|
||||
},
|
||||
{
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_0_3,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_0_3,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_0_3,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_HANDRAIL_0_3,
|
||||
},
|
||||
} },
|
||||
{ {
|
||||
{
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_1_0,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_1_0,
|
||||
},
|
||||
{
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_1_1,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_1_1,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_1_1,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_HANDRAIL_1_1,
|
||||
},
|
||||
{
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_1_2,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_1_2,
|
||||
},
|
||||
{
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_1_3,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_1_3,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_1_3,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_HANDRAIL_1_3,
|
||||
},
|
||||
} },
|
||||
{ {
|
||||
{
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_2_0,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_2_0,
|
||||
},
|
||||
{
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_2_1,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_2_1,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_2_1,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_HANDRAIL_2_1,
|
||||
},
|
||||
{
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_2_2,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_2_2,
|
||||
},
|
||||
{
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_2_3,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_2_3,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_2_3,
|
||||
SPR_CLASSIC_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_HANDRAIL_2_3,
|
||||
},
|
||||
} },
|
||||
}
|
||||
};
|
||||
|
||||
static constexpr std::array<std::array<StraightWoodenTrack, kNumOrthogonalDirections>, 5> kLeftHalfBankedHelixUpLargeImages = {
|
||||
{
|
||||
{ {
|
||||
|
@ -992,6 +1103,20 @@ static void ClassicWoodenTwisterRCTrackBankedLeftQuarterTurn5(
|
|||
session, ride, trackSequence, DirectionNext(direction), height, trackElement, supportType);
|
||||
}
|
||||
|
||||
static void ClassicWoodenTwisterRCTrackRightHalfBankedHelixDownSmall(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement, SupportType supportType)
|
||||
{
|
||||
if (trackSequence >= 4)
|
||||
{
|
||||
trackSequence -= 4;
|
||||
direction = DirectionNext(direction);
|
||||
}
|
||||
trackSequence = kMapLeftQuarterTurn3TilesToRightQuarterTurn3Tiles[trackSequence];
|
||||
WoodenRCTrackLeftHalfBankedHelixUpSmall<false, kLeftHalfBankedHelixUpSmallImages>(
|
||||
session, ride, trackSequence, DirectionPrev(direction), height, trackElement, supportType);
|
||||
}
|
||||
|
||||
static void ClassicWoodenTwisterRCTrackLeftHalfBankedHelixDownLarge(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement, SupportType supportType)
|
||||
|
@ -1072,6 +1197,11 @@ TRACK_PAINT_FUNCTION GetTrackPaintFunctionClassicWoodenTwisterRC(OpenRCT2::Track
|
|||
case TrackElemType::BankedRightQuarterTurn5Tiles:
|
||||
return WoodenRCTrackBankedRightQuarterTurn5<false, kBankedQuarterTurn5Images>;
|
||||
|
||||
case TrackElemType::LeftHalfBankedHelixUpSmall:
|
||||
return WoodenRCTrackLeftHalfBankedHelixUpSmall<false, kLeftHalfBankedHelixUpSmallImages>;
|
||||
case TrackElemType::RightHalfBankedHelixDownSmall:
|
||||
return ClassicWoodenTwisterRCTrackRightHalfBankedHelixDownSmall;
|
||||
|
||||
case TrackElemType::LeftHalfBankedHelixUpLarge:
|
||||
return WoodenRCTrackLeftHalfBankedHelixUpLarge<false, kLeftHalfBankedHelixUpLargeImages>;
|
||||
case TrackElemType::RightHalfBankedHelixUpLarge:
|
||||
|
|
|
@ -304,24 +304,24 @@ enum
|
|||
SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_33 = 23874,
|
||||
SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_34 = 23875,
|
||||
SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_35 = 23876,
|
||||
SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_36 = 23877,
|
||||
SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_37 = 23878,
|
||||
SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_38 = 23879,
|
||||
SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_39 = 23880,
|
||||
SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_40 = 23881,
|
||||
SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_41 = 23882,
|
||||
SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_42 = 23883,
|
||||
SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_43 = 23884,
|
||||
SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_44 = 23885,
|
||||
SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_45 = 23886,
|
||||
SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_46 = 23887,
|
||||
SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_47 = 23888,
|
||||
SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_48 = 23889,
|
||||
SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_49 = 23890,
|
||||
SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_50 = 23891,
|
||||
SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_51 = 23892,
|
||||
SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_52 = 23893,
|
||||
SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_53 = 23894,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_2_3 = 23877,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_1_3 = 23878,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_0_3 = 23879,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_2_0 = 23880,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_1_0 = 23881,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_0_0 = 23882,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_2_1 = 23883,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_1_1 = 23884,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_0_1 = 23885,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_2_2 = 23886,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_1_2 = 23887,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_0_2 = 23888,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_2_3 = 23889,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_1_3 = 23890,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_0_3 = 23891,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_2_1 = 23892,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_1_1 = 23893,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_0_1 = 23894,
|
||||
|
||||
SPR_WOODEN_RC_STATION_SW_NE = 23973,
|
||||
SPR_WOODEN_RC_STATION_NW_SE = 23974,
|
||||
|
@ -578,6 +578,25 @@ enum
|
|||
SPR_WOODEN_RC_BANKED_QUARTER_TURN_3_FRONT_HANDRAIL_1_1 = 24723,
|
||||
SPR_WOODEN_RC_BANKED_QUARTER_TURN_3_FRONT_HANDRAIL_0_1 = 24724,
|
||||
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_2_3 = 24743,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_1_3 = 24744,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_0_3 = 24745,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_2_0 = 24746,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_1_0 = 24747,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_0_0 = 24748,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_2_1 = 24749,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_1_1 = 24750,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_0_1 = 24751,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_2_2 = 24752,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_1_2 = 24753,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_0_2 = 24754,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_HANDRAIL_2_3 = 24755,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_HANDRAIL_1_3 = 24756,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_HANDRAIL_0_3 = 24757,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_HANDRAIL_2_1 = 24758,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_HANDRAIL_1_1 = 24759,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_HANDRAIL_0_1 = 24760,
|
||||
|
||||
SPR_WOODEN_RC_STATION_RAILS_SW_NE = 24839,
|
||||
SPR_WOODEN_RC_STATION_RAILS_NW_SE = 24840,
|
||||
};
|
||||
|
@ -944,6 +963,77 @@ static constexpr std::array<std::array<StraightWoodenTrack, kNumOrthogonalDirect
|
|||
} },
|
||||
} };
|
||||
|
||||
static constexpr std::array<std::array<StraightWoodenTrack, kNumOrthogonalDirections>, 3> kLeftHalfBankedHelixUpSmallImages = {
|
||||
{
|
||||
{ {
|
||||
{
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_0_0,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_0_0,
|
||||
},
|
||||
{
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_0_1,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_0_1,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_0_1,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_HANDRAIL_0_1,
|
||||
},
|
||||
{
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_0_2,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_0_2,
|
||||
},
|
||||
{
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_0_3,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_0_3,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_0_3,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_HANDRAIL_0_3,
|
||||
},
|
||||
} },
|
||||
{ {
|
||||
{
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_1_0,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_1_0,
|
||||
},
|
||||
{
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_1_1,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_1_1,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_1_1,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_HANDRAIL_1_1,
|
||||
},
|
||||
{
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_1_2,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_1_2,
|
||||
},
|
||||
{
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_1_3,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_1_3,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_1_3,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_HANDRAIL_1_3,
|
||||
},
|
||||
} },
|
||||
{ {
|
||||
{
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_2_0,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_2_0,
|
||||
},
|
||||
{
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_2_1,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_2_1,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_2_1,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_HANDRAIL_2_1,
|
||||
},
|
||||
{
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_2_2,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_2_2,
|
||||
},
|
||||
{
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_2_3,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_HANDRAIL_2_3,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_2_3,
|
||||
SPR_WOODEN_RC_LEFT_HALF_BANKED_HELIX_UP_SMALL_FRONT_HANDRAIL_2_3,
|
||||
},
|
||||
} },
|
||||
}
|
||||
};
|
||||
|
||||
static constexpr std::array<std::array<StraightWoodenTrack, kNumOrthogonalDirections>, 5> kLeftHalfBankedHelixUpLargeImages = {
|
||||
{
|
||||
{ {
|
||||
|
@ -4716,535 +4806,6 @@ static void WoodenRCTrackRightQuarterTurn325DegDown(
|
|||
session, ride, trackSequence, (direction - 1) & 3, height, trackElement, supportType);
|
||||
}
|
||||
|
||||
/** rct2: 0x008ACAB8 */
|
||||
template<bool isClassic>
|
||||
static void WoodenRCTrackLeftHalfBankedHelixUpSmall(
|
||||
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,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_41),
|
||||
{ 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24748), { 0, 0, height },
|
||||
{ { 0, 6, height }, { 32, 20, 2 } });
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner3, height, session.SupportColours);
|
||||
break;
|
||||
case 1:
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_44),
|
||||
{ 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24751), { 0, 0, height },
|
||||
{ { 0, 6, height }, { 32, 20, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_53),
|
||||
{ 0, 0, height }, { { 0, 6, height + 27 }, { 32, 20, 0 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24760), { 0, 0, height },
|
||||
{ { 0, 6, height + 27 }, { 32, 20, 0 } });
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner0, height, session.SupportColours);
|
||||
break;
|
||||
case 2:
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_47),
|
||||
{ 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24754), { 0, 0, height },
|
||||
{ { 0, 6, height }, { 32, 20, 2 } });
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner1, height, session.SupportColours);
|
||||
break;
|
||||
case 3:
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_38),
|
||||
{ 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24745), { 0, 0, height },
|
||||
{ { 0, 6, height }, { 32, 20, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_50),
|
||||
{ 0, 0, height }, { { 0, 6, height + 27 }, { 32, 20, 0 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24757), { 0, 0, height },
|
||||
{ { 0, 6, height + 27 }, { 32, 20, 0 } });
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner2, height, session.SupportColours);
|
||||
break;
|
||||
}
|
||||
if (direction == 0 || direction == 3)
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat);
|
||||
}
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(
|
||||
EnumsToFlags(
|
||||
PaintSegment::leftCorner, PaintSegment::rightCorner, PaintSegment::bottomCorner,
|
||||
PaintSegment::bottomRightSide),
|
||||
direction),
|
||||
48, 0x20);
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(
|
||||
EnumsToFlags(
|
||||
PaintSegment::topCorner, PaintSegment::centre, PaintSegment::topLeftSide, PaintSegment::topRightSide,
|
||||
PaintSegment::bottomLeftSide),
|
||||
direction),
|
||||
0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight);
|
||||
break;
|
||||
case 1:
|
||||
switch (direction)
|
||||
{
|
||||
case 0:
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner1, height, session.SupportColours);
|
||||
break;
|
||||
case 1:
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner2, height, session.SupportColours);
|
||||
break;
|
||||
case 2:
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner3, height, session.SupportColours);
|
||||
break;
|
||||
case 3:
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner0, height, session.SupportColours);
|
||||
break;
|
||||
}
|
||||
PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight);
|
||||
break;
|
||||
case 2:
|
||||
switch (direction)
|
||||
{
|
||||
case 0:
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_40),
|
||||
{ 0, 0, height }, { { 16, 0, height }, { 16, 16, 2 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24747), { 0, 0, height },
|
||||
{ { 16, 0, height }, { 16, 16, 2 } });
|
||||
break;
|
||||
case 1:
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_43),
|
||||
{ 0, 0, height }, { { 0, 0, height }, { 16, 16, 2 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24750), { 0, 0, height },
|
||||
{ { 0, 0, height }, { 16, 16, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_52),
|
||||
{ 0, 0, height }, { { 0, 0, height + 27 }, { 16, 16, 0 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24759), { 0, 0, height },
|
||||
{ { 0, 0, height + 27 }, { 16, 16, 0 } });
|
||||
break;
|
||||
case 2:
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_46),
|
||||
{ 0, 0, height }, { { 0, 16, height }, { 16, 16, 2 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24753), { 0, 0, height },
|
||||
{ { 0, 16, height }, { 16, 16, 2 } });
|
||||
break;
|
||||
case 3:
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_37),
|
||||
{ 0, 0, height }, { { 16, 16, height }, { 16, 16, 2 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24744), { 0, 0, height },
|
||||
{ { 16, 16, height }, { 16, 16, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_49),
|
||||
{ 0, 0, height }, { { 16, 16, height + 27 }, { 16, 16, 0 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24756), { 0, 0, height },
|
||||
{ { 16, 16, height + 27 }, { 16, 16, 0 } });
|
||||
break;
|
||||
}
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(
|
||||
EnumsToFlags(
|
||||
PaintSegment::leftCorner, PaintSegment::centre, PaintSegment::topLeftSide,
|
||||
PaintSegment::bottomLeftSide),
|
||||
direction),
|
||||
0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight);
|
||||
break;
|
||||
case 3:
|
||||
switch (direction)
|
||||
{
|
||||
case 0:
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_39),
|
||||
{ 0, 0, height }, { { 6, 0, height }, { 20, 32, 2 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24746), { 0, 0, height },
|
||||
{ { 6, 0, height }, { 20, 32, 2 } });
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner3, height, session.SupportColours);
|
||||
break;
|
||||
case 1:
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_42),
|
||||
{ 0, 0, height }, { { 6, 0, height }, { 20, 32, 2 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24749), { 0, 0, height },
|
||||
{ { 6, 0, height }, { 20, 32, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_51),
|
||||
{ 0, 0, height }, { { 6, 0, height + 27 }, { 20, 32, 0 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24758), { 0, 0, height },
|
||||
{ { 6, 0, height + 27 }, { 20, 32, 0 } });
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner0, height, session.SupportColours);
|
||||
break;
|
||||
case 2:
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_45),
|
||||
{ 0, 0, height }, { { 6, 0, height }, { 20, 32, 2 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24752), { 0, 0, height },
|
||||
{ { 6, 0, height }, { 20, 32, 2 } });
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner1, height, session.SupportColours);
|
||||
break;
|
||||
case 3:
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_36),
|
||||
{ 0, 0, height }, { { 6, 0, height + 8 }, { 20, 32, 2 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24743), { 0, 0, height },
|
||||
{ { 6, 0, height + 8 }, { 20, 32, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_48),
|
||||
{ 0, 0, height }, { { 6, 0, height + 27 }, { 20, 32, 0 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24755), { 0, 0, height },
|
||||
{ { 6, 0, height + 27 }, { 20, 32, 0 } });
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner2, height, session.SupportColours);
|
||||
break;
|
||||
}
|
||||
switch (direction)
|
||||
{
|
||||
case 2:
|
||||
PaintUtilPushTunnelRight(session, height + 8, kTunnelGroup, TunnelSubType::Flat);
|
||||
break;
|
||||
case 3:
|
||||
PaintUtilPushTunnelLeft(session, height + 8, kTunnelGroup, TunnelSubType::Flat);
|
||||
break;
|
||||
}
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(
|
||||
EnumsToFlags(
|
||||
PaintSegment::topCorner, PaintSegment::leftCorner, PaintSegment::rightCorner,
|
||||
PaintSegment::topRightSide),
|
||||
direction),
|
||||
48, 0x20);
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(
|
||||
EnumsToFlags(
|
||||
PaintSegment::bottomCorner, PaintSegment::centre, PaintSegment::topLeftSide,
|
||||
PaintSegment::bottomLeftSide, PaintSegment::bottomRightSide),
|
||||
direction),
|
||||
0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight);
|
||||
break;
|
||||
case 4:
|
||||
switch (direction)
|
||||
{
|
||||
case 0:
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_38),
|
||||
{ 0, 0, height }, { { 6, 0, height }, { 20, 32, 2 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24745), { 0, 0, height },
|
||||
{ { 6, 0, height }, { 20, 32, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_50),
|
||||
{ 0, 0, height }, { { 6, 0, height + 27 }, { 20, 32, 0 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24757), { 0, 0, height },
|
||||
{ { 6, 0, height + 27 }, { 20, 32, 0 } });
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner2, height, session.SupportColours);
|
||||
break;
|
||||
case 1:
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_41),
|
||||
{ 0, 0, height }, { { 6, 0, height }, { 20, 32, 2 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24748), { 0, 0, height },
|
||||
{ { 6, 0, height }, { 20, 32, 2 } });
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner3, height, session.SupportColours);
|
||||
break;
|
||||
case 2:
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_44),
|
||||
{ 0, 0, height }, { { 6, 0, height }, { 20, 32, 2 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24751), { 0, 0, height },
|
||||
{ { 6, 0, height }, { 20, 32, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_53),
|
||||
{ 0, 0, height }, { { 6, 0, height + 27 }, { 20, 32, 0 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24760), { 0, 0, height },
|
||||
{ { 6, 0, height + 27 }, { 20, 32, 0 } });
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner0, height, session.SupportColours);
|
||||
break;
|
||||
case 3:
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_47),
|
||||
{ 0, 0, height }, { { 6, 0, height }, { 20, 32, 2 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24754), { 0, 0, height },
|
||||
{ { 6, 0, height }, { 20, 32, 2 } });
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner1, height, session.SupportColours);
|
||||
break;
|
||||
}
|
||||
switch (direction)
|
||||
{
|
||||
case 0:
|
||||
PaintUtilPushTunnelRight(session, height, kTunnelGroup, TunnelSubType::Flat);
|
||||
break;
|
||||
case 1:
|
||||
PaintUtilPushTunnelLeft(session, height, kTunnelGroup, TunnelSubType::Flat);
|
||||
break;
|
||||
}
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(
|
||||
EnumsToFlags(
|
||||
PaintSegment::topCorner, PaintSegment::rightCorner, PaintSegment::bottomCorner,
|
||||
PaintSegment::topRightSide),
|
||||
direction),
|
||||
48, 0x20);
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(
|
||||
EnumsToFlags(
|
||||
PaintSegment::leftCorner, PaintSegment::centre, PaintSegment::topLeftSide, PaintSegment::bottomLeftSide,
|
||||
PaintSegment::bottomRightSide),
|
||||
direction),
|
||||
0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight);
|
||||
break;
|
||||
case 5:
|
||||
switch (direction)
|
||||
{
|
||||
case 0:
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner0, height, session.SupportColours);
|
||||
break;
|
||||
case 1:
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner1, height, session.SupportColours);
|
||||
break;
|
||||
case 2:
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner2, height, session.SupportColours);
|
||||
break;
|
||||
case 3:
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner3, height, session.SupportColours);
|
||||
break;
|
||||
}
|
||||
PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight);
|
||||
break;
|
||||
case 6:
|
||||
switch (direction)
|
||||
{
|
||||
case 0:
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_37),
|
||||
{ 0, 0, height }, { { 16, 16, height }, { 16, 16, 2 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24744), { 0, 0, height },
|
||||
{ { 16, 16, height }, { 16, 16, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_49),
|
||||
{ 0, 0, height }, { { 16, 16, height + 27 }, { 16, 16, 0 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24756), { 0, 0, height },
|
||||
{ { 16, 16, height + 27 }, { 16, 16, 0 } });
|
||||
break;
|
||||
case 1:
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_40),
|
||||
{ 0, 0, height }, { { 0, 16, height }, { 16, 16, 2 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24747), { 0, 0, height },
|
||||
{ { 0, 16, height }, { 16, 16, 2 } });
|
||||
break;
|
||||
case 2:
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_43),
|
||||
{ 0, 0, height }, { { 0, 0, height }, { 16, 16, 2 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24750), { 0, 0, height },
|
||||
{ { 0, 0, height }, { 16, 16, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_52),
|
||||
{ 0, 0, height }, { { 0, 0, height + 27 }, { 16, 16, 0 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24759), { 0, 0, height },
|
||||
{ { 0, 0, height + 27 }, { 16, 16, 0 } });
|
||||
break;
|
||||
case 3:
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_46),
|
||||
{ 0, 0, height }, { { 16, 0, height }, { 16, 16, 2 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24753), { 0, 0, height },
|
||||
{ { 16, 0, height }, { 16, 16, 2 } });
|
||||
break;
|
||||
}
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(
|
||||
EnumsToFlags(
|
||||
PaintSegment::bottomCorner, PaintSegment::centre, PaintSegment::bottomLeftSide,
|
||||
PaintSegment::bottomRightSide),
|
||||
direction),
|
||||
0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight);
|
||||
break;
|
||||
case 7:
|
||||
switch (direction)
|
||||
{
|
||||
case 0:
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_36),
|
||||
{ 0, 0, height }, { { 0, 6, height + 8 }, { 32, 20, 2 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24743), { 0, 0, height },
|
||||
{ { 0, 6, height + 8 }, { 32, 20, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_48),
|
||||
{ 0, 0, height }, { { 0, 6, height + 27 }, { 32, 20, 0 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24755), { 0, 0, height },
|
||||
{ { 0, 6, height + 27 }, { 32, 20, 0 } });
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner2, height, session.SupportColours);
|
||||
break;
|
||||
case 1:
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_39),
|
||||
{ 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24746), { 0, 0, height },
|
||||
{ { 0, 6, height }, { 32, 20, 2 } });
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner3, height, session.SupportColours);
|
||||
break;
|
||||
case 2:
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_42),
|
||||
{ 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24749), { 0, 0, height },
|
||||
{ { 0, 6, height }, { 32, 20, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_51),
|
||||
{ 0, 0, height }, { { 0, 6, height + 27 }, { 32, 20, 0 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24758), { 0, 0, height },
|
||||
{ { 0, 6, height + 27 }, { 32, 20, 0 } });
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner0, height, session.SupportColours);
|
||||
break;
|
||||
case 3:
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction,
|
||||
WoodenRCGetTrackColour<isClassic>(session).WithIndex(SPR_WOODEN_RC_SMALL_RIGHT_BANKED_TURN_45),
|
||||
{ 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
|
||||
PaintAddImageAsChildRotated(
|
||||
session, direction, WoodenRCGetRailsColour(session).WithIndex(24752), { 0, 0, height },
|
||||
{ { 0, 6, height }, { 32, 20, 2 } });
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner1, height, session.SupportColours);
|
||||
break;
|
||||
}
|
||||
if (direction == 0 || direction == 3)
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height + 8, kTunnelGroup, TunnelSubType::Flat);
|
||||
}
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(
|
||||
EnumsToFlags(
|
||||
PaintSegment::topCorner, PaintSegment::leftCorner, PaintSegment::bottomCorner,
|
||||
PaintSegment::topLeftSide),
|
||||
direction),
|
||||
48, 0x20);
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(
|
||||
EnumsToFlags(
|
||||
PaintSegment::rightCorner, PaintSegment::centre, PaintSegment::topRightSide,
|
||||
PaintSegment::bottomLeftSide, PaintSegment::bottomRightSide),
|
||||
direction),
|
||||
0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/** rct2: 0x008ACAC8 */
|
||||
template<bool isClassic>
|
||||
static void WoodenRCTrackRightHalfBankedHelixUpSmall(
|
||||
|
@ -5798,11 +5359,11 @@ static void WoodenRCTrackRightHalfBankedHelixDownSmall(
|
|||
if (trackSequence >= 4)
|
||||
{
|
||||
trackSequence -= 4;
|
||||
direction = (direction + 1) & 3;
|
||||
direction = DirectionNext(direction);
|
||||
}
|
||||
trackSequence = kMapLeftQuarterTurn3TilesToRightQuarterTurn3Tiles[trackSequence];
|
||||
WoodenRCTrackLeftHalfBankedHelixUpSmall<isClassic>(
|
||||
session, ride, trackSequence, (direction - 1) & 3, height, trackElement, supportType);
|
||||
WoodenRCTrackLeftHalfBankedHelixUpSmall<isClassic, kLeftHalfBankedHelixUpSmallImages>(
|
||||
session, ride, trackSequence, DirectionPrev(direction), height, trackElement, supportType);
|
||||
}
|
||||
|
||||
/** rct2: 0x008ACB18 */
|
||||
|
@ -15954,7 +15515,7 @@ TRACK_PAINT_FUNCTION GetTrackPaintFunctionWoodenAndClassicWoodenRC(OpenRCT2::Tra
|
|||
case TrackElemType::RightQuarterTurn3TilesDown25:
|
||||
return WoodenRCTrackRightQuarterTurn325DegDown<isClassic>;
|
||||
case TrackElemType::LeftHalfBankedHelixUpSmall:
|
||||
return WoodenRCTrackLeftHalfBankedHelixUpSmall<isClassic>;
|
||||
return WoodenRCTrackLeftHalfBankedHelixUpSmall<isClassic, kLeftHalfBankedHelixUpSmallImages>;
|
||||
case TrackElemType::RightHalfBankedHelixUpSmall:
|
||||
return WoodenRCTrackRightHalfBankedHelixUpSmall<isClassic>;
|
||||
case TrackElemType::LeftHalfBankedHelixDownSmall:
|
||||
|
|
|
@ -518,6 +518,427 @@ static void WoodenRCTrackBankedRightQuarterTurn5(
|
|||
PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight);
|
||||
}
|
||||
|
||||
/** rct2: 0x008ACAB8 */
|
||||
template<bool isClassic, std::array<std::array<StraightWoodenTrack, kNumOrthogonalDirections>, 3> imageIds>
|
||||
static void WoodenRCTrackLeftHalfBankedHelixUpSmall(
|
||||
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:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[0][direction].track, imageIds[0][direction].handrail, { 0, 0, height },
|
||||
{ { 0, 6, height }, { 32, 20, 2 } });
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner3, height, session.SupportColours);
|
||||
break;
|
||||
case 1:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[0][direction].track, imageIds[0][direction].handrail, { 0, 0, height },
|
||||
{ { 0, 6, height }, { 32, 20, 2 } });
|
||||
if (imageIds[0][direction].frontTrack != ImageIndexUndefined)
|
||||
{
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[0][direction].frontTrack, imageIds[0][direction].frontHandrail,
|
||||
{ 0, 0, height }, { { 0, 6, height + 27 }, { 32, 20, 0 } });
|
||||
}
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner0, height, session.SupportColours);
|
||||
break;
|
||||
case 2:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[0][direction].track, imageIds[0][direction].handrail, { 0, 0, height },
|
||||
{ { 0, 6, height }, { 32, 20, 2 } });
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner1, height, session.SupportColours);
|
||||
break;
|
||||
case 3:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[0][direction].track, imageIds[0][direction].handrail, { 0, 0, height },
|
||||
{ { 0, 6, height }, { 32, 20, 2 } });
|
||||
if (imageIds[0][direction].frontTrack != ImageIndexUndefined)
|
||||
{
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[0][direction].frontTrack, imageIds[0][direction].frontHandrail,
|
||||
{ 0, 0, height }, { { 0, 6, height + 27 }, { 32, 20, 0 } });
|
||||
}
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner2, height, session.SupportColours);
|
||||
break;
|
||||
}
|
||||
if (direction == 0 || direction == 3)
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height, kTunnelGroup, TunnelSubType::Flat);
|
||||
}
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(
|
||||
EnumsToFlags(
|
||||
PaintSegment::leftCorner, PaintSegment::rightCorner, PaintSegment::bottomCorner,
|
||||
PaintSegment::bottomRightSide),
|
||||
direction),
|
||||
48, 0x20);
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(
|
||||
EnumsToFlags(
|
||||
PaintSegment::topCorner, PaintSegment::centre, PaintSegment::topLeftSide, PaintSegment::topRightSide,
|
||||
PaintSegment::bottomLeftSide),
|
||||
direction),
|
||||
0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight);
|
||||
break;
|
||||
case 1:
|
||||
switch (direction)
|
||||
{
|
||||
case 0:
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner1, height, session.SupportColours);
|
||||
break;
|
||||
case 1:
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner2, height, session.SupportColours);
|
||||
break;
|
||||
case 2:
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner3, height, session.SupportColours);
|
||||
break;
|
||||
case 3:
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner0, height, session.SupportColours);
|
||||
break;
|
||||
}
|
||||
PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight);
|
||||
break;
|
||||
case 2:
|
||||
switch (direction)
|
||||
{
|
||||
case 0:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[1][direction].track, imageIds[1][direction].handrail, { 0, 0, height },
|
||||
{ { 16, 0, height }, { 16, 16, 2 } });
|
||||
break;
|
||||
case 1:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[1][direction].track, imageIds[1][direction].handrail, { 0, 0, height },
|
||||
{ { 0, 0, height }, { 16, 16, 2 } });
|
||||
if (imageIds[1][direction].frontTrack != ImageIndexUndefined)
|
||||
{
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[1][direction].frontTrack, imageIds[1][direction].frontHandrail,
|
||||
{ 0, 0, height }, { { 0, 0, height + 27 }, { 16, 16, 0 } });
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[1][direction].track, imageIds[1][direction].handrail, { 0, 0, height },
|
||||
{ { 0, 16, height }, { 16, 16, 2 } });
|
||||
break;
|
||||
case 3:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[1][direction].track, imageIds[1][direction].handrail, { 0, 0, height },
|
||||
{ { 16, 16, height }, { 16, 16, 2 } });
|
||||
if (imageIds[1][direction].frontTrack != ImageIndexUndefined)
|
||||
{
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[1][direction].frontTrack, imageIds[1][direction].frontHandrail,
|
||||
{ 0, 0, height }, { { 16, 16, height + 27 }, { 16, 16, 0 } });
|
||||
}
|
||||
break;
|
||||
}
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(
|
||||
EnumsToFlags(
|
||||
PaintSegment::leftCorner, PaintSegment::centre, PaintSegment::topLeftSide,
|
||||
PaintSegment::bottomLeftSide),
|
||||
direction),
|
||||
0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight);
|
||||
break;
|
||||
case 3:
|
||||
switch (direction)
|
||||
{
|
||||
case 0:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[2][direction].track, imageIds[2][direction].handrail, { 0, 0, height },
|
||||
{ { 6, 0, height }, { 20, 32, 2 } });
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner3, height, session.SupportColours);
|
||||
break;
|
||||
case 1:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[2][direction].track, imageIds[2][direction].handrail, { 0, 0, height },
|
||||
{ { 6, 0, height }, { 20, 32, 2 } });
|
||||
if (imageIds[2][direction].frontTrack != ImageIndexUndefined)
|
||||
{
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[2][direction].frontTrack, imageIds[2][direction].frontHandrail,
|
||||
{ 0, 0, height }, { { 6, 0, height + 27 }, { 20, 32, 0 } });
|
||||
}
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner0, height, session.SupportColours);
|
||||
break;
|
||||
case 2:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[2][direction].track, imageIds[2][direction].handrail, { 0, 0, height },
|
||||
{ { 6, 0, height }, { 20, 32, 2 } });
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner1, height, session.SupportColours);
|
||||
break;
|
||||
case 3:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[2][direction].track, imageIds[2][direction].handrail, { 0, 0, height },
|
||||
{ { 6, 0, height + 8 }, { 20, 32, 2 } });
|
||||
if (imageIds[2][direction].frontTrack != ImageIndexUndefined)
|
||||
{
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[2][direction].frontTrack, imageIds[2][direction].frontHandrail,
|
||||
{ 0, 0, height }, { { 6, 0, height + 27 }, { 20, 32, 0 } });
|
||||
}
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner2, height, session.SupportColours);
|
||||
break;
|
||||
}
|
||||
switch (direction)
|
||||
{
|
||||
case 2:
|
||||
PaintUtilPushTunnelRight(session, height + 8, kTunnelGroup, TunnelSubType::Flat);
|
||||
break;
|
||||
case 3:
|
||||
PaintUtilPushTunnelLeft(session, height + 8, kTunnelGroup, TunnelSubType::Flat);
|
||||
break;
|
||||
}
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(
|
||||
EnumsToFlags(
|
||||
PaintSegment::topCorner, PaintSegment::leftCorner, PaintSegment::rightCorner,
|
||||
PaintSegment::topRightSide),
|
||||
direction),
|
||||
48, 0x20);
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(
|
||||
EnumsToFlags(
|
||||
PaintSegment::bottomCorner, PaintSegment::centre, PaintSegment::topLeftSide,
|
||||
PaintSegment::bottomLeftSide, PaintSegment::bottomRightSide),
|
||||
direction),
|
||||
0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight);
|
||||
break;
|
||||
case 4:
|
||||
switch (direction)
|
||||
{
|
||||
case 0:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[0][3].track, imageIds[0][3].handrail, { 0, 0, height },
|
||||
{ { 6, 0, height }, { 20, 32, 2 } });
|
||||
if (imageIds[0][3].frontTrack != ImageIndexUndefined)
|
||||
{
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[0][3].frontTrack, imageIds[0][3].frontHandrail, { 0, 0, height },
|
||||
{ { 6, 0, height + 27 }, { 20, 32, 0 } });
|
||||
}
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner2, height, session.SupportColours);
|
||||
break;
|
||||
case 1:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[0][0].track, imageIds[0][0].handrail, { 0, 0, height },
|
||||
{ { 6, 0, height }, { 20, 32, 2 } });
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner3, height, session.SupportColours);
|
||||
break;
|
||||
case 2:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[0][1].track, imageIds[0][1].handrail, { 0, 0, height },
|
||||
{ { 6, 0, height }, { 20, 32, 2 } });
|
||||
if (imageIds[0][1].frontTrack != ImageIndexUndefined)
|
||||
{
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[0][1].frontTrack, imageIds[0][1].frontHandrail, { 0, 0, height },
|
||||
{ { 6, 0, height + 27 }, { 20, 32, 0 } });
|
||||
}
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner0, height, session.SupportColours);
|
||||
break;
|
||||
case 3:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[0][2].track, imageIds[0][2].handrail, { 0, 0, height },
|
||||
{ { 6, 0, height }, { 20, 32, 2 } });
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner1, height, session.SupportColours);
|
||||
break;
|
||||
}
|
||||
switch (direction)
|
||||
{
|
||||
case 0:
|
||||
PaintUtilPushTunnelRight(session, height, kTunnelGroup, TunnelSubType::Flat);
|
||||
break;
|
||||
case 1:
|
||||
PaintUtilPushTunnelLeft(session, height, kTunnelGroup, TunnelSubType::Flat);
|
||||
break;
|
||||
}
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(
|
||||
EnumsToFlags(
|
||||
PaintSegment::topCorner, PaintSegment::rightCorner, PaintSegment::bottomCorner,
|
||||
PaintSegment::topRightSide),
|
||||
direction),
|
||||
48, 0x20);
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(
|
||||
EnumsToFlags(
|
||||
PaintSegment::leftCorner, PaintSegment::centre, PaintSegment::topLeftSide, PaintSegment::bottomLeftSide,
|
||||
PaintSegment::bottomRightSide),
|
||||
direction),
|
||||
0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight);
|
||||
break;
|
||||
case 5:
|
||||
switch (direction)
|
||||
{
|
||||
case 0:
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner0, height, session.SupportColours);
|
||||
break;
|
||||
case 1:
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner1, height, session.SupportColours);
|
||||
break;
|
||||
case 2:
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner2, height, session.SupportColours);
|
||||
break;
|
||||
case 3:
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner3, height, session.SupportColours);
|
||||
break;
|
||||
}
|
||||
PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight);
|
||||
break;
|
||||
case 6:
|
||||
switch (direction)
|
||||
{
|
||||
case 0:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[1][3].track, imageIds[1][3].handrail, { 0, 0, height },
|
||||
{ { 16, 16, height }, { 16, 16, 2 } });
|
||||
if (imageIds[1][3].frontTrack != ImageIndexUndefined)
|
||||
{
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[1][3].frontTrack, imageIds[1][3].frontHandrail, { 0, 0, height },
|
||||
{ { 16, 16, height + 27 }, { 16, 16, 0 } });
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[1][0].track, imageIds[1][0].handrail, { 0, 0, height },
|
||||
{ { 0, 16, height }, { 16, 16, 2 } });
|
||||
break;
|
||||
case 2:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[1][1].track, imageIds[1][1].handrail, { 0, 0, height },
|
||||
{ { 0, 0, height }, { 16, 16, 2 } });
|
||||
if (imageIds[1][1].frontTrack != ImageIndexUndefined)
|
||||
{
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[1][1].frontTrack, imageIds[1][1].frontHandrail, { 0, 0, height },
|
||||
{ { 0, 0, height + 27 }, { 16, 16, 0 } });
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[1][2].track, imageIds[1][2].handrail, { 0, 0, height },
|
||||
{ { 16, 0, height }, { 16, 16, 2 } });
|
||||
break;
|
||||
}
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(
|
||||
EnumsToFlags(
|
||||
PaintSegment::bottomCorner, PaintSegment::centre, PaintSegment::bottomLeftSide,
|
||||
PaintSegment::bottomRightSide),
|
||||
direction),
|
||||
0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight);
|
||||
break;
|
||||
case 7:
|
||||
switch (direction)
|
||||
{
|
||||
case 0:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[2][3].track, imageIds[2][3].handrail, { 0, 0, height },
|
||||
{ { 0, 6, height + 8 }, { 32, 20, 2 } });
|
||||
if (imageIds[2][3].frontTrack != ImageIndexUndefined)
|
||||
{
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[2][3].frontTrack, imageIds[2][3].frontHandrail, { 0, 0, height },
|
||||
{ { 0, 6, height + 27 }, { 32, 20, 0 } });
|
||||
}
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner2, height, session.SupportColours);
|
||||
break;
|
||||
case 1:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[2][0].track, imageIds[2][0].handrail, { 0, 0, height },
|
||||
{ { 0, 6, height }, { 32, 20, 2 } });
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner3, height, session.SupportColours);
|
||||
break;
|
||||
case 2:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[2][1].track, imageIds[2][1].handrail, { 0, 0, height },
|
||||
{ { 0, 6, height }, { 32, 20, 2 } });
|
||||
if (imageIds[2][1].frontTrack != ImageIndexUndefined)
|
||||
{
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[2][1].frontTrack, imageIds[2][1].frontHandrail, { 0, 0, height },
|
||||
{ { 0, 6, height + 27 }, { 32, 20, 0 } });
|
||||
}
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner0, height, session.SupportColours);
|
||||
break;
|
||||
case 3:
|
||||
WoodenRCTrackPaint<isClassic>(
|
||||
session, direction, imageIds[2][2].track, imageIds[2][2].handrail, { 0, 0, height },
|
||||
{ { 0, 6, height }, { 32, 20, 2 } });
|
||||
WoodenASupportsPaintSetup(
|
||||
session, supportType.wooden, WoodenSupportSubType::Corner1, height, session.SupportColours);
|
||||
break;
|
||||
}
|
||||
if (direction == 0 || direction == 3)
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height + 8, kTunnelGroup, TunnelSubType::Flat);
|
||||
}
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(
|
||||
EnumsToFlags(
|
||||
PaintSegment::topCorner, PaintSegment::leftCorner, PaintSegment::bottomCorner,
|
||||
PaintSegment::topLeftSide),
|
||||
direction),
|
||||
48, 0x20);
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(
|
||||
EnumsToFlags(
|
||||
PaintSegment::rightCorner, PaintSegment::centre, PaintSegment::topRightSide,
|
||||
PaintSegment::bottomLeftSide, PaintSegment::bottomRightSide),
|
||||
direction),
|
||||
0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + kDefaultGeneralSupportHeight);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/** rct2: 0x008ACAF8 */
|
||||
template<bool isClassic, std::array<std::array<StraightWoodenTrack, kNumOrthogonalDirections>, 5> imageIds>
|
||||
static void WoodenRCTrackLeftHalfBankedHelixUpLarge(
|
||||
|
|
Loading…
Reference in a new issue