Merge pull request #20969 from Gymnasiast/refactor/more-wooden-supports

Replace usages of old WoodenBSupportsSetup() overload
This commit is contained in:
Ted John 2023-11-17 17:59:17 +00:00 committed by GitHub
commit 18dec7d5c5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 504 additions and 1479 deletions

View File

@ -353,19 +353,19 @@ static constexpr UnkSupportsDescriptor Byte97B23C[] = {
{{{0, 0, 0}, {1, 1, 8}}, 0, 1}, {{{0, 0, 0}, {1, 1, 8}}, 0, 1},
{{{0, 0, 0}, {1, 1, 8}}, 0, 1}, {{{0, 0, 0}, {1, 1, 8}}, 0, 1},
{{{0, 0, 0}, {1, 1, 8}}, 0, 1}, {{{0, 0, 0}, {1, 1, 8}}, 0, 1},
{{{0, 0, 0}, {1, 1, 8}}, 0, 1}, // ?
{{{0, 0, 0}, {1, 1, 8}}, 0, 1}, {{{0, 0, 0}, {1, 1, 8}}, 0, 1},
{{{0, 0, 0}, {1, 1, 8}}, 0, 1}, {{{0, 0, 0}, {1, 1, 8}}, 0, 1},
{{{0, 0, 0}, {1, 1, 8}}, 0, 1}, {{{0, 0, 0}, {1, 1, 8}}, 0, 1},
{{{0, 0, 0}, {1, 1, 8}}, 0, 1}, // ?
{{{0, 0, 0}, {1, 1, 8}}, 0, 1}, {{{0, 0, 0}, {1, 1, 8}}, 0, 1},
{{{0, 0, 0}, {1, 1, 8}}, 0, 1}, {{{0, 0, 0}, {1, 1, 8}}, 0, 1},
{{{0, 0, 0}, {1, 1, 8}}, 0, 1}, {{{0, 0, 0}, {1, 1, 8}}, 0, 1},
{{{0, 0, 0}, {1, 1, 8}}, 0, 1}, // ?
{{{0, 0, 0}, {1, 1, 8}}, 0, 1}, {{{0, 0, 0}, {1, 1, 8}}, 0, 1},
{{{0, 0, 0}, {1, 1, 8}}, 0, 1}, {{{0, 0, 0}, {1, 1, 8}}, 0, 1},
{{{0, 0, 0}, {1, 1, 8}}, 0, 1}, {{{0, 0, 0}, {1, 1, 8}}, 0, 1},
{{{0, 0, 0}, {1, 1, 8}}, 0, 1}, {{{2, 2, 1}, {28, 28, 2}}, 0, 1}, // Large scenery (all directions)
{{{0, 0, 0}, {1, 1, 8}}, 0, 1},
{{{0, 0, 0}, {1, 1, 8}}, 0, 1},
{{{2, 2, 1}, {28, 28, 2}}, 0, 1},
{{{0, 0, 0}, {1, 1, 8}}, 0, 1}, // Flat to steep large 1 {{{0, 0, 0}, {1, 1, 8}}, 0, 1}, // Flat to steep large 1
{{{0, 0, 0}, {1, 1, 8}}, 0, 1}, {{{0, 0, 0}, {1, 1, 8}}, 0, 1},
{{{0, 0, 0}, {1, 1, 8}}, 0, 1}, {{{0, 0, 0}, {1, 1, 8}}, 0, 1},
@ -680,16 +680,32 @@ bool WoodenASupportsPaintSetup(
return hasSupports; return hasSupports;
} }
static int32_t GetSpecialOffsetForTransitionType(WoodenSupportTransitionType transitionType, Direction direction)
{
if (transitionType == WoodenSupportTransitionType::None)
return 0;
// "Special" values are an offset into tables like Byte97B23C, plus 1.
// Save for WoodenSupportTransitionType::LargeScenery, there are four entries (one per direction) for every
// transition type. While these tables will have to be refactored in due course, we can only do so once all
// drawing functions use WoodenSupportTransitionType instead of passing the "special" value directly.
int32_t specialOffset = 0;
if (transitionType < WoodenSupportTransitionType::Scenery)
specialOffset = (EnumValue(transitionType) * NumOrthogonalDirections) + direction;
else if (transitionType == WoodenSupportTransitionType::Scenery)
specialOffset = (EnumValue(transitionType) * NumOrthogonalDirections);
else
specialOffset = (EnumValue(transitionType) * NumOrthogonalDirections) + direction - 3;
return specialOffset + 1;
}
bool WoodenASupportsPaintSetup( bool WoodenASupportsPaintSetup(
PaintSession& session, WoodenSupportType supportType, WoodenSupportSubType subType, int32_t height, ImageId imageTemplate, PaintSession& session, WoodenSupportType supportType, WoodenSupportSubType subType, int32_t height, ImageId imageTemplate,
WoodenSupportTransitionType transitionType, Direction direction) WoodenSupportTransitionType transitionType, Direction direction)
{ {
int32_t oldSupportType = (EnumValue(supportType) * 6) + EnumValue(subType); int32_t oldSupportType = (EnumValue(supportType) * 6) + EnumValue(subType);
int32_t special = 0; int32_t special = GetSpecialOffsetForTransitionType(transitionType, direction);
if (transitionType != WoodenSupportTransitionType::None)
{
special = (EnumValue(transitionType) * NumOrthogonalDirections) + direction + 1;
}
return WoodenASupportsPaintSetup(session, oldSupportType, special, height, imageTemplate); return WoodenASupportsPaintSetup(session, oldSupportType, special, height, imageTemplate);
} }
@ -714,7 +730,7 @@ bool WoodenASupportsPaintSetupRotated(
* *
* @return (al) whether supports have been drawn * @return (al) whether supports have been drawn
*/ */
bool WoodenBSupportsPaintSetup( static bool WoodenBSupportsPaintSetup(
PaintSession& session, int32_t supportType, int32_t special, int32_t height, ImageId imageTemplate) PaintSession& session, int32_t supportType, int32_t special, int32_t height, ImageId imageTemplate)
{ {
if (!(session.Flags & PaintSessionFlags::PassedSurface)) if (!(session.Flags & PaintSessionFlags::PassedSurface))
@ -829,11 +845,7 @@ bool WoodenBSupportsPaintSetup(
WoodenSupportTransitionType transitionType, Direction direction) WoodenSupportTransitionType transitionType, Direction direction)
{ {
int32_t oldSupportType = (EnumValue(supportType) * 6) + EnumValue(subType); int32_t oldSupportType = (EnumValue(supportType) * 6) + EnumValue(subType);
int32_t special = 0; int32_t special = GetSpecialOffsetForTransitionType(transitionType, direction);
if (transitionType != WoodenSupportTransitionType::None)
{
special = (EnumValue(transitionType) * NumOrthogonalDirections) + direction + 1;
}
return WoodenBSupportsPaintSetup(session, oldSupportType, special, height, imageTemplate); return WoodenBSupportsPaintSetup(session, oldSupportType, special, height, imageTemplate);
} }

View File

@ -42,6 +42,7 @@ enum class WoodenSupportTransitionType : uint8_t
Up25DegToUp60Deg = 3, Up25DegToUp60Deg = 3,
Up60DegToUp25Deg = 4, Up60DegToUp25Deg = 4,
Up60Deg = 5, Up60Deg = 5,
Scenery = 12,
}; };
// There are 13 types of metal supports. A graphic showing all of them is available here: // There are 13 types of metal supports. A graphic showing all of them is available here:
@ -127,8 +128,6 @@ bool WoodenASupportsPaintSetup(
bool WoodenASupportsPaintSetupRotated( bool WoodenASupportsPaintSetupRotated(
PaintSession& session, WoodenSupportType supportType, WoodenSupportSubType subType, Direction direction, int32_t height, PaintSession& session, WoodenSupportType supportType, WoodenSupportSubType subType, Direction direction, int32_t height,
ImageId imageTemplate, WoodenSupportTransitionType transitionType = WoodenSupportTransitionType::None); ImageId imageTemplate, WoodenSupportTransitionType transitionType = WoodenSupportTransitionType::None);
bool WoodenBSupportsPaintSetup(
PaintSession& session, int32_t supportType, int32_t special, int32_t height, ImageId imageTemplate);
bool WoodenBSupportsPaintSetup( bool WoodenBSupportsPaintSetup(
PaintSession& session, WoodenSupportType supportType, WoodenSupportSubType subType, int32_t height, ImageId imageTemplate, PaintSession& session, WoodenSupportType supportType, WoodenSupportSubType subType, int32_t height, ImageId imageTemplate,
WoodenSupportTransitionType transitionType = WoodenSupportTransitionType::None, Direction direction = 0); WoodenSupportTransitionType transitionType = WoodenSupportTransitionType::None, Direction direction = 0);

View File

@ -61,15 +61,16 @@ static void PaintLargeScenerySupports(
if (tile.flags & LARGE_SCENERY_TILE_FLAG_NO_SUPPORTS) if (tile.flags & LARGE_SCENERY_TILE_FLAG_NO_SUPPORTS)
return; return;
auto special = 0; auto transitionType = WoodenSupportTransitionType::None;
auto supportHeight = height; auto supportHeight = height;
if (supportHeight & 0xF) if (supportHeight & 0xF)
{ {
supportHeight &= ~0xF; supportHeight &= ~0xF;
special = 49; transitionType = WoodenSupportTransitionType::Scenery;
} }
WoodenBSupportsPaintSetup(session, (direction & 1), special, supportHeight, imageTemplate); WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, supportHeight, imageTemplate, transitionType);
int32_t clearanceHeight = Ceil2(tileElement.GetClearanceZ() + 15, 16); int32_t clearanceHeight = Ceil2(tileElement.GetClearanceZ() + 15, 16);
if (tile.flags & LARGE_SCENERY_TILE_FLAG_ALLOW_SUPPORTS_ABOVE) if (tile.flags & LARGE_SCENERY_TILE_FLAG_ALLOW_SUPPORTS_ABOVE)

View File

@ -42,12 +42,12 @@ static void PaintSmallScenerySupports(
if (sceneryEntry.HasFlag(SMALL_SCENERY_FLAG_NO_SUPPORTS)) if (sceneryEntry.HasFlag(SMALL_SCENERY_FLAG_NO_SUPPORTS))
return; return;
auto special = 0; auto transitionType = WoodenSupportTransitionType::None;
auto supportHeight = height; auto supportHeight = height;
if (supportHeight & 0xF) if (supportHeight & 0xF)
{ {
supportHeight &= ~0xF; supportHeight &= ~0xF;
special = 49; transitionType = WoodenSupportTransitionType::Scenery;
} }
auto supportImageTemplate = ImageId().WithRemap(0); auto supportImageTemplate = ImageId().WithRemap(0);
@ -60,8 +60,9 @@ static void PaintSmallScenerySupports(
supportImageTemplate = imageTemplate; supportImageTemplate = imageTemplate;
} }
auto supportType = (direction & 1) ? 1 : 0; WoodenBSupportsPaintSetupRotated(
WoodenBSupportsPaintSetup(session, supportType, special, supportHeight, supportImageTemplate); session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, supportHeight, supportImageTemplate,
transitionType);
} }
static void SetSupportHeights( static void SetSupportHeights(

File diff suppressed because it is too large Load Diff

View File

@ -1987,16 +1987,6 @@ static void SideFrictionRCTrackDiag25DegUp(
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21868), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21868), { -16, -16, height },
{ { -16, -16, height + 43 }, { 32, 32, 0 } }); { { -16, -16, height + 43 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
} }
@ -2011,19 +2001,14 @@ static void SideFrictionRCTrackDiag25DegUp(
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21844), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21844), { -16, -16, height },
{ { -16, -16, height + 43 }, { 32, 32, 0 } }); { { -16, -16, height + 43 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20);
break; break;
@ -2032,12 +2017,6 @@ static void SideFrictionRCTrackDiag25DegUp(
{ {
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21866), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21866), { -16, -16, height },
@ -2045,10 +2024,6 @@ static void SideFrictionRCTrackDiag25DegUp(
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21869), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21869), { -16, -16, height },
{ { -16, -16, height + 43 }, { 32, 32, 0 } }); { { -16, -16, height + 43 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
} }
@ -2056,12 +2031,6 @@ static void SideFrictionRCTrackDiag25DegUp(
{ {
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21842), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21842), { -16, -16, height },
@ -2069,13 +2038,14 @@ static void SideFrictionRCTrackDiag25DegUp(
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21845), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21845), { -16, -16, height },
{ { -16, -16, height + 43 }, { 32, 32, 0 } }); { { -16, -16, height + 43 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner2, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20);
break; break;
@ -2319,16 +2289,6 @@ static void SideFrictionRCTrackDiag25DegUpToFlat(
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21862), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21862), { -16, -16, height },
{ { -16, -16, height + 35 }, { 32, 32, 0 } }); { { -16, -16, height + 35 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
} }
@ -2343,19 +2303,14 @@ static void SideFrictionRCTrackDiag25DegUpToFlat(
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21838), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21838), { -16, -16, height },
{ { -16, -16, height + 35 }, { 32, 32, 0 } }); { { -16, -16, height + 35 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20);
break; break;
@ -2364,12 +2319,6 @@ static void SideFrictionRCTrackDiag25DegUpToFlat(
{ {
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21860), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21860), { -16, -16, height },
@ -2377,10 +2326,6 @@ static void SideFrictionRCTrackDiag25DegUpToFlat(
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21863), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21863), { -16, -16, height },
{ { -16, -16, height + 35 }, { 32, 32, 0 } }); { { -16, -16, height + 35 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
} }
@ -2388,12 +2333,6 @@ static void SideFrictionRCTrackDiag25DegUpToFlat(
{ {
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21836), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21836), { -16, -16, height },
@ -2401,13 +2340,14 @@ static void SideFrictionRCTrackDiag25DegUpToFlat(
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21839), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21839), { -16, -16, height },
{ { -16, -16, height + 35 }, { 32, 32, 0 } }); { { -16, -16, height + 35 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner2, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20);
break; break;
@ -2485,16 +2425,6 @@ static void SideFrictionRCTrackDiag25DegDown(
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21869), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21869), { -16, -16, height },
{ { -16, -16, height + 43 }, { 32, 32, 0 } }); { { -16, -16, height + 43 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
} }
@ -2509,19 +2439,14 @@ static void SideFrictionRCTrackDiag25DegDown(
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21845), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21845), { -16, -16, height },
{ { -16, -16, height + 43 }, { 32, 32, 0 } }); { { -16, -16, height + 43 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20);
break; break;
@ -2530,12 +2455,6 @@ static void SideFrictionRCTrackDiag25DegDown(
{ {
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21864), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21864), { -16, -16, height },
@ -2543,10 +2462,6 @@ static void SideFrictionRCTrackDiag25DegDown(
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21868), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21868), { -16, -16, height },
{ { -16, -16, height + 43 }, { 32, 32, 0 } }); { { -16, -16, height + 43 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
} }
@ -2554,12 +2469,6 @@ static void SideFrictionRCTrackDiag25DegDown(
{ {
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21840), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21840), { -16, -16, height },
@ -2567,13 +2476,14 @@ static void SideFrictionRCTrackDiag25DegDown(
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21844), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21844), { -16, -16, height },
{ { -16, -16, height + 43 }, { 32, 32, 0 } }); { { -16, -16, height + 43 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner2, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20);
break; break;
@ -2649,16 +2559,6 @@ static void SideFrictionRCTrackDiagFlatTo25DegDown(
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21863), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21863), { -16, -16, height },
{ { -16, -16, height + 35 }, { 32, 32, 0 } }); { { -16, -16, height + 35 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
} }
@ -2673,31 +2573,20 @@ static void SideFrictionRCTrackDiagFlatTo25DegDown(
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21839), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21839), { -16, -16, height },
{ { -16, -16, height + 35 }, { 32, 32, 0 } }); { { -16, -16, height + 35 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
break; break;
case 2: case 2:
if (trackElement.HasChain()) if (trackElement.HasChain())
{ {
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21858), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21858), { -16, -16, height },
@ -2705,10 +2594,6 @@ static void SideFrictionRCTrackDiagFlatTo25DegDown(
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21862), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21862), { -16, -16, height },
{ { -16, -16, height + 35 }, { 32, 32, 0 } }); { { -16, -16, height + 35 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
} }
@ -2716,12 +2601,6 @@ static void SideFrictionRCTrackDiagFlatTo25DegDown(
{ {
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21834), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21834), { -16, -16, height },
@ -2729,13 +2608,14 @@ static void SideFrictionRCTrackDiagFlatTo25DegDown(
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21838), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(21838), { -16, -16, height },
{ { -16, -16, height + 35 }, { 32, 32, 0 } }); { { -16, -16, height + 35 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner2, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
break; break;
case 3: case 3:
if (trackElement.HasChain()) if (trackElement.HasChain())
@ -3172,31 +3052,19 @@ static void SideFrictionRCTrackDiag60DegUp(
session, direction, session, direction,
session.TrackColours[SCHEME_TRACK].WithIndex(SPR_SIDE_FRICTION_DIAG_60_DEG_UP_DIR_0_B), session.TrackColours[SCHEME_TRACK].WithIndex(SPR_SIDE_FRICTION_DIAG_60_DEG_UP_DIR_0_B),
{ -16, -16, height }, { { -16, -16, height + 43 }, { 32, 32, 0 } }); { -16, -16, height }, { { -16, -16, height + 43 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 104, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 104, 0x20);
break; break;
case 2: case 2:
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session, direction,
@ -3206,12 +3074,13 @@ static void SideFrictionRCTrackDiag60DegUp(
session, direction, session, direction,
session.TrackColours[SCHEME_TRACK].WithIndex(SPR_SIDE_FRICTION_DIAG_60_DEG_UP_DIR_2_B), session.TrackColours[SCHEME_TRACK].WithIndex(SPR_SIDE_FRICTION_DIAG_60_DEG_UP_DIR_2_B),
{ -16, -16, height }, { { -16, -16, height + 43 }, { 32, 32, 0 } }); { -16, -16, height }, { { -16, -16, height + 43 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner2, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 104, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 104, 0x20);
break; break;
@ -3270,30 +3139,19 @@ static void SideFrictionRCTrackDiag60DegUpTo25DegUp(
session, direction, session, direction,
session.TrackColours[SCHEME_TRACK].WithIndex(SPR_SIDE_FRICTION_DIAG_60_DEG_UP_TO_25_DEG_UP_DIR_0_B), session.TrackColours[SCHEME_TRACK].WithIndex(SPR_SIDE_FRICTION_DIAG_60_DEG_UP_TO_25_DEG_UP_DIR_0_B),
{ -16, -16, height }, { { -16, -16, height + 59 }, { 32, 32, 0 } }); { -16, -16, height }, { { -16, -16, height + 59 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
break; break;
case 2: case 2:
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session, direction,
@ -3303,12 +3161,13 @@ static void SideFrictionRCTrackDiag60DegUpTo25DegUp(
session, direction, session, direction,
session.TrackColours[SCHEME_TRACK].WithIndex(SPR_SIDE_FRICTION_DIAG_60_DEG_UP_TO_25_DEG_UP_DIR_2_B), session.TrackColours[SCHEME_TRACK].WithIndex(SPR_SIDE_FRICTION_DIAG_60_DEG_UP_TO_25_DEG_UP_DIR_2_B),
{ -16, -16, height }, { { -16, -16, height + 59 }, { 32, 32, 0 } }); { -16, -16, height }, { { -16, -16, height + 59 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner2, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
break; break;
@ -3365,30 +3224,19 @@ static void SideFrictionRCTrackDiag25DegUpTo60DegUp(
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(24033), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(24033), { -16, -16, height },
{ { -16, -16, height + 59 }, { 32, 32, 0 } }); { { -16, -16, height + 59 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
break; break;
case 2: case 2:
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session, direction,
@ -3397,12 +3245,13 @@ static void SideFrictionRCTrackDiag25DegUpTo60DegUp(
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(24034), { -16, -16, height }, session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(24034), { -16, -16, height },
{ { -16, -16, height + 59 }, { 32, 32, 0 } }); { { -16, -16, height + 59 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner2, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
break; break;

View File

@ -9504,18 +9504,11 @@ static void WoodenRCTrackDiag25DegUp(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24935), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24935), { -16, -16, height },
{ { -16, -16, height + 43 }, { 32, 32, 0 } }); { { -16, -16, height + 43 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
} }
else else
{ {
@ -9534,18 +9527,11 @@ static void WoodenRCTrackDiag25DegUp(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24893), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24893), { -16, -16, height },
{ { -16, -16, height + 43 }, { 32, 32, 0 } }); { { -16, -16, height + 43 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
} }
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20);
@ -9555,12 +9541,6 @@ static void WoodenRCTrackDiag25DegUp(
{ {
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24067), session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24067),
@ -9574,10 +9554,6 @@ static void WoodenRCTrackDiag25DegUp(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24936), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24936), { -16, -16, height },
{ { -16, -16, height + 43 }, { 32, 32, 0 } }); { { -16, -16, height + 43 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
} }
@ -9585,12 +9561,6 @@ static void WoodenRCTrackDiag25DegUp(
{ {
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24025), session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24025),
@ -9604,13 +9574,14 @@ static void WoodenRCTrackDiag25DegUp(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24894), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24894), { -16, -16, height },
{ { -16, -16, height + 43 }, { 32, 32, 0 } }); { { -16, -16, height + 43 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner2, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20);
break; break;
@ -9688,30 +9659,17 @@ static void WoodenRCTrackDiag60DegUp(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24911), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24911), { -16, -16, height },
{ { -16, -16, height + 91 }, { 32, 32, 0 } }); { { -16, -16, height + 91 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 104, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 104, 0x20);
break; break;
case 2: case 2:
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24043), { -16, -16, height }, session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24043), { -16, -16, height },
@ -9725,12 +9683,13 @@ static void WoodenRCTrackDiag60DegUp(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24912), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24912), { -16, -16, height },
{ { -16, -16, height + 91 }, { 32, 32, 0 } }); { { -16, -16, height + 91 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner2, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 104, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 104, 0x20);
break; break;
@ -9994,30 +9953,17 @@ static void WoodenRCTrackDiag25DegUpTo60DegUp(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24899), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24899), { -16, -16, height },
{ { -16, -16, height + 59 }, { 32, 32, 0 } }); { { -16, -16, height + 59 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 72, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 72, 0x20);
break; break;
case 2: case 2:
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24031), { -16, -16, height }, session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24031), { -16, -16, height },
@ -10031,12 +9977,13 @@ static void WoodenRCTrackDiag25DegUpTo60DegUp(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24900), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24900), { -16, -16, height },
{ { -16, -16, height + 59 }, { 32, 32, 0 } }); { { -16, -16, height + 59 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner2, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 72, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 72, 0x20);
break; break;
@ -10097,30 +10044,17 @@ static void WoodenRCTrackDiag60DegUpTo25DegUp(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24905), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24905), { -16, -16, height },
{ { -16, -16, height + 59 }, { 32, 32, 0 } }); { { -16, -16, height + 59 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 72, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 72, 0x20);
break; break;
case 2: case 2:
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24037), { -16, -16, height }, session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24037), { -16, -16, height },
@ -10134,12 +10068,11 @@ static void WoodenRCTrackDiag60DegUpTo25DegUp(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24906), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24906), { -16, -16, height },
{ { -16, -16, height + 59 }, { 32, 32, 0 } }); { { -16, -16, height + 59 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner2, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 72, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 72, 0x20);
break; break;
@ -10219,18 +10152,11 @@ static void WoodenRCTrackDiag25DegUpToFlat(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24929), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24929), { -16, -16, height },
{ { -16, -16, height + 35 }, { 32, 32, 0 } }); { { -16, -16, height + 35 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
} }
else else
{ {
@ -10249,18 +10175,11 @@ static void WoodenRCTrackDiag25DegUpToFlat(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24887), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24887), { -16, -16, height },
{ { -16, -16, height + 35 }, { 32, 32, 0 } }); { { -16, -16, height + 35 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
} }
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20);
@ -10270,12 +10189,6 @@ static void WoodenRCTrackDiag25DegUpToFlat(
{ {
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24061), session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24061),
@ -10289,10 +10202,6 @@ static void WoodenRCTrackDiag25DegUpToFlat(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24930), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24930), { -16, -16, height },
{ { -16, -16, height + 35 }, { 32, 32, 0 } }); { { -16, -16, height + 35 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
} }
@ -10300,12 +10209,6 @@ static void WoodenRCTrackDiag25DegUpToFlat(
{ {
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24019), session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24019),
@ -10319,13 +10222,14 @@ static void WoodenRCTrackDiag25DegUpToFlat(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24888), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24888), { -16, -16, height },
{ { -16, -16, height + 35 }, { 32, 32, 0 } }); { { -16, -16, height + 35 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner2, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20);
break; break;
@ -10422,18 +10326,11 @@ static void WoodenRCTrackDiag25DegDown(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24936), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24936), { -16, -16, height },
{ { -16, -16, height + 43 }, { 32, 32, 0 } }); { { -16, -16, height + 43 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
} }
else else
{ {
@ -10452,18 +10349,11 @@ static void WoodenRCTrackDiag25DegDown(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24894), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24894), { -16, -16, height },
{ { -16, -16, height + 43 }, { 32, 32, 0 } }); { { -16, -16, height + 43 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
} }
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20);
@ -10473,12 +10363,6 @@ static void WoodenRCTrackDiag25DegDown(
{ {
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24065), session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24065),
@ -10492,10 +10376,6 @@ static void WoodenRCTrackDiag25DegDown(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24935), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24935), { -16, -16, height },
{ { -16, -16, height + 43 }, { 32, 32, 0 } }); { { -16, -16, height + 43 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
} }
@ -10503,12 +10383,6 @@ static void WoodenRCTrackDiag25DegDown(
{ {
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24023), session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24023),
@ -10522,13 +10396,14 @@ static void WoodenRCTrackDiag25DegDown(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24893), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24893), { -16, -16, height },
{ { -16, -16, height + 43 }, { 32, 32, 0 } }); { { -16, -16, height + 43 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner2, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20);
break; break;
@ -10606,30 +10481,17 @@ static void WoodenRCTrackDiag60DegDown(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24912), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24912), { -16, -16, height },
{ { -16, -16, height + 91 }, { 32, 32, 0 } }); { { -16, -16, height + 91 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 104, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 104, 0x20);
break; break;
case 2: case 2:
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24041), { -16, -16, height }, session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24041), { -16, -16, height },
@ -10643,12 +10505,11 @@ static void WoodenRCTrackDiag60DegDown(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24911), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24911), { -16, -16, height },
{ { -16, -16, height + 91 }, { 32, 32, 0 } }); { { -16, -16, height + 91 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner2, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 104, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 104, 0x20);
break; break;
@ -10726,18 +10587,11 @@ static void WoodenRCTrackDiagFlatTo25DegDown(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24930), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24930), { -16, -16, height },
{ { -16, -16, height + 35 }, { 32, 32, 0 } }); { { -16, -16, height + 35 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
} }
else else
{ {
@ -10756,18 +10610,11 @@ static void WoodenRCTrackDiagFlatTo25DegDown(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24888), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24888), { -16, -16, height },
{ { -16, -16, height + 35 }, { 32, 32, 0 } }); { { -16, -16, height + 35 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
} }
break; break;
case 2: case 2:
@ -10775,12 +10622,6 @@ static void WoodenRCTrackDiagFlatTo25DegDown(
{ {
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24059), session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24059),
@ -10794,10 +10635,6 @@ static void WoodenRCTrackDiagFlatTo25DegDown(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24929), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24929), { -16, -16, height },
{ { -16, -16, height + 35 }, { 32, 32, 0 } }); { { -16, -16, height + 35 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
} }
@ -10805,12 +10642,6 @@ static void WoodenRCTrackDiagFlatTo25DegDown(
{ {
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24017), session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24017),
@ -10824,13 +10655,14 @@ static void WoodenRCTrackDiagFlatTo25DegDown(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24887), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24887), { -16, -16, height },
{ { -16, -16, height + 35 }, { 32, 32, 0 } }); { { -16, -16, height + 35 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner2, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
break; break;
case 3: case 3:
if (trackElement.HasChain()) if (trackElement.HasChain())
@ -10907,30 +10739,17 @@ static void WoodenRCTrackDiag25DegDownTo60DegDown(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24906), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24906), { -16, -16, height },
{ { -16, -16, height + 59 }, { 32, 32, 0 } }); { { -16, -16, height + 59 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 72, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 72, 0x20);
break; break;
case 2: case 2:
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24035), { -16, -16, height }, session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24035), { -16, -16, height },
@ -10944,12 +10763,11 @@ static void WoodenRCTrackDiag25DegDownTo60DegDown(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24905), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24905), { -16, -16, height },
{ { -16, -16, height + 59 }, { 32, 32, 0 } }); { { -16, -16, height + 59 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner2, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 72, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 72, 0x20);
break; break;
@ -11010,30 +10828,17 @@ static void WoodenRCTrackDiag60DegDownTo25DegDown(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24900), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24900), { -16, -16, height },
{ { -16, -16, height + 59 }, { 32, 32, 0 } }); { { -16, -16, height + 59 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 72, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 72, 0x20);
break; break;
case 2: case 2:
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24029), { -16, -16, height }, session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24029), { -16, -16, height },
@ -11047,12 +10852,11 @@ static void WoodenRCTrackDiag60DegDownTo25DegDown(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24899), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24899), { -16, -16, height },
{ { -16, -16, height + 59 }, { 32, 32, 0 } }); { { -16, -16, height + 59 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner2, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 72, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 72, 0x20);
break; break;
@ -11934,30 +11738,17 @@ static void WoodenRCTrackDiag25DegUpToLeftBank(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24959), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24959), { -16, -16, height },
{ { -16, -16, height + 35 }, { 32, 32, 0 } }); { { -16, -16, height + 35 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20);
break; break;
case 2: case 2:
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24091), { -16, -16, height }, session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24091), { -16, -16, height },
@ -11971,12 +11762,11 @@ static void WoodenRCTrackDiag25DegUpToLeftBank(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24960), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24960), { -16, -16, height },
{ { -16, -16, height + 35 }, { 32, 32, 0 } }); { { -16, -16, height + 35 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner2, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20);
break; break;
@ -12037,30 +11827,17 @@ static void WoodenRCTrackDiag25DegUpToRightBank(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24965), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24965), { -16, -16, height },
{ { -16, -16, height + 35 }, { 32, 32, 0 } }); { { -16, -16, height + 35 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20);
break; break;
case 2: case 2:
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24097), { -16, -16, height }, session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24097), { -16, -16, height },
@ -12074,12 +11851,11 @@ static void WoodenRCTrackDiag25DegUpToRightBank(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24966), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24966), { -16, -16, height },
{ { -16, -16, height + 35 }, { 32, 32, 0 } }); { { -16, -16, height + 35 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner2, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0); PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20);
break; break;
@ -12138,28 +11914,15 @@ static void WoodenRCTrackDiagLeftBankTo25DegDown(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24966), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24966), { -16, -16, height },
{ { -16, -16, height + 35 }, { 32, 32, 0 } }); { { -16, -16, height + 35 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
break; break;
case 2: case 2:
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24095), { -16, -16, height }, session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24095), { -16, -16, height },
@ -12173,12 +11936,13 @@ static void WoodenRCTrackDiagLeftBankTo25DegDown(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24965), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24965), { -16, -16, height },
{ { -16, -16, height + 35 }, { 32, 32, 0 } }); { { -16, -16, height + 35 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner2, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
break; break;
case 3: case 3:
switch (direction) switch (direction)
@ -12236,28 +12000,15 @@ static void WoodenRCTrackDiagRightBankTo25DegDown(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24960), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24960), { -16, -16, height },
{ { -16, -16, height + 35 }, { 32, 32, 0 } }); { { -16, -16, height + 35 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
break; break;
case 2: case 2:
switch (direction) switch (direction)
{ {
case 0:
WoodenBSupportsPaintSetup(session, 4, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 1:
WoodenBSupportsPaintSetup(session, 5, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 2: case 2:
PaintAddImageAsParentRotated( PaintAddImageAsParentRotated(
session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24089), { -16, -16, height }, session, direction, WoodenRCGetTrackColour<isClassic>(session).WithIndex(24089), { -16, -16, height },
@ -12271,12 +12022,11 @@ static void WoodenRCTrackDiagRightBankTo25DegDown(
PaintAddImageAsChildRotated( PaintAddImageAsChildRotated(
session, direction, WoodenRCGetRailsColour(session).WithIndex(24959), { -16, -16, height }, session, direction, WoodenRCGetRailsColour(session).WithIndex(24959), { -16, -16, height },
{ { -16, -16, height + 35 }, { 32, 32, 0 } }); { { -16, -16, height + 35 }, { 32, 32, 0 } });
WoodenBSupportsPaintSetup(session, 2, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break;
case 3:
WoodenBSupportsPaintSetup(session, 3, 0, height + 16, session.TrackColours[SCHEME_SUPPORTS]);
break; break;
} }
WoodenBSupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner2, direction, height + 16,
session.TrackColours[SCHEME_SUPPORTS]);
break; break;
case 3: case 3:
switch (direction) switch (direction)

View File

@ -1846,27 +1846,6 @@ static void MiniatureRailwayTrackDiagFlat(
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20); PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
} }
enum
{
WOOD_A = 0,
WOOD_B = 1,
};
static bool WoodenSupportsPaintSetup(
PaintSession& session, int32_t woodType, int32_t supportType, int32_t special, int32_t height, ImageId imageColourFlags)
{
switch (woodType)
{
case WOOD_A:
return WoodenASupportsPaintSetup(session, supportType, special, height, imageColourFlags);
case WOOD_B:
return WoodenBSupportsPaintSetup(session, supportType, special, height, imageColourFlags);
}
return false;
}
/** rct2: 0x008AD230 */ /** rct2: 0x008AD230 */
static void MiniatureRailwayTrackDiag25DegUp( static void MiniatureRailwayTrackDiag25DegUp(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height, PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
@ -1888,19 +1867,22 @@ static void MiniatureRailwayTrackDiag25DegUp(
auto supportType = _diagSupportTypes[direction][trackSequence]; auto supportType = _diagSupportTypes[direction][trackSequence];
if (supportType.has_value()) if (supportType.has_value())
{ {
// TODO: The supports are inconsistent for different rotations
int8_t supportFunction = WOOD_B;
if (supportType == WoodenSupportSubType::NeSw || supportType == WoodenSupportSubType::NwSe)
{
supportFunction = WOOD_A;
}
const auto enumValue = EnumValue(supportType.value()); const auto enumValue = EnumValue(supportType.value());
floorImage = floors[enumValue].image_id; floorImage = floors[enumValue].image_id;
floorBoundSize = floors[enumValue].bound_size; floorBoundSize = floors[enumValue].bound_size;
floorBoundOffset = floors[enumValue].bound_offset; floorBoundOffset = floors[enumValue].bound_offset;
hasSupports = WoodenSupportsPaintSetup(
session, supportFunction, enumValue, 0, height + heightDiff, session.TrackColours[SCHEME_SUPPORTS]); if (trackSequence == 3)
{
hasSupports = WoodenASupportsPaintSetup(
session, enumValue, 0, height + heightDiff, session.TrackColours[SCHEME_SUPPORTS]);
}
else
{
hasSupports = WoodenBSupportsPaintSetup(
session, WoodenSupportType::Truss, supportType.value(), height + heightDiff,
session.TrackColours[SCHEME_SUPPORTS]);
}
} }
if (direction == 1 && trackSequence == 3) if (direction == 1 && trackSequence == 3)
@ -2012,12 +1994,6 @@ static void MiniatureRailwayTrackDiag25DegUpToFlat(
{ 0, -8, -8, +8 }, { 0, -8, -8, +8 },
}; };
int8_t supportFunction = WOOD_B;
if (trackSequence == 3)
{
supportFunction = WOOD_A;
}
bool hasSupports = false; bool hasSupports = false;
auto supportType = _diagSupportTypes[direction][trackSequence]; auto supportType = _diagSupportTypes[direction][trackSequence];
@ -2031,9 +2007,18 @@ static void MiniatureRailwayTrackDiag25DegUpToFlat(
floorImage = floors[enumValue].image_id; floorImage = floors[enumValue].image_id;
floorBoundSize = floors[enumValue].bound_size; floorBoundSize = floors[enumValue].bound_size;
floorBoundOffset = floors[enumValue].bound_offset; floorBoundOffset = floors[enumValue].bound_offset;
hasSupports = WoodenSupportsPaintSetup( if (trackSequence == 3)
session, supportFunction, enumValue, 0, height + supportOffsets[direction][trackSequence], {
session.TrackColours[SCHEME_SUPPORTS]); hasSupports = WoodenASupportsPaintSetup(
session, enumValue, 0, height + supportOffsets[direction][trackSequence],
session.TrackColours[SCHEME_SUPPORTS]);
}
else
{
hasSupports = WoodenBSupportsPaintSetup(
session, WoodenSupportType::Truss, supportType.value(), height + supportOffsets[direction][trackSequence],
session.TrackColours[SCHEME_SUPPORTS]);
}
} }
if (direction == 1 && trackSequence == 3) if (direction == 1 && trackSequence == 3)
@ -2089,12 +2074,6 @@ static void MiniatureRailwayTrackDiag25DegDown(
{ 0, -8, -8, -8 }, { 0, -8, -8, -8 },
}; };
int8_t supportFunction = WOOD_B;
if (trackSequence == 3)
{
supportFunction = WOOD_A;
}
bool hasSupports = false; bool hasSupports = false;
uint32_t floorImage = 0; uint32_t floorImage = 0;
@ -2108,9 +2087,18 @@ static void MiniatureRailwayTrackDiag25DegDown(
floorImage = floors[enumValue].image_id; floorImage = floors[enumValue].image_id;
floorBoundSize = floors[enumValue].bound_size; floorBoundSize = floors[enumValue].bound_size;
floorBoundOffset = floors[enumValue].bound_offset; floorBoundOffset = floors[enumValue].bound_offset;
hasSupports = WoodenSupportsPaintSetup( if (trackSequence == 3)
session, supportFunction, enumValue, 0, height + supportOffsets[direction][trackSequence], {
session.TrackColours[SCHEME_SUPPORTS]); hasSupports = WoodenASupportsPaintSetup(
session, enumValue, 0, height + supportOffsets[direction][trackSequence],
session.TrackColours[SCHEME_SUPPORTS]);
}
else
{
hasSupports = WoodenBSupportsPaintSetup(
session, WoodenSupportType::Truss, supportType.value(), height + supportOffsets[direction][trackSequence],
session.TrackColours[SCHEME_SUPPORTS]);
}
} }
if (direction == 1 && trackSequence == 3) if (direction == 1 && trackSequence == 3)
@ -2165,12 +2153,6 @@ static void MiniatureRailwayTrackDiagFlatTo25DegDown(
{ 0, -8, -8, -8 }, { 0, -8, -8, -8 },
}; };
int8_t supportFunction = WOOD_B;
if (trackSequence == 3)
{
supportFunction = WOOD_A;
}
bool hasSupports = false; bool hasSupports = false;
uint32_t floorImage = 0; uint32_t floorImage = 0;
CoordsXY floorBoundSize; CoordsXY floorBoundSize;
@ -2183,9 +2165,18 @@ static void MiniatureRailwayTrackDiagFlatTo25DegDown(
floorImage = floors[enumValue].image_id; floorImage = floors[enumValue].image_id;
floorBoundSize = floors[enumValue].bound_size; floorBoundSize = floors[enumValue].bound_size;
floorBoundOffset = floors[enumValue].bound_offset; floorBoundOffset = floors[enumValue].bound_offset;
hasSupports = WoodenSupportsPaintSetup( if (trackSequence == 3)
session, supportFunction, enumValue, 0, height + supportOffsets[direction][trackSequence], {
session.TrackColours[SCHEME_SUPPORTS]); hasSupports = WoodenASupportsPaintSetup(
session, enumValue, 0, height + supportOffsets[direction][trackSequence],
session.TrackColours[SCHEME_SUPPORTS]);
}
else
{
hasSupports = WoodenBSupportsPaintSetup(
session, WoodenSupportType::Truss, supportType.value(), height + supportOffsets[direction][trackSequence],
session.TrackColours[SCHEME_SUPPORTS]);
}
} }
if (direction == 1 && trackSequence == 3) if (direction == 1 && trackSequence == 3)