Merge pull request #21113 from spacek531/track/replace-track-paint-scheme-enum

Refactor track and supports colours in PaintSessionCore
This commit is contained in:
Michael Steenbeek 2023-12-26 14:13:48 +01:00 committed by GitHub
commit a4d11d82e8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
77 changed files with 26855 additions and 34500 deletions

View File

@ -197,7 +197,8 @@ struct PaintSessionCore
uint32_t ViewFlags;
uint32_t QuadrantBackIndex;
uint32_t QuadrantFrontIndex;
ImageId TrackColours[2];
ImageId TrackColours;
ImageId SupportColours;
SupportHeight SupportSegments[9];
SupportHeight Support;
uint16_t WaterHeight;

View File

@ -390,23 +390,23 @@ static void TrackPaintUtilDrawStationImpl(
{
if (hasGreenLight)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
imageId = session.SupportColours.WithIndex(
hasFence ? SPR_STATION_PLATFORM_FENCED_END_GREEN_LIGHT_SW_NE : SPR_STATION_PLATFORM_END_GREEN_LIGHT_SW_NE);
}
else
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
imageId = session.SupportColours.WithIndex(
hasFence ? SPR_STATION_PLATFORM_FENCED_END_RED_LIGHT_SW_NE : SPR_STATION_PLATFORM_END_RED_LIGHT_SW_NE);
}
}
else if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 2)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
imageId = session.SupportColours.WithIndex(
(hasFence ? SPR_STATION_PLATFORM_BEGIN_FENCED_SW_NE : SPR_STATION_PLATFORM_BEGIN_SW_NE));
}
else
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
imageId = session.SupportColours.WithIndex(
(hasFence ? SPR_STATION_PLATFORM_FENCED_SW_NE : SPR_STATION_PLATFORM_SW_NE));
}
PaintAddImageAsParent(session, imageId, { 0, 0, height + fenceOffsetA }, { 32, 8, 1 });
@ -417,16 +417,16 @@ static void TrackPaintUtilDrawStationImpl(
if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 0)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
imageId = session.SupportColours.WithIndex(
(hasGreenLight ? SPR_STATION_PLATFORM_END_GREEN_LIGHT_SW_NE : SPR_STATION_PLATFORM_END_RED_LIGHT_SW_NE));
}
else if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 2)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_PLATFORM_BEGIN_SW_NE);
imageId = session.SupportColours.WithIndex(SPR_STATION_PLATFORM_BEGIN_SW_NE);
}
else
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_PLATFORM_SW_NE);
imageId = session.SupportColours.WithIndex(SPR_STATION_PLATFORM_SW_NE);
}
PaintAddImageAsParent(session, imageId, { 0, 24, height + fenceOffsetA }, { 32, 8, 1 });
// height += 2 (height + 7)
@ -436,28 +436,28 @@ static void TrackPaintUtilDrawStationImpl(
{
if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 0)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_BEGIN_ANGLE_FENCE_SW_NE);
imageId = session.SupportColours.WithIndex(SPR_STATION_BEGIN_ANGLE_FENCE_SW_NE);
}
else if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 2)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_LIGHT_BACK_ANGLE_FENCED_NE_SW);
imageId = session.SupportColours.WithIndex(SPR_STATION_LIGHT_BACK_ANGLE_FENCED_NE_SW);
}
else
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_FENCE_SW_NE);
imageId = session.SupportColours.WithIndex(SPR_STATION_FENCE_SW_NE);
}
PaintAddImageAsParent(session, imageId, { 0, 31, height + fenceOffsetB }, { 32, 1, 7 });
}
else if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 0)
{
// Addition: draw only small fence if there is an entrance/exit at the beginning
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_FENCE_SMALL_NW_SE);
imageId = session.SupportColours.WithIndex(SPR_STATION_FENCE_SMALL_NW_SE);
PaintAddImageAsParent(session, imageId, { 31, 23, height + fenceOffsetB }, { 1, 8, 7 });
}
else if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 2)
{
// Addition: draw only small fence if there is an entrance/exit at the end
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_LIGHT_BACK_NE_SW);
imageId = session.SupportColours.WithIndex(SPR_STATION_LIGHT_BACK_NE_SW);
PaintAddImageAsParent(session, imageId, { 31, 23, height + fenceOffsetB }, { 1, 8, 7 });
}
// height -= 7 (height)
@ -467,12 +467,12 @@ static void TrackPaintUtilDrawStationImpl(
if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 0)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_FENCE_SMALL_NW_SE);
imageId = session.SupportColours.WithIndex(SPR_STATION_FENCE_SMALL_NW_SE);
PaintAddImageAsParent(session, imageId, { 31, 0, height + fenceOffsetB }, { 1, 8, 7 });
}
else if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 2)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_LIGHT_BACK_NE_SW);
imageId = session.SupportColours.WithIndex(SPR_STATION_LIGHT_BACK_NE_SW);
PaintAddImageAsParent(session, imageId, { 31, 0, height + fenceOffsetB }, { 1, 8, 7 });
}
}
@ -485,23 +485,23 @@ static void TrackPaintUtilDrawStationImpl(
{
if (hasGreenLight)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
imageId = session.SupportColours.WithIndex(
hasFence ? SPR_STATION_PLATFORM_FENCED_END_GREEN_LIGHT_NW_SE : SPR_STATION_PLATFORM_END_GREEN_LIGHT_NW_SE);
}
else
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
imageId = session.SupportColours.WithIndex(
hasFence ? SPR_STATION_PLATFORM_FENCED_END_RED_LIGHT_NW_SE : SPR_STATION_PLATFORM_END_RED_LIGHT_NW_SE);
}
}
else if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 1)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
imageId = session.SupportColours.WithIndex(
(hasFence ? SPR_STATION_PLATFORM_BEGIN_FENCED_NW_SE : SPR_STATION_PLATFORM_BEGIN_NW_SE));
}
else
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
imageId = session.SupportColours.WithIndex(
(hasFence ? SPR_STATION_PLATFORM_FENCED_NW_SE : SPR_STATION_PLATFORM_NW_SE));
}
PaintAddImageAsParent(session, imageId, { 0, 0, height + fenceOffsetA }, { 8, 32, 1 });
@ -512,16 +512,16 @@ static void TrackPaintUtilDrawStationImpl(
if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 3)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
imageId = session.SupportColours.WithIndex(
(hasGreenLight ? SPR_STATION_PLATFORM_END_GREEN_LIGHT_NW_SE : SPR_STATION_PLATFORM_END_RED_LIGHT_NW_SE));
}
else if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 1)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_PLATFORM_BEGIN_NW_SE);
imageId = session.SupportColours.WithIndex(SPR_STATION_PLATFORM_BEGIN_NW_SE);
}
else
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_PLATFORM_NW_SE);
imageId = session.SupportColours.WithIndex(SPR_STATION_PLATFORM_NW_SE);
}
PaintAddImageAsParent(session, imageId, { 24, 0, height + fenceOffsetA }, { 8, 32, 1 });
// height += 2 (height + 7)
@ -531,28 +531,28 @@ static void TrackPaintUtilDrawStationImpl(
{
if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 3)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_BEGIN_ANGLE_FENCE_NW_SE);
imageId = session.SupportColours.WithIndex(SPR_STATION_BEGIN_ANGLE_FENCE_NW_SE);
}
else if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 1)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_LIGHT_BACK_ANGLE_FENCED_NW_SE);
imageId = session.SupportColours.WithIndex(SPR_STATION_LIGHT_BACK_ANGLE_FENCED_NW_SE);
}
else
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_FENCE_NW_SE);
imageId = session.SupportColours.WithIndex(SPR_STATION_FENCE_NW_SE);
}
PaintAddImageAsParent(session, imageId, { 31, 0, height + fenceOffsetB }, { 1, 32, 7 });
}
else if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 3)
{
// Addition: draw only small fence if there is an entrance/exit at the beginning
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_FENCE_SMALL_SW_NE);
imageId = session.SupportColours.WithIndex(SPR_STATION_FENCE_SMALL_SW_NE);
PaintAddImageAsParent(session, imageId, { 23, 31, height + fenceOffsetB }, { 8, 1, 7 });
}
else if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 1)
{
// Addition: draw only small fence if there is an entrance/exit at the end
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_LIGHT_BACK_NW_SE);
imageId = session.SupportColours.WithIndex(SPR_STATION_LIGHT_BACK_NW_SE);
PaintAddImageAsParent(session, imageId, { 23, 31, height + fenceOffsetB }, { 8, 1, 7 });
}
@ -563,12 +563,12 @@ static void TrackPaintUtilDrawStationImpl(
if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 3)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_FENCE_SMALL_SW_NE);
imageId = session.SupportColours.WithIndex(SPR_STATION_FENCE_SMALL_SW_NE);
PaintAddImageAsParent(session, imageId, { 0, 31, height + fenceOffsetB }, { 8, 1, 7 });
}
else if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 1)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_LIGHT_BACK_NW_SE);
imageId = session.SupportColours.WithIndex(SPR_STATION_LIGHT_BACK_NW_SE);
PaintAddImageAsParent(session, imageId, { 0, 31, height + fenceOffsetB }, { 8, 1, 7 });
}
}
@ -598,23 +598,23 @@ void TrackPaintUtilDrawStationInverted(
{
if (hasGreenLight)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
imageId = session.SupportColours.WithIndex(
hasFence ? SPR_STATION_PLATFORM_FENCED_END_GREEN_LIGHT_SW_NE : SPR_STATION_PLATFORM_END_GREEN_LIGHT_SW_NE);
}
else
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
imageId = session.SupportColours.WithIndex(
hasFence ? SPR_STATION_PLATFORM_FENCED_END_RED_LIGHT_SW_NE : SPR_STATION_PLATFORM_END_RED_LIGHT_SW_NE);
}
}
else if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 2)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
imageId = session.SupportColours.WithIndex(
(hasFence ? SPR_STATION_PLATFORM_BEGIN_FENCED_SW_NE : SPR_STATION_PLATFORM_BEGIN_SW_NE));
}
else
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
imageId = session.SupportColours.WithIndex(
(hasFence ? SPR_STATION_PLATFORM_FENCED_SW_NE : SPR_STATION_PLATFORM_SW_NE));
}
PaintAddImageAsParent(session, imageId, { 0, 0, height + 6 }, { 32, 8, 1 });
@ -624,16 +624,16 @@ void TrackPaintUtilDrawStationInverted(
if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 0)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
imageId = session.SupportColours.WithIndex(
(hasGreenLight ? SPR_STATION_PLATFORM_END_GREEN_LIGHT_SW_NE : SPR_STATION_PLATFORM_END_RED_LIGHT_SW_NE));
}
else if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 2)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_PLATFORM_BEGIN_SW_NE);
imageId = session.SupportColours.WithIndex(SPR_STATION_PLATFORM_BEGIN_SW_NE);
}
else
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_PLATFORM_SW_NE);
imageId = session.SupportColours.WithIndex(SPR_STATION_PLATFORM_SW_NE);
}
PaintAddImageAsParent(session, imageId, { 0, 24, height + 6 }, { 32, 8, 1 });
// height += 2 (height + 7)
@ -643,28 +643,28 @@ void TrackPaintUtilDrawStationInverted(
{
if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 0)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_INVERTED_BEGIN_ANGLE_FENCE_SW_NE);
imageId = session.SupportColours.WithIndex(SPR_STATION_INVERTED_BEGIN_ANGLE_FENCE_SW_NE);
}
else if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 2)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_INVERTED_LIGHT_BACK_ANGLE_FENCED_NE_SW);
imageId = session.SupportColours.WithIndex(SPR_STATION_INVERTED_LIGHT_BACK_ANGLE_FENCED_NE_SW);
}
else
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_INVERTED_FENCE_SW_NE);
imageId = session.SupportColours.WithIndex(SPR_STATION_INVERTED_FENCE_SW_NE);
}
PaintAddImageAsParent(session, imageId, { 0, 31, height + 8 }, { 32, 1, 7 });
}
else if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 0)
{
// Addition: draw only small fence if there is an entrance/exit at the beginning
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_FENCE_SMALL_NW_SE);
imageId = session.SupportColours.WithIndex(SPR_STATION_FENCE_SMALL_NW_SE);
PaintAddImageAsParent(session, imageId, { 31, 23, height + 8 }, { 1, 8, 7 });
}
else if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 2)
{
// Addition: draw only small fence if there is an entrance/exit at the end
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_LIGHT_BACK_NE_SW);
imageId = session.SupportColours.WithIndex(SPR_STATION_LIGHT_BACK_NE_SW);
PaintAddImageAsParent(session, imageId, { 31, 23, height + 8 }, { 1, 8, 7 });
}
// height -= 7 (height)
@ -673,12 +673,12 @@ void TrackPaintUtilDrawStationInverted(
if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 0)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_FENCE_SMALL_NW_SE);
imageId = session.SupportColours.WithIndex(SPR_STATION_FENCE_SMALL_NW_SE);
PaintAddImageAsParent(session, imageId, { 31, 0, height + 8 }, { 1, 8, 7 });
}
else if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 2)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_LIGHT_BACK_NE_SW);
imageId = session.SupportColours.WithIndex(SPR_STATION_LIGHT_BACK_NE_SW);
PaintAddImageAsParent(session, imageId, { 31, 0, height + 8 }, { 1, 8, 7 });
}
}
@ -691,23 +691,23 @@ void TrackPaintUtilDrawStationInverted(
{
if (hasGreenLight)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
imageId = session.SupportColours.WithIndex(
hasFence ? SPR_STATION_PLATFORM_FENCED_END_GREEN_LIGHT_NW_SE : SPR_STATION_PLATFORM_END_GREEN_LIGHT_NW_SE);
}
else
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
imageId = session.SupportColours.WithIndex(
hasFence ? SPR_STATION_PLATFORM_FENCED_END_RED_LIGHT_NW_SE : SPR_STATION_PLATFORM_END_RED_LIGHT_NW_SE);
}
}
else if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 1)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
imageId = session.SupportColours.WithIndex(
(hasFence ? SPR_STATION_PLATFORM_BEGIN_FENCED_NW_SE : SPR_STATION_PLATFORM_BEGIN_NW_SE));
}
else
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
imageId = session.SupportColours.WithIndex(
(hasFence ? SPR_STATION_PLATFORM_FENCED_NW_SE : SPR_STATION_PLATFORM_NW_SE));
}
PaintAddImageAsParent(session, imageId, { 0, 0, height + 6 }, { 8, 32, 1 });
@ -717,16 +717,16 @@ void TrackPaintUtilDrawStationInverted(
if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 3)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
imageId = session.SupportColours.WithIndex(
(hasGreenLight ? SPR_STATION_PLATFORM_END_GREEN_LIGHT_NW_SE : SPR_STATION_PLATFORM_END_RED_LIGHT_NW_SE));
}
else if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 1)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_PLATFORM_BEGIN_NW_SE);
imageId = session.SupportColours.WithIndex(SPR_STATION_PLATFORM_BEGIN_NW_SE);
}
else
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_PLATFORM_NW_SE);
imageId = session.SupportColours.WithIndex(SPR_STATION_PLATFORM_NW_SE);
}
PaintAddImageAsParent(session, imageId, { 24, 0, height + 6 }, { 8, 32, 1 });
// height += 2 (height + 7)
@ -736,28 +736,28 @@ void TrackPaintUtilDrawStationInverted(
{
if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 3)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_INVERTED_BEGIN_ANGLE_FENCE_NW_SE);
imageId = session.SupportColours.WithIndex(SPR_STATION_INVERTED_BEGIN_ANGLE_FENCE_NW_SE);
}
else if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 1)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_INVERTED_LIGHT_BACK_ANGLE_FENCED_NW_SE);
imageId = session.SupportColours.WithIndex(SPR_STATION_INVERTED_LIGHT_BACK_ANGLE_FENCED_NW_SE);
}
else
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_INVERTED_FENCE_NW_SE);
imageId = session.SupportColours.WithIndex(SPR_STATION_INVERTED_FENCE_NW_SE);
}
PaintAddImageAsParent(session, imageId, { 31, 0, height + 8 }, { 1, 32, 7 });
}
else if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 3)
{
// Addition: draw only small fence if there is an entrance/exit at the beginning
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_FENCE_SMALL_SW_NE);
imageId = session.SupportColours.WithIndex(SPR_STATION_FENCE_SMALL_SW_NE);
PaintAddImageAsParent(session, imageId, { 23, 31, height + 8 }, { 8, 1, 7 });
}
else if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 1)
{
// Addition: draw only small fence if there is an entrance/exit at the end
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_LIGHT_BACK_NW_SE);
imageId = session.SupportColours.WithIndex(SPR_STATION_LIGHT_BACK_NW_SE);
PaintAddImageAsParent(session, imageId, { 23, 31, height + 8 }, { 8, 1, 7 });
}
@ -767,12 +767,12 @@ void TrackPaintUtilDrawStationInverted(
if (trackElement.GetTrackType() == TrackElemType::BeginStation && direction == 3)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_FENCE_SMALL_SW_NE);
imageId = session.SupportColours.WithIndex(SPR_STATION_FENCE_SMALL_SW_NE);
PaintAddImageAsParent(session, imageId, { 0, 31, height + 8 }, { 8, 1, 7 });
}
else if (trackElement.GetTrackType() == TrackElemType::EndStation && direction == 1)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_LIGHT_BACK_NW_SE);
imageId = session.SupportColours.WithIndex(SPR_STATION_LIGHT_BACK_NW_SE);
PaintAddImageAsParent(session, imageId, { 0, 31, height + 8 }, { 8, 1, 7 });
}
}
@ -836,7 +836,7 @@ bool TrackPaintUtilDrawStationCovers2(
imageOffset += SPR_STATION_COVER_OFFSET_TALL;
}
auto imageTemplate = session.TrackColours[SCHEME_TRACK];
auto imageTemplate = session.TrackColours;
auto imageId = imageTemplate.WithIndex(baseImageIndex + imageOffset);
PaintAddImageAsParent(session, imageId, offset, boundBox);
@ -861,18 +861,18 @@ void TrackPaintUtilDrawNarrowStationPlatform(
if (direction & 1)
{
bool hasFence = TrackPaintUtilHasFence(EDGE_NE, position, trackElement, ride, session.CurrentRotation);
ImageId imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
ImageId imageId = session.SupportColours.WithIndex(
(hasFence ? SPR_STATION_NARROW_EDGE_FENCED_NE : SPR_STATION_NARROW_EDGE_NE));
PaintAddImageAsParent(session, imageId, { 0, 0, height + zOffset }, { 8, 32, 1 });
TrackPaintUtilDrawStationCovers(session, EDGE_NE, hasFence, stationObj, height, colour);
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_NARROW_EDGE_SW);
imageId = session.SupportColours.WithIndex(SPR_STATION_NARROW_EDGE_SW);
PaintAddImageAsParent(session, imageId, { 24, 0, height + zOffset }, { 8, 32, 1 });
hasFence = TrackPaintUtilHasFence(EDGE_SW, position, trackElement, ride, session.CurrentRotation);
if (hasFence)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_FENCE_NW_SE);
imageId = session.SupportColours.WithIndex(SPR_STATION_FENCE_NW_SE);
PaintAddImageAsParent(session, imageId, { 31, 0, height + zOffset + 2 }, { 1, 32, 7 });
}
TrackPaintUtilDrawStationCovers(session, EDGE_SW, hasFence, stationObj, height, colour);
@ -880,18 +880,18 @@ void TrackPaintUtilDrawNarrowStationPlatform(
else
{
bool hasFence = TrackPaintUtilHasFence(EDGE_NW, position, trackElement, ride, session.CurrentRotation);
ImageId imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
ImageId imageId = session.SupportColours.WithIndex(
(hasFence ? SPR_STATION_NARROW_EDGE_FENCED_NW : SPR_STATION_NARROW_EDGE_NW));
PaintAddImageAsParent(session, imageId, { 0, 0, height + zOffset }, { 32, 8, 1 });
TrackPaintUtilDrawStationCovers(session, EDGE_NW, hasFence, stationObj, height, colour);
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_NARROW_EDGE_SE);
imageId = session.SupportColours.WithIndex(SPR_STATION_NARROW_EDGE_SE);
PaintAddImageAsParent(session, imageId, { 0, 24, height + zOffset }, { 32, 8, 1 });
hasFence = TrackPaintUtilHasFence(EDGE_SE, position, trackElement, ride, session.CurrentRotation);
if (hasFence)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_FENCE_SW_NE);
imageId = session.SupportColours.WithIndex(SPR_STATION_FENCE_SW_NE);
PaintAddImageAsParent(session, imageId, { 0, 31, height + zOffset + 2 }, { 32, 1, 7 });
}
TrackPaintUtilDrawStationCovers(session, EDGE_SE, hasFence, stationObj, height, colour);
@ -911,18 +911,17 @@ void TrackPaintUtilDrawPier(
if (direction & 1)
{
hasFence = TrackPaintUtilHasFence(EDGE_NE, position, trackElement, ride, session.CurrentRotation);
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
(hasFence ? SPR_STATION_PIER_EDGE_NE_FENCED : SPR_STATION_PIER_EDGE_NE));
imageId = session.SupportColours.WithIndex((hasFence ? SPR_STATION_PIER_EDGE_NE_FENCED : SPR_STATION_PIER_EDGE_NE));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 2, 0, height }, { 6, 32, 1 } });
TrackPaintUtilDrawStationCovers(session, EDGE_NE, hasFence, stationObj, height, colour);
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_PIER_EDGE_SW);
imageId = session.SupportColours.WithIndex(SPR_STATION_PIER_EDGE_SW);
PaintAddImageAsParent(session, imageId, { 24, 0, height }, { 8, 32, 1 });
hasFence = TrackPaintUtilHasFence(EDGE_SW, position, trackElement, ride, session.CurrentRotation);
if (hasFence)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_PIER_FENCE_SW);
imageId = session.SupportColours.WithIndex(SPR_STATION_PIER_FENCE_SW);
PaintAddImageAsParent(session, imageId, { 31, 0, height + 2 }, { 1, 32, 7 });
}
TrackPaintUtilDrawStationCovers(session, EDGE_SW, hasFence, stationObj, height, colour);
@ -930,18 +929,17 @@ void TrackPaintUtilDrawPier(
else
{
hasFence = TrackPaintUtilHasFence(EDGE_NW, position, trackElement, ride, rotation);
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
(hasFence ? SPR_STATION_PIER_EDGE_NW_FENCED : SPR_STATION_PIER_EDGE_NW));
imageId = session.SupportColours.WithIndex((hasFence ? SPR_STATION_PIER_EDGE_NW_FENCED : SPR_STATION_PIER_EDGE_NW));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 6, 1 } });
TrackPaintUtilDrawStationCovers(session, EDGE_NW, hasFence, stationObj, height, colour);
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_PIER_EDGE_SE);
imageId = session.SupportColours.WithIndex(SPR_STATION_PIER_EDGE_SE);
PaintAddImageAsParent(session, imageId, { 0, 24, height }, { 32, 8, 1 });
hasFence = TrackPaintUtilHasFence(EDGE_SE, position, trackElement, ride, rotation);
if (hasFence)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_PIER_FENCE_SE);
imageId = session.SupportColours.WithIndex(SPR_STATION_PIER_FENCE_SE);
PaintAddImageAsParent(session, imageId, { 0, 31, height + 2 }, { 32, 1, 7 });
}
TrackPaintUtilDrawStationCovers(session, EDGE_SE, hasFence, stationObj, height, colour);
@ -1536,8 +1534,7 @@ void TrackPaintUtilRightQuarterTurn5TilesWoodenSupports(
std::nullopt, WoodenSupportSubType::Corner1, WoodenSupportSubType::NeSw },
};
auto supportType = supportTypes[direction][trackSequence].value();
WoodenASupportsPaintSetup(
session, WoodenSupportType::Truss, supportType, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, WoodenSupportType::Truss, supportType, height, session.SupportColours);
}
}
@ -2024,9 +2021,9 @@ void TrackPaintUtilLeftQuarterTurn1TileTunnel(
void TrackPaintUtilSpinningTunnelPaint(PaintSession& session, int8_t thickness, int16_t height, Direction direction)
{
int32_t frame = gCurrentTicks >> 2 & 3;
auto colourFlags = session.TrackColours[SCHEME_SUPPORTS];
auto colourFlags = session.SupportColours;
auto colourFlags2 = session.TrackColours[SCHEME_TRACK];
auto colourFlags2 = session.TrackColours;
if (colourFlags2.HasSecondary())
{
colourFlags = colourFlags.WithSecondary(colourFlags2.GetSecondary());
@ -2057,7 +2054,7 @@ void TrackPaintUtilOnridePhotoPlatformPaint(
PaintSession& session, Direction direction, int32_t height, MetalSupportType supportType)
{
PaintAddImageAsParent(session, ImageId(SPR_STATION_BASE_D, COLOUR_BLACK), { 0, 0, height }, { 32, 32, 1 });
DrawSupportsSideBySide(session, direction, height, session.TrackColours[SCHEME_SUPPORTS], supportType);
DrawSupportsSideBySide(session, direction, height, session.SupportColours, supportType);
}
void TrackPaintUtilOnridePhotoSmallPaint(
@ -2170,8 +2167,7 @@ void TrackPaintUtilLeftCorkscrewUpSupports(PaintSession& session, Direction dire
session, PaintUtilRotateSegments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF,
0);
}
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
MetalASupportsPaintSetup(session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.SupportColours);
if (direction != 2)
{
PaintUtilSetSegmentSupportHeight(
@ -2258,19 +2254,20 @@ void PaintTrack(PaintSession& session, Direction direction, int32_t height, cons
}
session.InteractionType = ViewportInteractionItem::Ride;
session.TrackColours[SCHEME_TRACK] = ImageId(
session.TrackColours = ImageId(
0, ride->track_colour[trackColourScheme].main, ride->track_colour[trackColourScheme].additional);
session.TrackColours[SCHEME_SUPPORTS] = ImageId(0, ride->track_colour[trackColourScheme].supports);
session.SupportColours = ImageId(
0, ride->track_colour[trackColourScheme].supports, ride->track_colour[trackColourScheme].additional);
if (trackElement.IsHighlighted() || session.SelectedElement == reinterpret_cast<const TileElement*>(&trackElement))
{
session.TrackColours[SCHEME_TRACK] = HighlightMarker;
session.TrackColours[SCHEME_SUPPORTS] = HighlightMarker;
session.TrackColours = HighlightMarker;
session.SupportColours = HighlightMarker;
}
if (trackElement.IsGhost())
{
session.InteractionType = ViewportInteractionItem::None;
session.TrackColours[SCHEME_TRACK] = ConstructionMarker;
session.TrackColours[SCHEME_SUPPORTS] = ConstructionMarker;
session.TrackColours = ConstructionMarker;
session.SupportColours = ConstructionMarker;
}
if (ride->type >= RIDE_TYPE_COUNT)

View File

@ -208,12 +208,6 @@ enum
SPR_GHOST_TRAIN_SPINNING_TUNNEL_FRONT_NW_SE_FRAME_3 = 28880,
};
enum
{
SCHEME_TRACK,
SCHEME_SUPPORTS
};
enum
{
STATION_VARIANT_BASIC,

View File

@ -164,17 +164,6 @@ enum
SPR_AIR_POWERED_VERTICAL_RC_BANKED_QUARTER_TURN_5_FRONT_SE_NE_PART_0 = 22333,
};
static ImageId AirPoweredVerticalRCGetSupportColour(PaintSession& session)
{
auto colourFlags = session.TrackColours[SCHEME_SUPPORTS];
auto trackColour = session.TrackColours[SCHEME_TRACK];
if (trackColour.HasSecondary())
{
colourFlags = colourFlags.WithSecondary(trackColour.GetSecondary());
}
return colourFlags;
}
/** rct2: 0x008AFAD4 */
static void AirPoweredVerticalRCTrackFlat(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
@ -187,10 +176,10 @@ static void AirPoweredVerticalRCTrackFlat(
SPR_AIR_POWERED_VERTICAL_RC_FLAT_NW_SE,
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 1 } });
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.SupportColours);
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_SQUARE_FLAT);
@ -213,10 +202,10 @@ static void AirPoweredVerticalRCTrackStation(
session, direction, GetStationColourScheme(session, trackElement).WithIndex(imageIds[direction][1]),
{ 0, 0, height - 2 }, { { 0, 2, height }, { 32, 28, 1 } });
PaintAddImageAsChildRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]), { 0, 0, height },
session, direction, session.TrackColours.WithIndex(imageIds[direction][0]), { 0, 0, height },
{ { 0, 6, height }, { 32, 20, 1 } });
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.SupportColours);
TrackPaintUtilDrawNarrowStationPlatform(session, ride, direction, height, 5, trackElement);
@ -261,8 +250,7 @@ static void AirPoweredVerticalRCTrackRightQuarterTurn5(
},
};
TrackPaintUtilRightQuarterTurn5TilesPaint3(
session, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], imageIds);
TrackPaintUtilRightQuarterTurn5TilesPaint3(session, height, direction, trackSequence, session.TrackColours, imageIds);
TrackPaintUtilRightQuarterTurn5TilesWoodenSupports(session, height, direction, trackSequence);
TrackPaintUtilRightQuarterTurn5TilesTunnel(session, height, direction, trackSequence, TUNNEL_SQUARE_FLAT);
@ -327,16 +315,16 @@ static void AirPoweredVerticalRCTrackFlatToLeftBank(
{ SPR_AIR_POWERED_VERTICAL_RC_FLAT_TO_LEFT_BANK_SE_NW, SPR_AIR_POWERED_VERTICAL_RC_FLAT_TO_LEFT_BANK_FRONT_SE_NW },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
if (direction == 0 || direction == 1)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
imageId = session.TrackColours.WithIndex(imageIds[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 26 } });
}
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.SupportColours);
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_SQUARE_FLAT);
@ -356,16 +344,16 @@ static void AirPoweredVerticalRCTrackFlatToRightBank(
{ SPR_AIR_POWERED_VERTICAL_RC_FLAT_TO_RIGHT_BANK_SE_NW, SPR_AIR_POWERED_VERTICAL_RC_FLAT_TO_LEFT_BANK_FRONT_SE_NW },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
if (direction == 2 || direction == 3)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
imageId = session.TrackColours.WithIndex(imageIds[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 26 } });
}
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.SupportColours);
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_SQUARE_FLAT);
@ -423,19 +411,16 @@ static void AirPoweredVerticalRCTrackBankedRightQuarterTurn5(
},
};
TrackPaintUtilRightQuarterTurn5TilesPaint2(
session, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], imageIds);
TrackPaintUtilRightQuarterTurn5TilesPaint2(session, height, direction, trackSequence, session.TrackColours, imageIds);
if (direction == 1 && trackSequence == 6)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
SPR_AIR_POWERED_VERTICAL_RC_BANKED_QUARTER_TURN_5_FRONT_NW_SW_PART_4);
auto imageId = session.TrackColours.WithIndex(SPR_AIR_POWERED_VERTICAL_RC_BANKED_QUARTER_TURN_5_FRONT_NW_SW_PART_4);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 26 } });
}
else if (direction == 3 && trackSequence == 0)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
SPR_AIR_POWERED_VERTICAL_RC_BANKED_QUARTER_TURN_5_FRONT_SE_NE_PART_0);
auto imageId = session.TrackColours.WithIndex(SPR_AIR_POWERED_VERTICAL_RC_BANKED_QUARTER_TURN_5_FRONT_SE_NE_PART_0);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 27, 0, height }, { 1, 32, 26 } });
}
@ -503,7 +488,7 @@ static void AirPoweredVerticalRCTrackLeftBank(
SPR_AIR_POWERED_VERTICAL_RC_LEFT_BANK_SE_NW,
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction]);
if (direction == 0 || direction == 1)
{
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 26 } });
@ -513,7 +498,7 @@ static void AirPoweredVerticalRCTrackLeftBank(
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
}
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.SupportColours);
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_SQUARE_FLAT);
@ -539,10 +524,10 @@ static void AirPoweredVerticalRCTrackBrakes(
SPR_AIR_POWERED_VERTICAL_RC_BRAKES_SW_NE,
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 1 } });
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.SupportColours);
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_SQUARE_FLAT);
@ -649,8 +634,8 @@ static void AirPoweredVerticalRCTrackVerticalSlopeUp(
48, 64, 128, 176, 208, 240, 240,
};
auto supportsImageId = AirPoweredVerticalRCGetSupportColour(session).WithIndex(supportImageIds[trackSequence][direction]);
auto trackImageId = session.TrackColours[SCHEME_TRACK].WithIndex(trackImageIds[trackSequence][direction]);
auto supportsImageId = session.SupportColours.WithIndex(supportImageIds[trackSequence][direction]);
auto trackImageId = session.TrackColours.WithIndex(trackImageIds[trackSequence][direction]);
int8_t bbHeight;
bool isDirection03 = (direction == 0 || direction == 3);
switch (trackSequence)
@ -662,7 +647,7 @@ static void AirPoweredVerticalRCTrackVerticalSlopeUp(
PaintAddImageAsChildRotated(
session, direction, trackImageId, { 0, 0, height }, { { 0, 6, height }, { 20, 32, bbHeight } });
WoodenASupportsPaintSetup(session, 0, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, 0, 0, height, session.SupportColours);
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_SQUARE_FLAT);
@ -690,7 +675,7 @@ static void AirPoweredVerticalRCTrackVerticalSlopeUp(
session, direction, trackImageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, bbHeight } });
}
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.SupportColours);
if (trackSequence == 0)
{
@ -718,21 +703,21 @@ static void AirPoweredVerticalRCTrackVerticalSlopeUp(
session, direction, supportsImageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, bbHeight } });
}
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + supportHeights[trackSequence], 0x20);
break;
case 5:
if (WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]))
if (WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.SupportColours))
{
ImageId floorImageId;
if (direction & 1)
{
floorImageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_FLOOR_PLANKS_90_DEG);
floorImageId = session.SupportColours.WithIndex(SPR_FLOOR_PLANKS_90_DEG);
}
else
{
floorImageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_FLOOR_PLANKS);
floorImageId = session.SupportColours.WithIndex(SPR_FLOOR_PLANKS);
}
PaintAddImageAsParent(session, floorImageId, { 0, 0, height }, { { 3, 3, height }, { 26, 26, 126 } });
PaintAddImageAsChildRotated(
@ -761,7 +746,7 @@ static void AirPoweredVerticalRCTrackVerticalSlopeUp(
PaintAddImageAsChildRotated(
session, direction, supportsImageId, { 0, 0, height }, { { 27, 6, height }, { 1, 20, 126 } });
}
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.SupportColours);
PaintUtilSetVerticalTunnel(session, height + 240);
@ -786,11 +771,11 @@ static void AirPoweredVerticalRCTrackVerticalUp(
switch (trackSequence)
{
case 0:
imageId = AirPoweredVerticalRCGetSupportColour(session).WithIndex(imageIds[direction][0]);
imageId = session.SupportColours.WithIndex(imageIds[direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 3, 3, height }, { 26, 26, 79 } });
break;
case 1:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
imageId = session.TrackColours.WithIndex(imageIds[direction][1]);
if (direction == 0 || direction == 3)
{
PaintAddImageAsParentRotated(
@ -843,8 +828,8 @@ static void AirPoweredVerticalRCTrackVerticalTop(
switch (trackSequence)
{
case 0:
imageIdS = AirPoweredVerticalRCGetSupportColour(session).WithIndex(imageIds[direction][0]);
imageIdT = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
imageIdS = session.SupportColours.WithIndex(imageIds[direction][0]);
imageIdT = session.TrackColours.WithIndex(imageIds[direction][1]);
if (direction == 0)
{
PaintAddImageAsParentRotated(
@ -861,7 +846,7 @@ static void AirPoweredVerticalRCTrackVerticalTop(
}
break;
case 1:
imageIdT = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][2]);
imageIdT = session.TrackColours.WithIndex(imageIds[direction][2]);
if (direction == 0)
{
PaintAddImageAsParentRotated(
@ -875,7 +860,7 @@ static void AirPoweredVerticalRCTrackVerticalTop(
PaintUtilSetVerticalTunnel(session, height + 80);
break;
case 2:
imageIdT = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][3]);
imageIdT = session.TrackColours.WithIndex(imageIds[direction][3]);
if (direction == 0)
{
PaintAddImageAsParentRotated(
@ -889,8 +874,8 @@ static void AirPoweredVerticalRCTrackVerticalTop(
PaintUtilSetVerticalTunnel(session, height + 80);
break;
case 3:
imageIdS = AirPoweredVerticalRCGetSupportColour(session).WithIndex(imageIds[direction][4]);
imageIdT = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][5]);
imageIdS = session.SupportColours.WithIndex(imageIds[direction][4]);
imageIdT = session.TrackColours.WithIndex(imageIds[direction][5]);
if (direction == 0)
{
PaintAddImageAsParentRotated(
@ -932,7 +917,7 @@ static void AirPoweredVerticalRCTrackBooster(
{
// The booster piece is borrowed from the Reverse Freefall Colour.
// It has two track colours, instead of the one that the APVC has.
auto colour = session.TrackColours[SCHEME_TRACK];
auto colour = session.TrackColours;
if (!trackElement.IsGhost() && !trackElement.IsHighlighted())
{
colour = colour.WithSecondary(colour.GetPrimary());
@ -951,7 +936,7 @@ static void AirPoweredVerticalRCTrackBooster(
PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_FLAT);
}
WoodenASupportsPaintSetup(session, (direction & 1) ? 1 : 0, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, (direction & 1) ? 1 : 0, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
}
@ -967,10 +952,10 @@ static void AirPoweredVerticalRCTrackOnridePhoto(
SPR_AIR_POWERED_VERTICAL_RC_FLAT_NW_SE,
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 1 } });
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.SupportColours);
TrackPaintUtilOnridePhotoPaint(session, direction, height + 3, trackElement);
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_SQUARE_FLAT);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -252,7 +252,7 @@ static void ClassicWoodenRCTrackFlatToLeftBank(
};
WoodenRCTrackPaintBb<true>(session, &imageIds[direction][trackSequence][0], height);
WoodenRCTrackPaintBb<true>(session, &imageIds[direction][trackSequence][1], height);
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.SupportColours);
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_SQUARE_FLAT);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
@ -285,7 +285,7 @@ static void ClassicWoodenRCTrackFlatToRightBank(
};
WoodenRCTrackPaintBb<true>(session, &imageIds[direction][trackSequence][0], height);
WoodenRCTrackPaintBb<true>(session, &imageIds[direction][trackSequence][1], height);
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.SupportColours);
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_SQUARE_FLAT);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
@ -331,7 +331,7 @@ static void ClassicWoodenRCTrackLeftBank(
}
};
WoodenRCTrackPaintBb<true>(session, &imageIds[direction][trackSequence][0], height);
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.SupportColours);
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_SQUARE_FLAT);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
@ -371,7 +371,7 @@ static void ClassicWoodenRCTrackLeftBankTo25DegUp(
};
WoodenRCTrackPaintBb<true>(session, &imageIds[direction][trackSequence][0], height);
WoodenRCTrackPaintBb<true>(session, &imageIds[direction][trackSequence][1], height);
WoodenASupportsPaintSetup(session, direction & 1, 1 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 1 + direction, height, session.SupportColours);
if (direction == 0 || direction == 3)
{
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_SQUARE_FLAT);
@ -412,7 +412,7 @@ static void ClassicWoodenRCTrackRightBankTo25DegUp(
WoodenRCTrackPaintBb<true>(session, &imageIds[direction][trackSequence][0], height);
WoodenRCTrackPaintBb<true>(session, &imageIds[direction][trackSequence][1], height);
WoodenASupportsPaintSetup(session, direction & 1, 1 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 1 + direction, height, session.SupportColours);
if (direction == 0 || direction == 3)
{
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_SQUARE_FLAT);
@ -453,7 +453,7 @@ static void ClassicWoodenRCTrack25DegUpToLeftBank(
WoodenRCTrackPaintBb<true>(session, &imageIds[direction][trackSequence][0], height);
WoodenRCTrackPaintBb<true>(session, &imageIds[direction][trackSequence][1], height);
WoodenASupportsPaintSetup(session, direction & 1, 5 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 5 + direction, height, session.SupportColours);
if (direction == 0 || direction == 3)
{
PaintUtilPushTunnelRotated(session, direction, height - 8, TUNNEL_SQUARE_FLAT);
@ -494,7 +494,7 @@ static void ClassicWoodenRCTrack25DegUpToRightBank(
WoodenRCTrackPaintBb<true>(session, &imageIds[direction][trackSequence][0], height);
WoodenRCTrackPaintBb<true>(session, &imageIds[direction][trackSequence][1], height);
WoodenASupportsPaintSetup(session, direction & 1, 5 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 5 + direction, height, session.SupportColours);
if (direction == 0 || direction == 3)
{
PaintUtilPushTunnelRotated(session, direction, height - 8, TUNNEL_SQUARE_FLAT);
@ -774,8 +774,7 @@ static void ClassicWoodenRCTrackBankedRightQuarterTurn5(
if (supportType[direction][trackSequence] != -1)
{
WoodenASupportsPaintSetup(
session, supportType[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, supportType[direction][trackSequence], 0, height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(session, PaintUtilRotateSegments(blockedSegments[trackSequence], direction), 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
@ -942,8 +941,7 @@ static void ClassicWoodenRCTrackRightQuarterTurn3Bank(
if (supportType[direction][trackSequence] != -1)
{
WoodenASupportsPaintSetup(
session, supportType[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, supportType[direction][trackSequence], 0, height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(session, PaintUtilRotateSegments(blockedSegments[trackSequence], direction), 0xFFFF, 0);
@ -1147,8 +1145,7 @@ static void ClassicWoodenRCTrackLeftEighthBankToDiag(
if (supportType[direction][trackSequence] != -1)
{
WoodenASupportsPaintSetup(
session, supportType[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, supportType[direction][trackSequence], 0, height, session.SupportColours);
}
WoodenRCTrackPaintBb<true>(session, &imageIds[direction][trackSequence][0], height);
WoodenRCTrackPaintBb<true>(session, &imageIds[direction][trackSequence][1], height);
@ -1346,8 +1343,7 @@ static void ClassicWoodenRCTrackRightEighthBankToDiag(
if (supportType[direction][trackSequence] != -1)
{
WoodenASupportsPaintSetup(
session, supportType[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, supportType[direction][trackSequence], 0, height, session.SupportColours);
}
WoodenRCTrackPaintBb<true>(session, &imageIds[direction][trackSequence][0], height);
WoodenRCTrackPaintBb<true>(session, &imageIds[direction][trackSequence][1], height);
@ -1478,8 +1474,7 @@ static void ClassicWoodenRCTrackDiagFlatToLeftBank(
if (supportType[direction][trackSequence] != -1)
{
WoodenASupportsPaintSetup(
session, supportType[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, supportType[direction][trackSequence], 0, height, session.SupportColours);
}
WoodenRCTrackPaintBb<true>(session, &imageIds[direction][trackSequence][0], height);
@ -1594,8 +1589,7 @@ static void ClassicWoodenRCTrackDiagFlatToRightBank(
if (supportType[direction][trackSequence] != -1)
{
WoodenASupportsPaintSetup(
session, supportType[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, supportType[direction][trackSequence], 0, height, session.SupportColours);
}
WoodenRCTrackPaintBb<true>(session, &imageIds[direction][trackSequence][0], height);
@ -1712,8 +1706,7 @@ static void ClassicWoodenRCTrackDiagLeftBank(
if (supportType[direction][trackSequence] != -1)
{
WoodenASupportsPaintSetup(
session, supportType[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, supportType[direction][trackSequence], 0, height, session.SupportColours);
}
WoodenRCTrackPaintBb<true>(session, &imageIds[direction][trackSequence][0], height);
@ -1835,8 +1828,7 @@ static void ClassicWoodenRCTrackDiagLeftBankTo25DegUp(
if (supportType[direction][trackSequence] != -1)
{
WoodenASupportsPaintSetup(
session, supportType[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, supportType[direction][trackSequence], 0, height, session.SupportColours);
}
WoodenRCTrackPaintBb<true>(session, &imageIds[direction][trackSequence][0], height);
@ -1951,8 +1943,7 @@ static void ClassicWoodenRCTrackDiagRightBankTo25DegUp(
if (supportType[direction][trackSequence] != -1)
{
WoodenASupportsPaintSetup(
session, supportType[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, supportType[direction][trackSequence], 0, height, session.SupportColours);
}
WoodenRCTrackPaintBb<true>(session, &imageIds[direction][trackSequence][0], height);
@ -2067,8 +2058,7 @@ static void ClassicWoodenRCTrackDiag25DegUpToLeftBank(
if (supportType[direction][trackSequence] != -1)
{
WoodenASupportsPaintSetup(
session, supportType[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, supportType[direction][trackSequence], 0, height, session.SupportColours);
}
WoodenRCTrackPaintBb<true>(session, &imageIds[direction][trackSequence][0], height);
@ -2183,8 +2173,7 @@ static void ClassicWoodenRCTrackDiag25DegUpToRightBank(
if (supportType[direction][trackSequence] != -1)
{
WoodenASupportsPaintSetup(
session, supportType[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, supportType[direction][trackSequence], 0, height, session.SupportColours);
}
WoodenRCTrackPaintBb<true>(session, &imageIds[direction][trackSequence][0], height);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -29,22 +29,22 @@ static void InvertedHairpinRCTrackFlat(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17030), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17030), { 0, 0, height + 24 },
{ { 0, 6, height + 22 }, { 32, 20, 1 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17031), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17031), { 0, 0, height + 24 },
{ { 0, 6, height + 22 }, { 32, 20, 1 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17032), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17032), { 0, 0, height + 24 },
{ { 0, 6, height + 22 }, { 32, 20, 1 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17033), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17033), { 0, 0, height + 24 },
{ { 0, 6, height + 22 }, { 32, 20, 1 } });
break;
}
@ -56,13 +56,13 @@ static void InvertedHairpinRCTrackFlat(
case 0:
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17026), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17026), { 0, 0, height + 24 },
{ { 0, 6, height + 22 }, { 32, 20, 1 } });
break;
case 1:
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17027), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17027), { 0, 0, height + 24 },
{ { 0, 6, height + 22 }, { 32, 20, 1 } });
break;
}
@ -73,8 +73,7 @@ static void InvertedHairpinRCTrackFlat(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::Centre, 0, height + 30,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::TubesInverted, MetalSupportPlace::Centre, 0, height + 30, session.SupportColours);
}
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);
@ -97,12 +96,12 @@ static void InvertedHairpinRCTrackStation(
session, direction, GetStationColourScheme(session, trackElement).WithIndex(imageIds[direction][0]), { 0, 0, height },
{ { 0, 2, height }, { 32, 28, 1 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(imageIds[direction][1]), { 0, 0, height + 24 },
{ { 0, 6, height + 24 }, { 32, 20, 3 } });
PaintAddImageAsChildRotated(
session, direction, session.TrackColours[SCHEME_SUPPORTS].WithIndex(imageIds[direction][2]), { 0, 6, height + 24 },
session, direction, session.SupportColours.WithIndex(imageIds[direction][2]), { 0, 6, height + 24 },
{ { 0, 6, height + 24 }, { 32, 20, 1 } });
DrawSupportsSideBySide(session, direction, height, session.TrackColours[SCHEME_SUPPORTS], MetalSupportType::TubesInverted);
DrawSupportsSideBySide(session, direction, height, session.SupportColours, MetalSupportType::TubesInverted);
TrackPaintUtilDrawStationInverted(session, ride, direction, height, trackElement, STATION_VARIANT_1);
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_SQUARE_FLAT);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
@ -120,22 +119,22 @@ static void InvertedHairpinRCTrack25DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17070), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17070), { 0, 0, height + 24 },
{ { 0, 6, height + 40 }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17071), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17071), { 0, 0, height + 24 },
{ { 0, 6, height + 40 }, { 32, 20, 3 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17072), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17072), { 0, 0, height + 24 },
{ { 0, 6, height + 40 }, { 32, 20, 3 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17073), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17073), { 0, 0, height + 24 },
{ { 0, 6, height + 40 }, { 32, 20, 3 } });
break;
}
@ -146,22 +145,22 @@ static void InvertedHairpinRCTrack25DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17042), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17042), { 0, 0, height + 24 },
{ { 0, 6, height + 40 }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17043), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17043), { 0, 0, height + 24 },
{ { 0, 6, height + 40 }, { 32, 20, 3 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17044), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17044), { 0, 0, height + 24 },
{ { 0, 6, height + 40 }, { 32, 20, 3 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17045), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17045), { 0, 0, height + 24 },
{ { 0, 6, height + 40 }, { 32, 20, 3 } });
break;
}
@ -176,22 +175,22 @@ static void InvertedHairpinRCTrack25DegUp(
case 0:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::TopRightSide, 0, height + 48,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 1:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::BottomRightSide, 0, height + 48,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 2:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::BottomLeftSide, 0, height + 48,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::TopLeftSide, 0, height + 48,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
}
}
@ -218,22 +217,22 @@ static void InvertedHairpinRCTrack60DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17086), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17086), { 0, 0, height + 24 },
{ { 0, 6, height + 88 }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17087), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17087), { 0, 0, height + 24 },
{ { 0, 4, height + 6 }, { 32, 2, 81 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17088), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17088), { 0, 0, height + 24 },
{ { 0, 4, height + 6 }, { 32, 2, 81 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17089), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17089), { 0, 0, height + 24 },
{ { 0, 6, height + 88 }, { 32, 20, 3 } });
break;
}
@ -244,22 +243,22 @@ static void InvertedHairpinRCTrack60DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17058), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17058), { 0, 0, height + 24 },
{ { 0, 6, height + 88 }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17059), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17059), { 0, 0, height + 24 },
{ { 0, 4, height + 6 }, { 32, 2, 81 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17060), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17060), { 0, 0, height + 24 },
{ { 0, 4, height + 6 }, { 32, 2, 81 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17061), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17061), { 0, 0, height + 24 },
{ { 0, 6, height + 88 }, { 32, 20, 3 } });
break;
}
@ -288,22 +287,22 @@ static void InvertedHairpinRCTrackFlatTo25DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17062), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17062), { 0, 0, height + 24 },
{ { 0, 6, height + 32 }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17063), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17063), { 0, 0, height + 24 },
{ { 0, 6, height + 32 }, { 32, 20, 3 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17064), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17064), { 0, 0, height + 24 },
{ { 0, 6, height + 32 }, { 32, 20, 3 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17065), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17065), { 0, 0, height + 24 },
{ { 0, 6, height + 32 }, { 32, 20, 3 } });
break;
}
@ -314,22 +313,22 @@ static void InvertedHairpinRCTrackFlatTo25DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17034), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17034), { 0, 0, height + 24 },
{ { 0, 6, height + 32 }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17035), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17035), { 0, 0, height + 24 },
{ { 0, 6, height + 32 }, { 32, 20, 3 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17036), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17036), { 0, 0, height + 24 },
{ { 0, 6, height + 32 }, { 32, 20, 3 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17037), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17037), { 0, 0, height + 24 },
{ { 0, 6, height + 32 }, { 32, 20, 3 } });
break;
}
@ -344,22 +343,22 @@ static void InvertedHairpinRCTrackFlatTo25DegUp(
case 0:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::TopRightSide, 0, height + 40,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 1:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::BottomRightSide, 0, height + 40,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 2:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::BottomLeftSide, 0, height + 40,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::TopLeftSide, 0, height + 40,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
}
}
@ -386,28 +385,28 @@ static void InvertedHairpinRCTrack25DegUpTo60DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17074), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17074), { 0, 0, height + 24 },
{ { 0, 6, height + 56 }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17078), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17078), { 0, 0, height + 24 },
{ { 0, 10, height + 6 }, { 32, 10, 49 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17075), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17075), { 0, 0, height + 24 },
{ { 0, 4, height + 6 }, { 32, 2, 49 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17079), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17079), { 0, 0, height + 24 },
{ { 0, 10, height + 6 }, { 32, 10, 49 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17076), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17076), { 0, 0, height + 24 },
{ { 0, 4, height + 6 }, { 32, 2, 49 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17077), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17077), { 0, 0, height + 24 },
{ { 0, 6, height + 56 }, { 32, 20, 3 } });
break;
}
@ -418,28 +417,28 @@ static void InvertedHairpinRCTrack25DegUpTo60DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17046), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17046), { 0, 0, height + 24 },
{ { 0, 6, height + 56 }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17050), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17050), { 0, 0, height + 24 },
{ { 0, 10, height + 6 }, { 32, 10, 49 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17047), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17047), { 0, 0, height + 24 },
{ { 0, 4, height + 6 }, { 32, 2, 49 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17051), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17051), { 0, 0, height + 24 },
{ { 0, 10, height + 6 }, { 32, 10, 49 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17048), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17048), { 0, 0, height + 24 },
{ { 0, 4, height + 6 }, { 32, 2, 49 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17049), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17049), { 0, 0, height + 24 },
{ { 0, 6, height + 56 }, { 32, 20, 3 } });
break;
}
@ -468,28 +467,28 @@ static void InvertedHairpinRCTrack60DegUpTo25DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17080), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17080), { 0, 0, height + 24 },
{ { 0, 6, height + 56 }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17084), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17084), { 0, 0, height + 24 },
{ { 0, 10, height + 6 }, { 32, 10, 49 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17081), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17081), { 0, 0, height + 24 },
{ { 0, 4, height + 6 }, { 32, 2, 49 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17085), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17085), { 0, 0, height + 24 },
{ { 0, 10, height + 6 }, { 32, 10, 49 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17082), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17082), { 0, 0, height + 24 },
{ { 0, 4, height + 6 }, { 32, 2, 49 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17083), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17083), { 0, 0, height + 24 },
{ { 0, 6, height + 56 }, { 32, 20, 3 } });
break;
}
@ -500,28 +499,28 @@ static void InvertedHairpinRCTrack60DegUpTo25DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17052), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17052), { 0, 0, height + 24 },
{ { 0, 6, height + 56 }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17056), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17056), { 0, 0, height + 24 },
{ { 0, 10, height + 6 }, { 32, 10, 49 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17053), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17053), { 0, 0, height + 24 },
{ { 0, 4, height + 6 }, { 32, 2, 49 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17057), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17057), { 0, 0, height + 24 },
{ { 0, 10, height + 6 }, { 32, 10, 49 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17054), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17054), { 0, 0, height + 24 },
{ { 0, 4, height + 6 }, { 32, 2, 49 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17055), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17055), { 0, 0, height + 24 },
{ { 0, 6, height + 56 }, { 32, 20, 3 } });
break;
}
@ -536,22 +535,22 @@ static void InvertedHairpinRCTrack60DegUpTo25DegUp(
case 0:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::TopRightSide, 0, height + 62,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 1:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::BottomRightSide, 0, height + 62,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 2:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::BottomLeftSide, 0, height + 62,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::TopLeftSide, 0, height + 62,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
}
}
@ -578,22 +577,22 @@ static void InvertedHairpinRCTrack25DegUpToFlat(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17066), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17066), { 0, 0, height + 24 },
{ { 0, 6, height + 32 }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17067), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17067), { 0, 0, height + 24 },
{ { 0, 6, height + 32 }, { 32, 20, 3 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17068), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17068), { 0, 0, height + 24 },
{ { 0, 6, height + 32 }, { 32, 20, 3 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17069), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17069), { 0, 0, height + 24 },
{ { 0, 6, height + 32 }, { 32, 20, 3 } });
break;
}
@ -604,22 +603,22 @@ static void InvertedHairpinRCTrack25DegUpToFlat(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17038), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17038), { 0, 0, height + 24 },
{ { 0, 6, height + 32 }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17039), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17039), { 0, 0, height + 24 },
{ { 0, 6, height + 32 }, { 32, 20, 3 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17040), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17040), { 0, 0, height + 24 },
{ { 0, 6, height + 32 }, { 32, 20, 3 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17041), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17041), { 0, 0, height + 24 },
{ { 0, 6, height + 32 }, { 32, 20, 3 } });
break;
}
@ -634,22 +633,22 @@ static void InvertedHairpinRCTrack25DegUpToFlat(
case 0:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::TopRightSide, 0, height + 38,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 1:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::BottomRightSide, 0, height + 38,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 2:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::BottomLeftSide, 0, height + 38,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::TopLeftSide, 0, height + 38,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
}
}
@ -725,22 +724,22 @@ static void InvertedHairpinRCTrackLeftQuarterTurn3(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17123), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17123), { 0, 0, height + 24 },
{ { 0, 6, height + 22 }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17126), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17126), { 0, 0, height + 24 },
{ { 0, 6, height + 22 }, { 32, 20, 3 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17129), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17129), { 0, 0, height + 24 },
{ { 0, 6, height + 22 }, { 32, 20, 3 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17120), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17120), { 0, 0, height + 24 },
{ { 0, 6, height + 22 }, { 32, 20, 3 } });
break;
}
@ -749,8 +748,7 @@ static void InvertedHairpinRCTrackLeftQuarterTurn3(
session, PaintUtilRotateSegments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction),
0xFFFF, 0);
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::Centre, 0, height + 30,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::TubesInverted, MetalSupportPlace::Centre, 0, height + 30, session.SupportColours);
if (direction == 0 || direction == 3)
{
@ -766,22 +764,22 @@ static void InvertedHairpinRCTrackLeftQuarterTurn3(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17122), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17122), { 0, 0, height + 24 },
{ { 16, 0, height + 22 }, { 16, 16, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17125), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17125), { 0, 0, height + 24 },
{ { 0, 0, height + 22 }, { 16, 16, 3 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17128), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17128), { 0, 0, height + 24 },
{ { 0, 16, height + 22 }, { 16, 16, 3 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17119), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17119), { 0, 0, height + 24 },
{ { 16, 16, height + 22 }, { 16, 16, 3 } });
break;
}
@ -794,22 +792,22 @@ static void InvertedHairpinRCTrackLeftQuarterTurn3(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17121), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17121), { 0, 0, height + 24 },
{ { 6, 0, height + 22 }, { 20, 32, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17124), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17124), { 0, 0, height + 24 },
{ { 6, 0, height + 22 }, { 20, 32, 3 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17127), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17127), { 0, 0, height + 24 },
{ { 6, 0, height + 22 }, { 20, 32, 3 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17118), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17118), { 0, 0, height + 24 },
{ { 6, 0, height + 22 }, { 20, 32, 3 } });
break;
}
@ -818,8 +816,7 @@ static void InvertedHairpinRCTrackLeftQuarterTurn3(
session, PaintUtilRotateSegments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D4, direction),
0xFFFF, 0);
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::Centre, 0, height + 30,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::TubesInverted, MetalSupportPlace::Centre, 0, height + 30, session.SupportColours);
switch (direction)
{
@ -856,23 +853,19 @@ static void InvertedHairpinRCTrackLeftQuarterTurn325DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17141), { 0, 6, height + 24 },
{ 32, 20, 3 });
session, direction, session.TrackColours.WithIndex(17141), { 0, 6, height + 24 }, { 32, 20, 3 });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17143), { 0, 6, height + 24 },
{ 32, 20, 3 });
session, direction, session.TrackColours.WithIndex(17143), { 0, 6, height + 24 }, { 32, 20, 3 });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17145), { 0, 6, height + 24 },
{ 32, 20, 3 });
session, direction, session.TrackColours.WithIndex(17145), { 0, 6, height + 24 }, { 32, 20, 3 });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17139), { 0, 6, height + 24 },
{ 32, 20, 3 });
session, direction, session.TrackColours.WithIndex(17139), { 0, 6, height + 24 }, { 32, 20, 3 });
break;
}
@ -880,8 +873,7 @@ static void InvertedHairpinRCTrackLeftQuarterTurn325DegUp(
session, PaintUtilRotateSegments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction),
0xFFFF, 0);
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::Centre, 0, height + 38,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::TubesInverted, MetalSupportPlace::Centre, 0, height + 38, session.SupportColours);
if (direction == 0 || direction == 3)
{
@ -900,23 +892,19 @@ static void InvertedHairpinRCTrackLeftQuarterTurn325DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17140), { 6, 0, height + 24 },
{ 20, 32, 3 });
session, direction, session.TrackColours.WithIndex(17140), { 6, 0, height + 24 }, { 20, 32, 3 });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17142), { 6, 0, height + 24 },
{ 20, 32, 3 });
session, direction, session.TrackColours.WithIndex(17142), { 6, 0, height + 24 }, { 20, 32, 3 });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17144), { 6, 0, height + 24 },
{ 20, 32, 3 });
session, direction, session.TrackColours.WithIndex(17144), { 6, 0, height + 24 }, { 20, 32, 3 });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17138), { 6, 0, height + 24 },
{ 20, 32, 3 });
session, direction, session.TrackColours.WithIndex(17138), { 6, 0, height + 24 }, { 20, 32, 3 });
break;
}
@ -924,8 +912,7 @@ static void InvertedHairpinRCTrackLeftQuarterTurn325DegUp(
session, PaintUtilRotateSegments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D4, direction),
0xFFFF, 0);
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::Centre, 0, height + 38,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::TubesInverted, MetalSupportPlace::Centre, 0, height + 38, session.SupportColours);
switch (direction)
{
@ -953,23 +940,19 @@ static void InvertedHairpinRCTrackRightQuarterTurn325DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17130), { 0, 6, height + 24 },
{ 32, 20, 3 });
session, direction, session.TrackColours.WithIndex(17130), { 0, 6, height + 24 }, { 32, 20, 3 });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17132), { 0, 6, height + 24 },
{ 32, 20, 3 });
session, direction, session.TrackColours.WithIndex(17132), { 0, 6, height + 24 }, { 32, 20, 3 });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17134), { 0, 6, height + 24 },
{ 32, 20, 3 });
session, direction, session.TrackColours.WithIndex(17134), { 0, 6, height + 24 }, { 32, 20, 3 });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17136), { 0, 6, height + 24 },
{ 32, 20, 3 });
session, direction, session.TrackColours.WithIndex(17136), { 0, 6, height + 24 }, { 32, 20, 3 });
break;
}
@ -977,8 +960,7 @@ static void InvertedHairpinRCTrackRightQuarterTurn325DegUp(
session, PaintUtilRotateSegments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction),
0xFFFF, 0);
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::Centre, 0, height + 38,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::TubesInverted, MetalSupportPlace::Centre, 0, height + 38, session.SupportColours);
if (direction == 0 || direction == 3)
{
@ -997,23 +979,19 @@ static void InvertedHairpinRCTrackRightQuarterTurn325DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17131), { 6, 0, height + 24 },
{ 20, 32, 3 });
session, direction, session.TrackColours.WithIndex(17131), { 6, 0, height + 24 }, { 20, 32, 3 });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17133), { 6, 0, height + 24 },
{ 20, 32, 3 });
session, direction, session.TrackColours.WithIndex(17133), { 6, 0, height + 24 }, { 20, 32, 3 });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17135), { 6, 0, height + 24 },
{ 20, 32, 3 });
session, direction, session.TrackColours.WithIndex(17135), { 6, 0, height + 24 }, { 20, 32, 3 });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17137), { 6, 0, height + 24 },
{ 20, 32, 3 });
session, direction, session.TrackColours.WithIndex(17137), { 6, 0, height + 24 }, { 20, 32, 3 });
break;
}
@ -1021,8 +999,7 @@ static void InvertedHairpinRCTrackRightQuarterTurn325DegUp(
session, PaintUtilRotateSegments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D4, direction),
0xFFFF, 0);
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::Centre, 0, height + 38,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::TubesInverted, MetalSupportPlace::Centre, 0, height + 38, session.SupportColours);
switch (direction)
{
@ -1065,22 +1042,22 @@ static void InvertedHairpinRCTrackLeftQuarterTurn1(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17114), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17114), { 0, 0, height + 24 },
{ { 6, 2, height + 24 }, { 26, 24, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17115), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17115), { 0, 0, height + 24 },
{ { 0, 0, height + 24 }, { 26, 26, 3 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17116), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17116), { 0, 0, height + 24 },
{ { 2, 6, height + 24 }, { 24, 26, 3 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17117), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17117), { 0, 0, height + 24 },
{ { 6, 6, height + 24 }, { 24, 24, 3 } });
break;
}
@ -1088,8 +1065,7 @@ static void InvertedHairpinRCTrackLeftQuarterTurn1(
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, 0);
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::Centre, 0, height + 30,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::TubesInverted, MetalSupportPlace::Centre, 0, height + 30, session.SupportColours);
switch (direction)
{
@ -1126,28 +1102,28 @@ static void InvertedHairpinRCTrackFlatTo60DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17102), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17102), { 0, 0, height + 24 },
{ { 0, 6, height + 56 }, { 30, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17106), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17106), { 0, 0, height + 24 },
{ { 0, 10, height + 6 }, { 32, 10, 49 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17103), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17103), { 0, 0, height + 24 },
{ { 0, 4, height + 6 }, { 32, 2, 49 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17107), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17107), { 0, 0, height + 24 },
{ { 0, 10, height + 6 }, { 32, 10, 49 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17104), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17104), { 0, 0, height + 24 },
{ { 0, 4, height + 6 }, { 32, 2, 49 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17105), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17105), { 0, 0, height + 24 },
{ { 0, 6, height + 56 }, { 30, 20, 3 } });
break;
}
@ -1158,28 +1134,28 @@ static void InvertedHairpinRCTrackFlatTo60DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17090), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17090), { 0, 0, height + 24 },
{ { 0, 6, height + 56 }, { 30, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17094), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17094), { 0, 0, height + 24 },
{ { 0, 10, height + 6 }, { 32, 10, 49 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17091), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17091), { 0, 0, height + 24 },
{ { 0, 4, height + 6 }, { 32, 2, 49 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17095), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17095), { 0, 0, height + 24 },
{ { 0, 10, height + 6 }, { 32, 10, 49 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17092), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17092), { 0, 0, height + 24 },
{ { 0, 4, height + 6 }, { 32, 2, 49 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17093), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17093), { 0, 0, height + 24 },
{ { 0, 6, height + 56 }, { 30, 20, 3 } });
break;
}
@ -1208,28 +1184,28 @@ static void InvertedHairpinRCTrack60DegUpToFlat(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17108), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17108), { 0, 0, height + 24 },
{ { 0, 6, height + 48 }, { 30, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17112), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17112), { 0, 0, height + 24 },
{ { 0, 10, height + 6 }, { 32, 10, 41 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17109), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17109), { 0, 0, height + 24 },
{ { 0, 4, height + 6 }, { 32, 2, 41 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17113), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17113), { 0, 0, height + 24 },
{ { 0, 10, height + 6 }, { 32, 10, 41 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17110), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17110), { 0, 0, height + 24 },
{ { 0, 4, height + 6 }, { 32, 2, 41 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17111), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17111), { 0, 0, height + 24 },
{ { 0, 6, height + 48 }, { 30, 20, 3 } });
break;
}
@ -1240,28 +1216,28 @@ static void InvertedHairpinRCTrack60DegUpToFlat(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17096), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17096), { 0, 0, height + 24 },
{ { 0, 6, height + 48 }, { 30, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17100), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17100), { 0, 0, height + 24 },
{ { 0, 10, height + 6 }, { 32, 10, 41 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17097), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17097), { 0, 0, height + 24 },
{ { 0, 4, height + 6 }, { 32, 2, 41 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17101), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17101), { 0, 0, height + 24 },
{ { 0, 10, height + 6 }, { 32, 10, 41 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17098), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17098), { 0, 0, height + 24 },
{ { 0, 4, height + 6 }, { 32, 2, 41 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17099), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17099), { 0, 0, height + 24 },
{ { 0, 6, height + 48 }, { 30, 20, 3 } });
break;
}
@ -1274,22 +1250,22 @@ static void InvertedHairpinRCTrack60DegUpToFlat(
case 0:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::TopRightSide, 0, height + 54,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 1:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::BottomRightSide, 0, height + 54,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 2:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::BottomLeftSide, 0, height + 54,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::TopLeftSide, 0, height + 54,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
}
@ -1330,13 +1306,13 @@ static void InvertedHairpinRCTrackBrakes(
case 0:
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17028), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17028), { 0, 0, height + 24 },
{ { 0, 6, height + 22 }, { 32, 20, 1 } });
break;
case 1:
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17029), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17029), { 0, 0, height + 24 },
{ { 0, 6, height + 22 }, { 32, 20, 1 } });
break;
}
@ -1346,8 +1322,7 @@ static void InvertedHairpinRCTrackBrakes(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::Centre, 0, height + 30,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::TubesInverted, MetalSupportPlace::Centre, 0, height + 30, session.SupportColours);
}
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);
@ -1364,13 +1339,13 @@ static void InvertedHairpinRCTrackBlockBrakes(
case 0:
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17028), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17028), { 0, 0, height + 24 },
{ { 0, 6, height + 22 }, { 32, 20, 1 } });
break;
case 1:
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(17029), { 0, 0, height + 24 },
session, direction, session.TrackColours.WithIndex(17029), { 0, 0, height + 24 },
{ { 0, 6, height + 22 }, { 32, 20, 1 } });
break;
}
@ -1380,8 +1355,7 @@ static void InvertedHairpinRCTrackBlockBrakes(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::Centre, 0, height + 30,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::TubesInverted, MetalSupportPlace::Centre, 0, height + 30, session.SupportColours);
}
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);

View File

@ -28,13 +28,13 @@ static void InvertedImpulseRCTrackFlat(
case 0:
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19662), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19662), { 0, 0, height + 29 },
{ { 0, 6, height + 29 }, { 32, 20, 3 } });
break;
case 1:
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19663), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19663), { 0, 0, height + 29 },
{ { 0, 6, height + 29 }, { 32, 20, 3 } });
break;
}
@ -44,8 +44,7 @@ static void InvertedImpulseRCTrackFlat(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::Centre, 0, height + 44,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::TubesInverted, MetalSupportPlace::Centre, 0, height + 44, session.SupportColours);
}
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_INVERTED_3);
@ -68,12 +67,12 @@ static void InvertedImpulseRCTrackStation(
session, direction, GetStationColourScheme(session, trackElement).WithIndex(imageIds[direction][0]), { 0, 0, height },
{ { 0, 2, height }, { 32, 28, 1 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(imageIds[direction][1]), { 0, 0, height + 29 },
{ { 0, 6, height + 29 }, { 32, 20, 3 } });
PaintAddImageAsChildRotated(
session, direction, session.TrackColours[SCHEME_SUPPORTS].WithIndex(imageIds[direction][2]), { 0, 6, height + 29 },
session, direction, session.SupportColours.WithIndex(imageIds[direction][2]), { 0, 6, height + 29 },
{ { 0, 6, height + 29 }, { 32, 20, 3 } });
DrawSupportsSideBySide(session, direction, height, session.TrackColours[SCHEME_SUPPORTS], MetalSupportType::TubesInverted);
DrawSupportsSideBySide(session, direction, height, session.SupportColours, MetalSupportType::TubesInverted);
TrackPaintUtilDrawStationInverted(session, ride, direction, height, trackElement, STATION_VARIANT_TALL);
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_SQUARE_INVERTED_9);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
@ -89,22 +88,22 @@ static void InvertedImpulseRCTrack25DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19672), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19672), { 0, 0, height + 29 },
{ { 0, 6, height + 45 }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19673), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19673), { 0, 0, height + 29 },
{ { 0, 6, height + 45 }, { 32, 20, 3 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19674), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19674), { 0, 0, height + 29 },
{ { 0, 6, height + 45 }, { 32, 20, 3 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19675), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19675), { 0, 0, height + 29 },
{ { 0, 6, height + 45 }, { 32, 20, 3 } });
break;
}
@ -118,22 +117,22 @@ static void InvertedImpulseRCTrack25DegUp(
case 0:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::TopRightSide, 0, height + 62,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 1:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::BottomRightSide, 0, height + 62,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 2:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::BottomLeftSide, 0, height + 62,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::TopLeftSide, 0, height + 62,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
}
}
@ -158,22 +157,22 @@ static void InvertedImpulseRCTrack60DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19688), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19688), { 0, 0, height + 29 },
{ { 0, 6, height + 93 }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19689), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19689), { 0, 0, height + 29 },
{ { 0, 4, height + 11 }, { 32, 2, 81 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19690), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19690), { 0, 0, height + 29 },
{ { 0, 4, height + 11 }, { 32, 2, 81 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19691), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19691), { 0, 0, height + 29 },
{ { 0, 6, height + 93 }, { 32, 20, 3 } });
break;
}
@ -199,22 +198,22 @@ static void InvertedImpulseRCTrackFlatTo25DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19664), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19664), { 0, 0, height + 29 },
{ { 0, 6, height + 37 }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19665), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19665), { 0, 0, height + 29 },
{ { 0, 6, height + 37 }, { 32, 20, 3 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19666), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19666), { 0, 0, height + 29 },
{ { 0, 6, height + 37 }, { 32, 20, 3 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19667), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19667), { 0, 0, height + 29 },
{ { 0, 6, height + 37 }, { 32, 20, 3 } });
break;
}
@ -226,22 +225,22 @@ static void InvertedImpulseRCTrackFlatTo25DegUp(
case 0:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::TopRightSide, 0, height + 54,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 1:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::BottomRightSide, 0, height + 54,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 2:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::BottomLeftSide, 0, height + 54,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::TopLeftSide, 0, height + 54,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
}
@ -265,28 +264,28 @@ static void InvertedImpulseRCTrack25DegUpTo60DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19676), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19676), { 0, 0, height + 29 },
{ { 0, 6, height + 61 }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19680), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19680), { 0, 0, height + 29 },
{ { 0, 10, height + 11 }, { 32, 10, 49 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19677), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19677), { 0, 0, height + 29 },
{ { 0, 4, height + 11 }, { 32, 2, 49 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19681), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19681), { 0, 0, height + 29 },
{ { 0, 10, height + 11 }, { 32, 10, 49 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19678), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19678), { 0, 0, height + 29 },
{ { 0, 4, height + 11 }, { 32, 2, 49 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19679), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19679), { 0, 0, height + 29 },
{ { 0, 6, height + 61 }, { 32, 20, 3 } });
break;
}
@ -312,28 +311,28 @@ static void InvertedImpulseRCTrack60DegUpTo25DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19682), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19682), { 0, 0, height + 29 },
{ { 0, 6, height + 61 }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19686), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19686), { 0, 0, height + 29 },
{ { 0, 10, height + 11 }, { 32, 10, 49 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19683), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19683), { 0, 0, height + 29 },
{ { 0, 4, height + 11 }, { 32, 2, 49 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19687), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19687), { 0, 0, height + 29 },
{ { 0, 10, height + 11 }, { 32, 10, 49 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19684), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19684), { 0, 0, height + 29 },
{ { 0, 4, height + 11 }, { 32, 2, 49 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19685), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19685), { 0, 0, height + 29 },
{ { 0, 6, height + 61 }, { 32, 20, 3 } });
break;
}
@ -359,22 +358,22 @@ static void InvertedImpulseRCTrack25DegUpToFlat(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19668), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19668), { 0, 0, height + 29 },
{ { 0, 6, height + 37 }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19669), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19669), { 0, 0, height + 29 },
{ { 0, 6, height + 37 }, { 32, 20, 3 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19670), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19670), { 0, 0, height + 29 },
{ { 0, 6, height + 37 }, { 32, 20, 3 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19671), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19671), { 0, 0, height + 29 },
{ { 0, 6, height + 37 }, { 32, 20, 3 } });
break;
}
@ -386,22 +385,22 @@ static void InvertedImpulseRCTrack25DegUpToFlat(
case 0:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::TopRightSide, 0, height + 52,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 1:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::BottomRightSide, 0, height + 52,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 2:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::BottomLeftSide, 0, height + 52,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::TubesInverted, MetalSupportPlace::TopLeftSide, 0, height + 52,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
}
@ -476,22 +475,22 @@ static void InvertedImpulseRCTrack90DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19700), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19700), { 0, 0, height + 29 },
{ { 0, 6, height + 61 }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19701), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19701), { 0, 0, height + 29 },
{ { 0, 4, height + 11 }, { 32, 2, 31 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19702), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19702), { 0, 0, height + 29 },
{ { 0, 4, height + 11 }, { 32, 2, 31 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19703), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19703), { 0, 0, height + 29 },
{ { 0, 6, height + 61 }, { 32, 20, 3 } });
break;
}
@ -525,22 +524,22 @@ static void InvertedImpulseRCTrack60DegUpTo90DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19692), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19692), { 0, 0, height + 29 },
{ { 0, 6, height + 85 }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19693), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19693), { 0, 0, height + 29 },
{ { 0, 4, height + 11 }, { 32, 2, 55 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19694), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19694), { 0, 0, height + 29 },
{ { 0, 4, height + 11 }, { 32, 2, 55 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19695), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19695), { 0, 0, height + 29 },
{ { 0, 6, height + 85 }, { 32, 20, 3 } });
break;
}
@ -575,22 +574,22 @@ static void InvertedImpulseRCTrack90DegUpTo60DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19696), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19696), { 0, 0, height + 29 },
{ { 0, 6, height + 85 }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19697), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19697), { 0, 0, height + 29 },
{ { 0, 4, height + 11 }, { 32, 2, 55 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19698), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19698), { 0, 0, height + 29 },
{ { 0, 4, height + 11 }, { 32, 2, 55 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19699), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19699), { 0, 0, height + 29 },
{ { 0, 6, height + 85 }, { 32, 20, 3 } });
break;
}
@ -620,22 +619,22 @@ static void InvertedImpulseRCTrack60DegDownTo90DegDown(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19698), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19698), { 0, 0, height + 29 },
{ { 0, 4, height + 11 }, { 32, 2, 55 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19699), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19699), { 0, 0, height + 29 },
{ { 0, 6, height + 85 }, { 32, 20, 3 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19696), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19696), { 0, 0, height + 29 },
{ { 0, 6, height + 85 }, { 32, 20, 3 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19697), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19697), { 0, 0, height + 29 },
{ { 0, 4, height + 11 }, { 32, 2, 55 } });
break;
}
@ -664,31 +663,31 @@ static void InvertedImpulseRCTrackLeftQuarterTurn190DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19708), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19708), { 0, 0, height + 29 },
{ { 0, 6, height + 125 }, { 32, 20, 3 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19709), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19709), { 0, 0, height + 29 },
{ { 0, 6, height + 125 }, { 32, 20, 3 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19717), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19717), { 0, 0, height + 29 },
{ { 4, 0, height + 11 }, { 2, 32, 31 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19710), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19710), { 0, 0, height + 29 },
{ { 0, 6, height + 125 }, { 32, 20, 3 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19718), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19718), { 0, 0, height + 29 },
{ { 0, 4, height + 11 }, { 32, 2, 31 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19711), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19711), { 0, 0, height + 29 },
{ { 0, 6, height + 125 }, { 32, 20, 3 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19719), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19719), { 0, 0, height + 29 },
{ { 0, 4, height + 11 }, { 32, 2, 31 } });
break;
}
@ -714,31 +713,31 @@ static void InvertedImpulseRCTrackRightQuarterTurn190DegUp(
{
case 0:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19704), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19704), { 0, 0, height + 29 },
{ { 0, 6, height + 125 }, { 32, 20, 3 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19712), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19712), { 0, 0, height + 29 },
{ { 0, 4, height + 11 }, { 32, 2, 31 } });
break;
case 1:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19705), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19705), { 0, 0, height + 29 },
{ { 0, 6, height + 125 }, { 32, 20, 3 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19713), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19713), { 0, 0, height + 29 },
{ { 0, 4, height + 11 }, { 32, 2, 31 } });
break;
case 2:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19706), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19706), { 0, 0, height + 29 },
{ { 0, 6, height + 125 }, { 32, 20, 3 } });
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19714), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19714), { 0, 0, height + 29 },
{ { 0, 4, height + 11 }, { 32, 2, 31 } });
break;
case 3:
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(19707), { 0, 0, height + 29 },
session, direction, session.TrackColours.WithIndex(19707), { 0, 0, height + 29 },
{ { 0, 6, height + 125 }, { 32, 20, 3 } });
break;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -201,18 +201,18 @@ static void PaintReverseFreefallRCFlat(
{
if (direction & 1)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_REVERSE_FREEFALL_RC_FLAT_NW_SE);
auto imageId = session.TrackColours.WithIndex(SPR_REVERSE_FREEFALL_RC_FLAT_NW_SE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 6, 0, height }, { 20, 32, 1 } });
PaintUtilPushTunnelRight(session, height, TUNNEL_SQUARE_FLAT);
}
else
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_REVERSE_FREEFALL_RC_FLAT_SW_NE);
auto imageId = session.TrackColours.WithIndex(SPR_REVERSE_FREEFALL_RC_FLAT_SW_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 1 } });
PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_FLAT);
}
WoodenASupportsPaintSetup(session, (direction & 1) ? 1 : 0, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, (direction & 1) ? 1 : 0, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
}
@ -230,10 +230,10 @@ static void PaintReverseFreefallRCStation(
PaintAddImageAsParent(session, imageId, { 0, 0, height - 2 }, { { 0, 2, height }, { 32, 28, 1 } });
// height += 2 (height)
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(reverse_freefall_rc_track_pieces_station[direction]);
imageId = session.TrackColours.WithIndex(reverse_freefall_rc_track_pieces_station[direction]);
PaintAddImageAsChild(session, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 1 } });
WoodenASupportsPaintSetup(session, (direction & 1) ? 1 : 0, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, (direction & 1) ? 1 : 0, 0, height, session.SupportColours);
PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_FLAT);
}
else if (direction == 1 || direction == 3)
@ -243,10 +243,10 @@ static void PaintReverseFreefallRCStation(
PaintAddImageAsParent(session, imageId, { 0, 0, height - 2 }, { { 2, 0, height }, { 28, 32, 1 } });
// height += 2 (height)
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(reverse_freefall_rc_track_pieces_station[direction]);
imageId = session.TrackColours.WithIndex(reverse_freefall_rc_track_pieces_station[direction]);
PaintAddImageAsChild(session, imageId, { 0, 0, height }, { { 6, 0, height }, { 20, 32, 1 } });
WoodenASupportsPaintSetup(session, (direction & 1) ? 1 : 0, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, (direction & 1) ? 1 : 0, 0, height, session.SupportColours);
PaintUtilPushTunnelRight(session, height, TUNNEL_SQUARE_FLAT);
}
@ -265,10 +265,9 @@ static void PaintReverseFreefallRCSlope(
static constexpr int32_t supportHeights[] = { 48, 64, 128, 176, 208, 240, 240 };
static constexpr int32_t tunnelOffsets03[] = { 0, 0, 0, 16, 64 };
auto supportsImageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
auto supportsImageId = session.SupportColours.WithIndex(
reverse_freefall_rc_track_pieces_slope_supports[trackSequence][direction]);
auto trackImageId = session.TrackColours[SCHEME_TRACK].WithIndex(
reverse_freefall_rc_track_pieces_slope[trackSequence][direction]);
auto trackImageId = session.TrackColours.WithIndex(reverse_freefall_rc_track_pieces_slope[trackSequence][direction]);
int8_t bbHeight;
bool isDirection03 = (direction == 0 || direction == 3);
switch (trackSequence)
@ -305,21 +304,21 @@ static void PaintReverseFreefallRCSlope(
session, direction, supportsImageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, bbHeight } });
}
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + supportHeights[trackSequence], 0x20);
break;
case 5:
if (WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]))
if (WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.SupportColours))
{
ImageId floorImageId;
if (direction & 1)
{
floorImageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_FLOOR_PLANKS_90_DEG);
floorImageId = session.SupportColours.WithIndex(SPR_FLOOR_PLANKS_90_DEG);
}
else
{
floorImageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_FLOOR_PLANKS);
floorImageId = session.SupportColours.WithIndex(SPR_FLOOR_PLANKS);
}
PaintAddImageAsParent(session, floorImageId, { 0, 0, height }, { { 3, 3, height }, { 26, 26, 126 } });
PaintAddImageAsChildRotated(
@ -350,7 +349,7 @@ static void PaintReverseFreefallRCSlope(
PaintAddImageAsChildRotated(
session, direction, supportsImageId, { 0, 0, height }, { { 27, 6, height }, { 1, 20, 126 } });
}
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + supportHeights[trackSequence], 0x20);
break;
@ -365,14 +364,13 @@ static void PaintReverseFreefallRCVertical(
switch (trackSequence)
{
case 0:
supportsImageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
reverse_freefall_rc_track_pieces_vertical_supports[direction]);
supportsImageId = session.SupportColours.WithIndex(reverse_freefall_rc_track_pieces_vertical_supports[direction]);
PaintAddImageAsParent(session, supportsImageId, { 0, 0, height }, { { 3, 3, height }, { 26, 26, 79 } });
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 80, 0x20);
break;
case 1:
trackImageId = session.TrackColours[SCHEME_TRACK].WithIndex(reverse_freefall_rc_track_pieces_vertical[direction]);
trackImageId = session.TrackColours.WithIndex(reverse_freefall_rc_track_pieces_vertical[direction]);
if (direction == 0 || direction == 3)
{
PaintAddImageAsParentRotated(
@ -403,7 +401,7 @@ static void PaintReverseFreefallRCOnridePhoto(
// The straight track without booster is borrowed from the APVC.
// It has one track colour, instead of the two that the Reverse Freefall Colour has.
auto colour = session.TrackColours[SCHEME_TRACK];
auto colour = session.TrackColours;
if (!trackElement.IsGhost() && !trackElement.IsHighlighted())
{
colour = colour.WithPrimary(colour.GetSecondary());
@ -412,7 +410,7 @@ static void PaintReverseFreefallRCOnridePhoto(
PaintAddImageAsParentRotated(
session, direction, colour.WithIndex(imageIds[direction]), { 0, 0, height }, { { 0, 6, height }, { 32, 20, 1 } });
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.SupportColours);
TrackPaintUtilOnridePhotoPaint(session, direction, height + 3, trackElement);
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_SQUARE_FLAT);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -230,7 +230,7 @@ static void PaintVirginiaReelTrackFlat(
sprites = virginia_reel_track_pieces_flat_lift_hill;
}
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction]);
auto imageId = session.TrackColours.WithIndex(sprites[direction]);
if (direction & 1)
{
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 2, 0, height }, { 27, 32, 2 } });
@ -242,7 +242,7 @@ static void PaintVirginiaReelTrackFlat(
PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_FLAT);
}
WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
@ -259,7 +259,7 @@ static void PaintVirginiaReelTrack25DegUp(
sprites = virginia_reel_track_pieces_25_deg_up_lift_hill;
}
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction]);
auto imageId = session.TrackColours.WithIndex(sprites[direction]);
PaintStruct* ps;
if (direction & 1)
@ -279,19 +279,19 @@ static void PaintVirginiaReelTrack25DegUp(
switch (direction)
{
case 0:
WoodenASupportsPaintSetup(session, 0, 9, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, 0, 9, height, session.SupportColours);
PaintUtilPushTunnelLeft(session, height - 8, TUNNEL_SQUARE_7);
break;
case 1:
WoodenASupportsPaintSetup(session, 1, 10, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, 1, 10, height, session.SupportColours);
PaintUtilPushTunnelRight(session, height + 8, TUNNEL_SQUARE_8);
break;
case 2:
WoodenASupportsPaintSetup(session, 0, 11, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, 0, 11, height, session.SupportColours);
PaintUtilPushTunnelLeft(session, height + 8, TUNNEL_SQUARE_8);
break;
case 3:
WoodenASupportsPaintSetup(session, 1, 12, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, 1, 12, height, session.SupportColours);
PaintUtilPushTunnelRight(session, height - 8, TUNNEL_SQUARE_7);
break;
}
@ -311,34 +311,34 @@ static void PaintVirginiaReelTrackFlatTo25DegUp(
sprites = virginia_reel_track_pieces_flat_to_25_deg_up_lift_hill;
}
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction]);
auto imageId = session.TrackColours.WithIndex(sprites[direction]);
PaintStruct* ps;
switch (direction)
{
case 0:
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 27, 2 } });
WoodenASupportsPaintSetup(session, 0, 1, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, 0, 1, height, session.SupportColours);
PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_FLAT);
break;
case 1:
ps = PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 2, 0, height }, { 27, 32, 2 } });
session.WoodenSupportsPrependTo = ps;
WoodenASupportsPaintSetup(session, 1, 2, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, 1, 2, height, session.SupportColours);
PaintUtilPushTunnelRight(session, height, TUNNEL_SQUARE_8);
break;
case 2:
ps = PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 27, 2 } });
session.WoodenSupportsPrependTo = ps;
WoodenASupportsPaintSetup(session, 0, 3, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, 0, 3, height, session.SupportColours);
PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_8);
break;
case 3:
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 2, 0, height }, { 27, 32, 2 } });
WoodenASupportsPaintSetup(session, 1, 4, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, 1, 4, height, session.SupportColours);
PaintUtilPushTunnelRight(session, height, TUNNEL_SQUARE_FLAT);
break;
}
@ -358,7 +358,7 @@ static void PaintVirginiaReelTrack25DegUpToFlat(
sprites = virginia_reel_track_pieces_25_deg_up_to_flat_lift_hill;
}
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction]);
auto imageId = session.TrackColours.WithIndex(sprites[direction]);
PaintStruct* ps;
if (direction & 1)
@ -378,19 +378,19 @@ static void PaintVirginiaReelTrack25DegUpToFlat(
switch (direction)
{
case 0:
WoodenASupportsPaintSetup(session, 0, 5, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, 0, 5, height, session.SupportColours);
PaintUtilPushTunnelLeft(session, height - 8, TUNNEL_SQUARE_FLAT);
break;
case 1:
WoodenASupportsPaintSetup(session, 1, 6, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, 1, 6, height, session.SupportColours);
PaintUtilPushTunnelRight(session, height + 8, TUNNEL_14);
break;
case 2:
WoodenASupportsPaintSetup(session, 0, 7, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, 0, 7, height, session.SupportColours);
PaintUtilPushTunnelLeft(session, height + 8, TUNNEL_14);
break;
case 3:
WoodenASupportsPaintSetup(session, 1, 8, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, 1, 8, height, session.SupportColours);
PaintUtilPushTunnelRight(session, height - 8, TUNNEL_SQUARE_FLAT);
break;
}
@ -435,7 +435,7 @@ static void PaintVirginiaReelStation(
imageId = GetStationColourScheme(session, trackElement).WithIndex(SPR_STATION_BASE_B_SW_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height - 2 }, { { 0, 2, height }, { 32, 28, 2 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_VIRGINIA_REEL_FLAT_SW_NE);
imageId = session.TrackColours.WithIndex(SPR_VIRGINIA_REEL_FLAT_SW_NE);
PaintAddImageAsChild(session, imageId, { 0, 0, height }, { { 0, 0, height }, { 32, 20, 2 } });
PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_FLAT);
@ -445,13 +445,13 @@ static void PaintVirginiaReelStation(
imageId = GetStationColourScheme(session, trackElement).WithIndex(SPR_STATION_BASE_B_NW_SE);
PaintAddImageAsParent(session, imageId, { 0, 0, height - 2 }, { { 2, 0, height }, { 28, 32, 2 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_VIRGINIA_REEL_FLAT_NW_SE);
imageId = session.TrackColours.WithIndex(SPR_VIRGINIA_REEL_FLAT_NW_SE);
PaintAddImageAsChild(session, imageId, { 0, 0, height }, { { 0, 0, height }, { 20, 32, 2 } });
PaintUtilPushTunnelRight(session, height, TUNNEL_SQUARE_FLAT);
}
WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.SupportColours);
TrackPaintUtilDrawStation(session, ride, direction, height, trackElement);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
@ -471,7 +471,7 @@ static void PaintVirginiaReelTrackLeftQuarterTurn3Tiles(
const TrackElement& trackElement)
{
TrackPaintUtilLeftQuarterTurn3TilesPaint(
session, 2, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK],
session, 2, height, direction, trackSequence, session.TrackColours,
virginia_reel_track_pieces_flat_quarter_turn_3_tiles);
TrackPaintUtilLeftQuarterTurn3TilesTunnel(session, height, TUNNEL_SQUARE_FLAT, direction, trackSequence);
@ -484,7 +484,7 @@ static void PaintVirginiaReelTrackLeftQuarterTurn3Tiles(
case 0:
case 3:
WoodenASupportsPaintSetup(
session, virginia_reel_left_quarter_turn_supports[direction], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, virginia_reel_left_quarter_turn_supports[direction], 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, PaintUtilRotateSegments(SEGMENTS_ALL, direction), 0xFFFF, 0);
break;
}
@ -514,24 +514,23 @@ static void PaintVirginiaReelTrackLeftQuarterTurn1Tile(
const TrackElement& trackElement)
{
TrackPaintUtilLeftQuarterTurn1TilePaint(
session, 2, height, 0, direction, session.TrackColours[SCHEME_TRACK],
virginia_reel_track_pieces_flat_quarter_turn_1_tile);
session, 2, height, 0, direction, session.TrackColours, virginia_reel_track_pieces_flat_quarter_turn_1_tile);
switch (direction)
{
case 0:
WoodenASupportsPaintSetup(session, 5, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, 5, 0, height, session.SupportColours);
PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_FLAT);
break;
case 1:
WoodenASupportsPaintSetup(session, 2, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, 2, 0, height, session.SupportColours);
break;
case 2:
WoodenASupportsPaintSetup(session, 3, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, 3, 0, height, session.SupportColours);
PaintUtilPushTunnelRight(session, height, TUNNEL_SQUARE_FLAT);
break;
case 3:
WoodenASupportsPaintSetup(session, 4, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, 4, 0, height, session.SupportColours);
PaintUtilPushTunnelRight(session, height, TUNNEL_SQUARE_FLAT);
PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_FLAT);
break;

View File

@ -176,12 +176,12 @@ static void WildMouseTrackFlat(
};
uint8_t isChained = trackElement.HasChain() ? 1 : 0;
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][isChained]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][isChained]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -1, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -1, height, session.SupportColours);
}
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);
PaintUtilSetSegmentSupportHeight(
@ -208,17 +208,16 @@ static void WildMouseTrackStation(
{
bool isClosed = trackElement.IsBrakeClosed();
PaintAddImageAsChildRotated(
session, direction,
session.TrackColours[SCHEME_TRACK].WithIndex(_wild_mouse_block_brakes_image_ids[direction][isClosed]),
session, direction, session.TrackColours.WithIndex(_wild_mouse_block_brakes_image_ids[direction][isClosed]),
{ 0, 0, height }, { { 0, 0, height }, { 32, 20, 2 } });
}
else
{
PaintAddImageAsChildRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(_wild_mouse_brakes_image_ids[direction]),
{ 0, 0, height }, { { 0, 0, height }, { 32, 20, 2 } });
session, direction, session.TrackColours.WithIndex(_wild_mouse_brakes_image_ids[direction]), { 0, 0, height },
{ { 0, 0, height }, { 32, 20, 2 } });
}
DrawSupportsSideBySide(session, direction, height, session.TrackColours[SCHEME_SUPPORTS], MetalSupportType::Boxed);
DrawSupportsSideBySide(session, direction, height, session.SupportColours, MetalSupportType::Boxed);
TrackPaintUtilDrawStation(session, ride, direction, height, trackElement);
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_SQUARE_FLAT);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
@ -238,12 +237,12 @@ static void WildMouseTrack25DegUp(
};
uint8_t isChained = trackElement.HasChain() ? 1 : 0;
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][isChained]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][isChained]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -9, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -9, height, session.SupportColours);
}
if (direction == 0 || direction == 3)
{
@ -271,7 +270,7 @@ static void WildMouseTrack60DegUp(
};
uint8_t isChained = trackElement.HasChain() ? 1 : 0;
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][isChained]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][isChained]);
if (direction == 0 || direction == 3)
{
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
@ -285,13 +284,12 @@ static void WildMouseTrack60DegUp(
if (direction == 0 || direction == 3)
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -33, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -33, height, session.SupportColours);
}
else
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 32, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 32, height, session.SupportColours);
}
}
if (direction == 0 || direction == 3)
@ -320,12 +318,12 @@ static void WildMouseTrackFlatTo25DegUp(
};
uint8_t isChained = trackElement.HasChain() ? 1 : 0;
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][isChained]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][isChained]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -4, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -4, height, session.SupportColours);
}
if (direction == 0 || direction == 3)
{
@ -359,8 +357,8 @@ static void WildMouseTrack25DegUpTo60DegUp(
};
uint8_t isChained = trackElement.HasChain() ? 1 : 0;
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][isChained]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(frontImageIds[direction][isChained]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][isChained]);
auto frontImageId = session.TrackColours.WithIndex(frontImageIds[direction][isChained]);
if (direction == 0 || direction == 3)
{
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
@ -373,7 +371,7 @@ static void WildMouseTrack25DegUpTo60DegUp(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -13, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -13, height, session.SupportColours);
}
if (direction == 0 || direction == 3)
{
@ -407,8 +405,8 @@ static void WildMouseTrack60DegUpTo25DegUp(
};
uint8_t isChained = trackElement.HasChain() ? 1 : 0;
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][isChained]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(frontImageIds[direction][isChained]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][isChained]);
auto frontImageId = session.TrackColours.WithIndex(frontImageIds[direction][isChained]);
if (direction == 0 || direction == 3)
{
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
@ -421,7 +419,7 @@ static void WildMouseTrack60DegUpTo25DegUp(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -21, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -21, height, session.SupportColours);
}
if (direction == 0 || direction == 3)
{
@ -449,12 +447,12 @@ static void WildMouseTrack25DegUpToFlat(
};
uint8_t isChained = trackElement.HasChain() ? 1 : 0;
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][isChained]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][isChained]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -7, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -7, height, session.SupportColours);
}
if (direction == 0 || direction == 3)
{
@ -544,8 +542,7 @@ static void WildMouseTrackRightQuarterTurn3(
},
};
TrackPaintUtilRightQuarterTurn3TilesPaint3(
session, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], imageIds);
TrackPaintUtilRightQuarterTurn3TilesPaint3(session, height, direction, trackSequence, session.TrackColours, imageIds);
TrackPaintUtilRightQuarterTurn3TilesTunnel(session, height, direction, trackSequence, TUNNEL_0);
switch (trackSequence)
@ -553,7 +550,7 @@ static void WildMouseTrackRightQuarterTurn3(
case 0:
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -1, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -1, height, session.SupportColours);
break;
}
@ -604,8 +601,7 @@ static void WildMouseTrackRightQuarterTurn325DegDown(
const SpriteBb* sbb = &imageIds[direction][part];
const auto& offset = sbb->offset;
PaintAddImageAsParent(
session, session.TrackColours[SCHEME_TRACK].WithIndex(sbb->sprite_id), { offset.x, offset.y, height + offset.z },
sbb->bb_size);
session, session.TrackColours.WithIndex(sbb->sprite_id), { offset.x, offset.y, height + offset.z }, sbb->bb_size);
}
TrackPaintUtilRightQuarterTurn3Tiles25DegDownTunnel(session, height, direction, trackSequence, TUNNEL_2, TUNNEL_1);
@ -615,7 +611,7 @@ static void WildMouseTrackRightQuarterTurn325DegDown(
case 0:
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -9, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -9, height, session.SupportColours);
break;
}
@ -671,8 +667,8 @@ static void WildMouseTrackRightQuarterTurn325DegUp(
int32_t part = trackSequence == 0 ? 0 : 1;
const SpriteBb* sbb = &imageIds[direction][part];
PaintAddImageAsParent(
session, session.TrackColours[SCHEME_TRACK].WithIndex(sbb->sprite_id),
{ sbb->offset.x, sbb->offset.y, height + sbb->offset.z }, sbb->bb_size);
session, session.TrackColours.WithIndex(sbb->sprite_id), { sbb->offset.x, sbb->offset.y, height + sbb->offset.z },
sbb->bb_size);
}
TrackPaintUtilRightQuarterTurn3Tiles25DegUpTunnel(session, height, direction, trackSequence, TUNNEL_1, TUNNEL_2);
@ -681,20 +677,18 @@ static void WildMouseTrackRightQuarterTurn325DegUp(
{
case 0:
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -9, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -9, height, session.SupportColours);
break;
case 3:
if (direction == 2)
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -11, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -11, height, session.SupportColours);
}
else
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -9, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -9, height, session.SupportColours);
}
break;
}
@ -742,7 +736,7 @@ static void WildMouseTrackLeftQuarterTurn1(
SPR_WILD_MOUSE_QUARTER_TURN_1_SE_NW,
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction]);
switch (direction)
{
case 0:
@ -758,8 +752,7 @@ static void WildMouseTrackLeftQuarterTurn1(
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 6, 6, height }, { 24, 24, 2 } });
break;
}
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -1, height, session.TrackColours[SCHEME_SUPPORTS]);
MetalASupportsPaintSetup(session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -1, height, session.SupportColours);
TrackPaintUtilLeftQuarterTurn1TileTunnel(session, direction, height, 0, TUNNEL_0, 0, TUNNEL_0);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D0, direction), 0xFFFF, 0);
@ -793,8 +786,8 @@ static void WildMouseTrackFlatTo60DegUp(
};
uint8_t isChained = trackElement.HasChain() ? 1 : 0;
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][isChained]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(frontImageIds[direction][isChained]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][isChained]);
auto frontImageId = session.TrackColours.WithIndex(frontImageIds[direction][isChained]);
if (direction == 0 || direction == 3)
{
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 27, 2 } });
@ -807,7 +800,7 @@ static void WildMouseTrackFlatTo60DegUp(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -5, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -5, height, session.SupportColours);
}
if (direction == 0 || direction == 3)
{
@ -841,8 +834,8 @@ static void WildMouseTrack60DegUpToFlat(
};
uint8_t isChained = trackElement.HasChain() ? 1 : 0;
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][isChained]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(frontImageIds[direction][isChained]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][isChained]);
auto frontImageId = session.TrackColours.WithIndex(frontImageIds[direction][isChained]);
if (direction == 0 || direction == 3)
{
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 27, 2 } });
@ -857,13 +850,12 @@ static void WildMouseTrack60DegUpToFlat(
if (direction == 0 || direction == 3)
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -17, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, -17, height, session.SupportColours);
}
else
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 16, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 16, height, session.SupportColours);
}
}
if (direction == 0 || direction == 3)
@ -900,12 +892,12 @@ static void WildMouseTrackBrakes(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(_wild_mouse_brakes_image_ids[direction]);
auto imageId = session.TrackColours.WithIndex(_wild_mouse_brakes_image_ids[direction]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.SupportColours);
}
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);
PaintUtilSetSegmentSupportHeight(
@ -925,12 +917,12 @@ static void WildMouseTrackRotationControlToggle(
SPR_WILD_MOUSE_ROTATION_CONTROL_TOGGLE_NW_SE,
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.SupportColours);
}
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);
PaintUtilSetSegmentSupportHeight(
@ -944,12 +936,12 @@ static void WildMouseTrackBlockBrakes(
const TrackElement& trackElement)
{
bool isClosed = trackElement.IsBrakeClosed();
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(_wild_mouse_block_brakes_image_ids[direction][isClosed]);
auto imageId = session.TrackColours.WithIndex(_wild_mouse_block_brakes_image_ids[direction][isClosed]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.SupportColours);
}
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);
PaintUtilSetSegmentSupportHeight(

File diff suppressed because it is too large Load Diff

View File

@ -36,11 +36,9 @@ static constexpr const int8_t WoodenRCDiagonalSupports[4][NumOrthogonalDirection
template<bool isClassic> ImageId WoodenRCGetTrackColour(const PaintSession& session)
{
if (isClassic)
return session.TrackColours[SCHEME_TRACK];
return session.TrackColours;
else
return session.TrackColours[SCHEME_TRACK].IsRemap()
? session.TrackColours[SCHEME_TRACK]
: session.TrackColours[SCHEME_TRACK].WithPrimary(session.TrackColours[SCHEME_SUPPORTS].GetPrimary());
return session.SupportColours;
}
ImageId WoodenRCGetRailsColour(PaintSession& session);

View File

@ -132,9 +132,9 @@ static void WoodenWildMouseTrackFlat(
SPR_WOODEN_WILD_MOUSE_FLAT_NW_SE,
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 6, height }, { 32, 20, 1 });
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.SupportColours);
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);
PaintUtilSetSegmentSupportHeight(
session,
@ -160,9 +160,9 @@ static void WoodenWildMouseTrackStation(
session, direction, GetStationColourScheme(session, trackElement).WithIndex(imageIds[direction][1]),
{ 0, 0, height - 2 }, { { 0, 2, height }, { 32, 28, 1 } });
PaintAddImageAsChildRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]), { 0, 6, height },
session, direction, session.TrackColours.WithIndex(imageIds[direction][0]), { 0, 6, height },
{ { 0, 0, height }, { 32, 20, 1 } });
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.SupportColours);
TrackPaintUtilDrawStation(session, ride, direction, height, trackElement);
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_SQUARE_FLAT);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
@ -190,10 +190,10 @@ static void WoodenWildMouseTrack25DegUp(
};
uint8_t isChained = trackElement.HasChain() ? 1 : 0;
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[isChained][direction]);
auto imageId = session.TrackColours.WithIndex(imageIds[isChained][direction]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 2, height }, { { 0, 3, height }, { 32, 25, 1 } });
WoodenASupportsPaintSetup(session, direction & 1, 9 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 9 + direction, height, session.SupportColours);
if (direction == 0 || direction == 3)
{
@ -229,7 +229,7 @@ static void WoodenWildMouseTrack60DegUp(
};
uint8_t isChained = trackElement.HasChain() ? 1 : 0;
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[isChained][direction]);
auto imageId = session.TrackColours.WithIndex(imageIds[isChained][direction]);
if (direction == 0 || direction == 3)
{
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 2, height }, { { 0, 3, height }, { 32, 25, 1 } });
@ -240,7 +240,7 @@ static void WoodenWildMouseTrack60DegUp(
session, direction, imageId, { 0, 6, height }, { { 28, 4, height - 16 }, { 2, 24, 93 } });
}
WoodenASupportsPaintSetup(session, direction & 1, 21 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 21 + direction, height, session.SupportColours);
if (direction == 0 || direction == 3)
{
@ -276,10 +276,10 @@ static void WoodenWildMouseTrackFlatTo25DegUp(
};
uint8_t isChained = trackElement.HasChain() ? 1 : 0;
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[isChained][direction]);
auto imageId = session.TrackColours.WithIndex(imageIds[isChained][direction]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 2, height }, { { 0, 3, height }, { 32, 25, 1 } });
WoodenASupportsPaintSetup(session, direction & 1, 1 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 1 + direction, height, session.SupportColours);
if (direction == 0 || direction == 3)
{
@ -318,19 +318,19 @@ static void WoodenWildMouseTrack25DegUpTo60DegUp(
ImageId imageId;
if (direction == 0 || direction == 3)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[isChained][direction][0]);
imageId = session.TrackColours.WithIndex(imageIds[isChained][direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 2, height }, { { 0, 3, height }, { 32, 25, 1 } });
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[isChained][direction][0]);
imageId = session.TrackColours.WithIndex(imageIds[isChained][direction][0]);
session.WoodenSupportsPrependTo = PaintAddImageAsParentRotated(
session, direction, imageId, { 0, 6, height }, { { 28, 4, height + 2 }, { 2, 24, 43 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[isChained][direction][1]);
imageId = session.TrackColours.WithIndex(imageIds[isChained][direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 6, height }, { { 0, 4, height }, { 32, 2, 43 } });
}
WoodenASupportsPaintSetup(session, direction & 1, 13 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 13 + direction, height, session.SupportColours);
if (direction == 0 || direction == 3)
{
@ -368,19 +368,19 @@ static void WoodenWildMouseTrack60DegTo25DegUp(
ImageId imageId;
if (direction == 0 || direction == 3)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[isChained][direction][0]);
imageId = session.TrackColours.WithIndex(imageIds[isChained][direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 2, height }, { { 0, 3, height }, { 32, 25, 1 } });
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[isChained][direction][0]);
imageId = session.TrackColours.WithIndex(imageIds[isChained][direction][0]);
session.WoodenSupportsPrependTo = PaintAddImageAsParentRotated(
session, direction, imageId, { 0, 6, height }, { { 28, 4, height + 2 }, { 2, 24, 43 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[isChained][direction][1]);
imageId = session.TrackColours.WithIndex(imageIds[isChained][direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 6, height }, { { 0, 4, height }, { 32, 2, 43 } });
}
WoodenASupportsPaintSetup(session, direction & 1, 17 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 17 + direction, height, session.SupportColours);
if (direction == 0 || direction == 3)
{
@ -416,10 +416,10 @@ static void WoodenWildMouseTrack25DegUpToFlat(
};
uint8_t isChained = trackElement.HasChain() ? 1 : 0;
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[isChained][direction]);
auto imageId = session.TrackColours.WithIndex(imageIds[isChained][direction]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 2, height }, { { 0, 3, height }, { 32, 25, 1 } });
WoodenASupportsPaintSetup(session, direction & 1, 5 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 5 + direction, height, session.SupportColours);
if (direction == 0 || direction == 3)
{
@ -510,15 +510,14 @@ static void WoodenWildMouseTrackRightQuarterTurn3(
};
static uint8_t supportType[] = { 4, 5, 2, 3 };
TrackPaintUtilRightQuarterTurn3TilesPaint4(
session, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], imageIds);
TrackPaintUtilRightQuarterTurn3TilesPaint4(session, height, direction, trackSequence, session.TrackColours, imageIds);
TrackPaintUtilRightQuarterTurn3TilesTunnel(session, height, direction, trackSequence, TUNNEL_0);
switch (trackSequence)
{
case 0:
case 3:
WoodenASupportsPaintSetup(session, supportType[direction], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, supportType[direction], 0, height, session.SupportColours);
break;
}
@ -559,7 +558,7 @@ static void WoodenWildMouseTrackLeftQuarterTurn1(
};
static uint8_t supportType[] = { 5, 2, 3, 4 };
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction]);
switch (direction)
{
case 0:
@ -575,7 +574,7 @@ static void WoodenWildMouseTrackLeftQuarterTurn1(
PaintAddImageAsParent(session, imageId, { 6, 6, height }, { 24, 24, 1 });
break;
}
WoodenASupportsPaintSetup(session, supportType[direction], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, supportType[direction], 0, height, session.SupportColours);
TrackPaintUtilLeftQuarterTurn1TileTunnel(session, direction, height, 0, TUNNEL_0, 0, TUNNEL_0);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
@ -613,18 +612,18 @@ static void WoodenWildMouseTrackFlatTo60DegUp(
ImageId imageId;
if (direction == 0 || direction == 3)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[isChained][direction][0]);
imageId = session.TrackColours.WithIndex(imageIds[isChained][direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 2, height }, { { 0, 3, height }, { 32, 25, 1 } });
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[isChained][direction][0]);
imageId = session.TrackColours.WithIndex(imageIds[isChained][direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 6, height }, { { 28, 4, height + 2 }, { 2, 24, 43 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[isChained][direction][1]);
imageId = session.TrackColours.WithIndex(imageIds[isChained][direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 6, height }, { { 0, 4, height }, { 32, 2, 43 } });
}
WoodenASupportsPaintSetup(session, direction & 1, 29 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 29 + direction, height, session.SupportColours);
if (direction == 0 || direction == 3)
{
@ -663,18 +662,18 @@ static void WoodenWildMouseTrack60DegUpToFlat(
ImageId imageId;
if (direction == 0 || direction == 3)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[isChained][direction][0]);
imageId = session.TrackColours.WithIndex(imageIds[isChained][direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 2, height }, { { 0, 3, height }, { 32, 25, 1 } });
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[isChained][direction][0]);
imageId = session.TrackColours.WithIndex(imageIds[isChained][direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 6, height }, { { 28, 4, height + 2 }, { 2, 24, 43 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[isChained][direction][1]);
imageId = session.TrackColours.WithIndex(imageIds[isChained][direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 6, height }, { { 0, 4, height }, { 32, 2, 43 } });
}
WoodenASupportsPaintSetup(session, direction & 1, 33 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 33 + direction, height, session.SupportColours);
if (direction == 0 || direction == 3)
{

View File

@ -160,7 +160,7 @@ static void PaintCarRideTrackFlat(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(CarRideTrackPiecesFlat[direction]);
auto imageId = session.TrackColours.WithIndex(CarRideTrackPiecesFlat[direction]);
if (direction == 0 || direction == 2)
{
@ -180,8 +180,7 @@ static void PaintCarRideTrackFlat(
PaintUtilPushTunnelRight(session, height, TUNNEL_0);
}
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
MetalASupportsPaintSetup(session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
@ -192,7 +191,7 @@ static void PaintCarRideTrack25DegUp(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(CarRideTrackPieces25DegUp[direction]);
auto imageId = session.TrackColours.WithIndex(CarRideTrackPieces25DegUp[direction]);
if (direction == 0 || direction == 2)
{
@ -219,8 +218,7 @@ static void PaintCarRideTrack25DegUp(
break;
}
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height, session.TrackColours[SCHEME_SUPPORTS]);
MetalASupportsPaintSetup(session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20);
@ -231,7 +229,7 @@ static void PaintCarRideTrackFlatTo25DegUp(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(CarRideTrackPiecesFlatTo25DegUp[direction]);
auto imageId = session.TrackColours.WithIndex(CarRideTrackPiecesFlatTo25DegUp[direction]);
if (direction == 0 || direction == 2)
{
@ -258,8 +256,7 @@ static void PaintCarRideTrackFlatTo25DegUp(
break;
}
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 3, height, session.TrackColours[SCHEME_SUPPORTS]);
MetalASupportsPaintSetup(session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 3, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 48, 0x20);
@ -270,7 +267,7 @@ static void PaintCarRideTrack25DegUpToFlat(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(CarRideTrackPieces25DegUpToFlat[direction]);
auto imageId = session.TrackColours.WithIndex(CarRideTrackPieces25DegUpToFlat[direction]);
if (direction == 0 || direction == 2)
{
@ -297,8 +294,7 @@ static void PaintCarRideTrack25DegUpToFlat(
break;
}
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 6, height, session.TrackColours[SCHEME_SUPPORTS]);
MetalASupportsPaintSetup(session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 6, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 40, 0x20);
@ -346,7 +342,7 @@ static void PaintCarRideStation(
PaintAddImageAsParent(session, imageId, { 0, 0, height - 2 }, { { 2, 0, height }, { 28, 32, 1 } });
}
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(CarRideTrackPiecesFlat[direction]);
imageId = session.TrackColours.WithIndex(CarRideTrackPiecesFlat[direction]);
if (direction == 0 || direction == 2)
{
PaintAddImageAsChild(session, imageId, { 0, 6, height }, { { 0, 0, height }, { 32, 20, 1 } });
@ -365,7 +361,7 @@ static void PaintCarRideStation(
PaintUtilPushTunnelRight(session, height, TUNNEL_SQUARE_FLAT);
}
DrawSupportsSideBySide(session, direction, height, session.TrackColours[SCHEME_SUPPORTS], MetalSupportType::Boxed);
DrawSupportsSideBySide(session, direction, height, session.SupportColours, MetalSupportType::Boxed);
TrackPaintUtilDrawStation(session, ride, direction, height, trackElement);
@ -379,7 +375,7 @@ static void PaintCarRideTrackRightQuarterTurn3Tiles(
const TrackElement& trackElement)
{
TrackPaintUtilRightQuarterTurn3TilesPaint(
session, 3, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], CarRideTrackPiecesQuarterTurn3Tiles,
session, 3, height, direction, trackSequence, session.TrackColours, CarRideTrackPiecesQuarterTurn3Tiles,
defaultRightQuarterTurn3TilesOffsets, defaultRightQuarterTurn3TilesBoundLengths, nullptr);
TrackPaintUtilRightQuarterTurn3TilesTunnel(session, height, direction, trackSequence, TUNNEL_0);
@ -388,7 +384,7 @@ static void PaintCarRideTrackRightQuarterTurn3Tiles(
case 0:
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
}
@ -424,7 +420,7 @@ static void PaintCarRideTrackLeftQuarterTurn1Tile(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(CarRideTrackPiecesLeftQuarterTurn1Tile[direction]);
auto imageId = session.TrackColours.WithIndex(CarRideTrackPiecesLeftQuarterTurn1Tile[direction]);
CoordsXYZ offset;
switch (direction)
@ -445,8 +441,7 @@ static void PaintCarRideTrackLeftQuarterTurn1Tile(
break;
}
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
MetalASupportsPaintSetup(session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
TrackPaintUtilLeftQuarterTurn1TileTunnel(session, direction, height, 0, TUNNEL_0, 0, TUNNEL_0);
@ -467,7 +462,7 @@ static void PaintCarRideTrackSpinningTunnel(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(CarRideTrackPiecesFlat[direction]);
auto imageId = session.TrackColours.WithIndex(CarRideTrackPiecesFlat[direction]);
if (direction == 0 || direction == 2)
{
@ -500,7 +495,7 @@ static void PaintCarRideTrack60DegUp(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(CarRideTrackPieces60DegUp[direction]);
auto imageId = session.TrackColours.WithIndex(CarRideTrackPieces60DegUp[direction]);
switch (direction)
{
@ -537,7 +532,7 @@ static void PaintCarRideTrack60DegUp(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 32, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 32, height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
@ -550,7 +545,7 @@ static void PaintCarRideTrack25DegUpTo60DegUp(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(CarRideTrackPieces25DegUpTo60DegUp[direction][0]);
auto imageId = session.TrackColours.WithIndex(CarRideTrackPieces25DegUpTo60DegUp[direction][0]);
if (direction == 0 || direction == 2)
{
@ -563,7 +558,7 @@ static void PaintCarRideTrack25DegUpTo60DegUp(
if (CarRideTrackPieces25DegUpTo60DegUp[direction][1] != 0)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(CarRideTrackPieces25DegUpTo60DegUp[direction][1]);
imageId = session.TrackColours.WithIndex(CarRideTrackPieces25DegUpTo60DegUp[direction][1]);
if (direction == 0 || direction == 2)
{
@ -594,7 +589,7 @@ static void PaintCarRideTrack25DegUpTo60DegUp(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 12, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 12, height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
@ -607,7 +602,7 @@ static void PaintCarRideTrack60DegUpTo25DegUp(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(CarRideTrackPieces60DegUpTo25DegUp[direction][0]);
auto imageId = session.TrackColours.WithIndex(CarRideTrackPieces60DegUpTo25DegUp[direction][0]);
if (direction == 0 || direction == 2)
{
@ -620,7 +615,7 @@ static void PaintCarRideTrack60DegUpTo25DegUp(
if (CarRideTrackPieces60DegUpTo25DegUp[direction][1] != 0)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(CarRideTrackPieces60DegUpTo25DegUp[direction][1]);
imageId = session.TrackColours.WithIndex(CarRideTrackPieces60DegUpTo25DegUp[direction][1]);
if (direction == 0 || direction == 2)
{
@ -651,7 +646,7 @@ static void PaintCarRideTrack60DegUpTo25DegUp(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 20, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 20, height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
@ -688,7 +683,7 @@ static void PaintCarRideTrackLogBumps(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(CarRideTrackPiecesLogBumps[direction]);
auto imageId = session.TrackColours.WithIndex(CarRideTrackPiecesLogBumps[direction]);
if (direction == 0 || direction == 2)
{
@ -708,8 +703,7 @@ static void PaintCarRideTrackLogBumps(
PaintUtilPushTunnelRight(session, height, TUNNEL_0);
}
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
MetalASupportsPaintSetup(session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);

View File

@ -58,11 +58,11 @@ static void PaintCircus(
const StationObject* stationObject = ride.GetStationObject();
TrackPaintUtilPaintFloor(session, edges, session.TrackColours[SCHEME_TRACK], height, floorSpritesCork, stationObject);
TrackPaintUtilPaintFloor(session, edges, session.TrackColours, height, floorSpritesCork, stationObject);
TrackPaintUtilPaintFences(
session, edges, session.MapPosition, trackElement, ride, session.TrackColours[SCHEME_SUPPORTS], height,
fenceSpritesRope, session.CurrentRotation);
session, edges, session.MapPosition, trackElement, ride, session.SupportColours, height, fenceSpritesRope,
session.CurrentRotation);
auto stationColour = GetStationColourScheme(session, trackElement);
switch (trackSequence)

View File

@ -92,7 +92,7 @@ static void PaintCrookedHouse(
const StationObject* stationObject = ride.GetStationObject();
TrackPaintUtilPaintFloor(session, edges, session.TrackColours[SCHEME_TRACK], height, floorSpritesCork, stationObject);
TrackPaintUtilPaintFloor(session, edges, session.TrackColours, height, floorSpritesCork, stationObject);
TrackPaintUtilPaintFences(
session, edges, session.MapPosition, trackElement, ride, GetStationColourScheme(session, trackElement), height,

View File

@ -36,7 +36,7 @@ static constexpr uint32_t DodgemsFenceSprites[] = {
static void PaintDodgemsRoof(PaintSession& session, int32_t height, int32_t offset)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex((SprDodgemsRoofFrame + offset));
auto imageId = session.TrackColours.WithIndex((SprDodgemsRoofFrame + offset));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { 32, 32, 2 });
imageId = ImageId(SprDodgemsRoofGlass + offset).WithTransparency(FilterPaletteID::PaletteDarken3);
@ -57,12 +57,12 @@ static void PaintDodgems(
if (stationObject != nullptr && !(stationObject->Flags & STATION_OBJECT_FLAGS::NO_PLATFORMS))
{
auto imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SprDodgemsFloor);
auto imageId = session.SupportColours.WithIndex(SprDodgemsFloor);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 1, 1, height }, { 30, 30, 1 } });
TrackPaintUtilPaintFences(
session, edges, session.MapPosition, trackElement, ride, session.TrackColours[SCHEME_SUPPORTS], height,
DodgemsFenceSprites, session.CurrentRotation);
session, edges, session.MapPosition, trackElement, ride, session.SupportColours, height, DodgemsFenceSprites,
session.CurrentRotation);
switch (direction)
{

View File

@ -76,7 +76,7 @@ static void PaintFerrisWheelStructure(
CoordsXYZ offset((direction & 1) ? 0 : axisOffset, (direction & 1) ? axisOffset : 0, height + 7);
BoundBoxXYZ bb = { { boundBox.offset, height + 7 }, { boundBox.length, 127 } };
auto supportsImageTemplate = session.TrackColours[SCHEME_TRACK];
auto supportsImageTemplate = session.TrackColours;
auto wheelImageTemplate = ImageId(0, ride.vehicle_colours[0].Body, ride.vehicle_colours[0].Trim);
if (stationColour != TrackStationColour)
{
@ -121,7 +121,7 @@ static void PaintFerrisWheel(
const StationObject* stationObject = ride.GetStationObject();
TrackPaintUtilPaintFloor(session, edges, session.TrackColours[SCHEME_TRACK], height, floorSpritesCork, stationObject);
TrackPaintUtilPaintFloor(session, edges, session.TrackColours, height, floorSpritesCork, stationObject);
ImageId imageId;
uint8_t rotation = session.CurrentRotation;

View File

@ -48,13 +48,13 @@ static void PaintFlyingSaucers(
if (stationObject != nullptr && !(stationObject->Flags & STATION_OBJECT_FLAGS::NO_PLATFORMS))
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SprFlyingSaucersFloor);
auto imageId = session.TrackColours.WithIndex(SprFlyingSaucersFloor);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 1, 1, height }, { 30, 30, 1 } });
}
TrackPaintUtilPaintFences(
session, edges, session.MapPosition, trackElement, ride, session.TrackColours[SCHEME_TRACK], height,
FlyingSaucersFenceSprites, session.CurrentRotation);
session, edges, session.MapPosition, trackElement, ride, session.TrackColours, height, FlyingSaucersFenceSprites,
session.CurrentRotation);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 48, 0x20);

View File

@ -180,7 +180,7 @@ static void PaintGhostTrainTrackFlat(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(GhostTrainTrackPiecesFlat[direction]);
auto imageId = session.TrackColours.WithIndex(GhostTrainTrackPiecesFlat[direction]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
@ -190,7 +190,7 @@ static void PaintGhostTrainTrackFlat(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
@ -203,16 +203,16 @@ static void PaintGhostTrainTrack25DegUp(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(GhostTrainTrackPieces25DegUp[direction][0]);
auto imageId = session.TrackColours.WithIndex(GhostTrainTrackPieces25DegUp[direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(GhostTrainTrackPieces25DegUp[direction][1]);
imageId = session.TrackColours.WithIndex(GhostTrainTrackPieces25DegUp[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 23 } });
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height, session.SupportColours);
}
switch (direction)
@ -252,16 +252,16 @@ static void PaintGhostTrainTrackFlatTo25DegUp(
doorImage = DoorOpeningOutwardsToImage[trackElement.GetDoorBState()];
}
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(GhostTrainTrackPiecesFlatTo25DegUp[direction][0]);
auto imageId = session.TrackColours.WithIndex(GhostTrainTrackPiecesFlatTo25DegUp[direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(GhostTrainTrackPiecesFlatTo25DegUp[direction][1]);
imageId = session.TrackColours.WithIndex(GhostTrainTrackPiecesFlatTo25DegUp[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 15 } });
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 3, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 3, height, session.SupportColours);
}
switch (direction)
@ -289,16 +289,16 @@ static void PaintGhostTrainTrack25DegUpToFlatShared(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(GhostTrainTrackPieces25DegUpToFlat[direction][0]);
auto imageId = session.TrackColours.WithIndex(GhostTrainTrackPieces25DegUpToFlat[direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(GhostTrainTrackPieces25DegUpToFlat[direction][1]);
imageId = session.TrackColours.WithIndex(GhostTrainTrackPieces25DegUpToFlat[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 15 } });
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 6, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 6, height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
@ -387,12 +387,12 @@ static void PaintGhostTrainStation(
imageId = GetStationColourScheme(session, trackElement).WithIndex(imageIds[direction]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height - 2 }, { { 0, 2, height }, { 32, 28, 3 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(GhostTrainTrackPiecesFlat[direction]);
imageId = session.TrackColours.WithIndex(GhostTrainTrackPiecesFlat[direction]);
PaintAddImageAsChildRotated(session, direction, imageId, { 0, 0, height }, { { 0, 0, height }, { 32, 20, 3 } });
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_SQUARE_FLAT);
DrawSupportsSideBySide(session, direction, height, session.TrackColours[SCHEME_SUPPORTS], MetalSupportType::Boxed);
DrawSupportsSideBySide(session, direction, height, session.SupportColours, MetalSupportType::Boxed);
TrackPaintUtilDrawStation(session, ride, direction, height, trackElement);
@ -406,9 +406,8 @@ static void PaintGhostTrainTrackRightQuarterTurn3Tiles(
const TrackElement& trackElement)
{
TrackPaintUtilRightQuarterTurn3TilesPaint(
session, 3, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK],
GhostTrainTrackPiecesQuarterTurn3Tiles, nullptr, defaultRightQuarterTurn3TilesBoundLengths,
defaultRightQuarterTurn3TilesBoundOffsets);
session, 3, height, direction, trackSequence, session.TrackColours, GhostTrainTrackPiecesQuarterTurn3Tiles, nullptr,
defaultRightQuarterTurn3TilesBoundLengths, defaultRightQuarterTurn3TilesBoundOffsets);
bool isBackwards = trackElement.GetTrackType() == TrackElemType::LeftQuarterTurn3Tiles;
bool isDoorA = (!isBackwards && trackSequence == 0) || (isBackwards && trackSequence == 3);
auto tunnelType = isDoorA ? DoorOpeningInwardsToImage[trackElement.GetDoorAState()]
@ -420,7 +419,7 @@ static void PaintGhostTrainTrackRightQuarterTurn3Tiles(
case 0:
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
}
@ -470,11 +469,10 @@ static void PaintGhostTrainTrackLeftQuarterTurn1Tile(
}
TrackPaintUtilLeftQuarterTurn1TilePaint(
session, 3, height, 0, direction, session.TrackColours[SCHEME_TRACK], GhostTrainTrackPiecesQuarterTurn1Tile);
session, 3, height, 0, direction, session.TrackColours, GhostTrainTrackPiecesQuarterTurn1Tile);
TrackPaintUtilLeftQuarterTurn1TileTunnel(session, direction, height, 0, tunnelStartImage, 0, tunnelEndImage);
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
MetalASupportsPaintSetup(session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
}
@ -492,7 +490,7 @@ static void PaintGhostTrainTrackSpinningTunnel(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(ghost_train_track_pieces_spinning_tunnel_track[direction]);
auto imageId = session.TrackColours.WithIndex(ghost_train_track_pieces_spinning_tunnel_track[direction]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 2, 6, height }, { 28, 20, 3 } });
@ -512,7 +510,7 @@ static void PaintGhostTrainTrackBrakes(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(GhostTrainTrackPiecesBrakes[direction]);
auto imageId = session.TrackColours.WithIndex(GhostTrainTrackPiecesBrakes[direction]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
@ -522,7 +520,7 @@ static void PaintGhostTrainTrackBrakes(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(

View File

@ -72,7 +72,7 @@ static void PaintHauntedHouse(
const StationObject* stationObject = ride.GetStationObject();
TrackPaintUtilPaintFloor(session, edges, session.TrackColours[SCHEME_TRACK], height, floorSpritesCork, stationObject);
TrackPaintUtilPaintFloor(session, edges, session.TrackColours, height, floorSpritesCork, stationObject);
TrackPaintUtilPaintFences(
session, edges, session.MapPosition, trackElement, ride, GetStationColourScheme(session, trackElement), height,

View File

@ -113,7 +113,7 @@ static void PaintMerryGoRound(
const StationObject* stationObject = ride.GetStationObject();
TrackPaintUtilPaintFloor(session, edges, session.TrackColours[SCHEME_TRACK], height, floorSpritesCork, stationObject);
TrackPaintUtilPaintFloor(session, edges, session.TrackColours, height, floorSpritesCork, stationObject);
TrackPaintUtilPaintFences(
session, edges, session.MapPosition, trackElement, ride, GetStationColourScheme(session, trackElement), height,

View File

@ -475,19 +475,18 @@ static void PaintMiniGolfTrackFlat(
if (direction & 1)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SprMiniGolfFlatNwSe);
imageId = session.TrackColours.WithIndex(SprMiniGolfFlatNwSe);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 6, 0, height }, { 20, 32, 1 } });
PaintUtilPushTunnelRight(session, height, TUNNEL_PATH_AND_MINI_GOLF);
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SprMiniGolfFlatSwNe);
imageId = session.TrackColours.WithIndex(SprMiniGolfFlatSwNe);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 1 } });
PaintUtilPushTunnelLeft(session, height, TUNNEL_PATH_AND_MINI_GOLF);
}
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
MetalASupportsPaintSetup(session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
@ -521,11 +520,10 @@ static void PaintMiniGolfTrack25DegUp(
{
ImageId imageId;
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(MiniGolfTrackSprites25DegUp[direction][0]);
imageId = session.TrackColours.WithIndex(MiniGolfTrackSprites25DegUp[direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { 32, 20, 1 });
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height, session.TrackColours[SCHEME_SUPPORTS]);
MetalASupportsPaintSetup(session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
@ -561,11 +559,10 @@ static void PaintMiniGolfTrackFlatTo25DegUp(
{
ImageId imageId;
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(MiniGolfTrackSpritesFlatTo25DegUp[direction][0]);
imageId = session.TrackColours.WithIndex(MiniGolfTrackSpritesFlatTo25DegUp[direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 1 } });
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
MetalASupportsPaintSetup(session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
@ -601,11 +598,10 @@ static void PaintMiniGolfTrack25DegUpToFlat(
{
ImageId imageId;
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(MiniGolfTrackSprites25DegUpToFlat[direction][0]);
imageId = session.TrackColours.WithIndex(MiniGolfTrackSprites25DegUpToFlat[direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 1 } });
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height, session.TrackColours[SCHEME_SUPPORTS]);
MetalASupportsPaintSetup(session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
@ -667,7 +663,7 @@ static void PaintMiniGolfStation(
ImageId imageId;
bool hasFence;
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SprMiniGolfStationFloor);
imageId = session.TrackColours.WithIndex(SprMiniGolfStationFloor);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 0, height }, { 32, 28, 1 } });
if (direction & 1)
@ -716,7 +712,7 @@ static void PaintMiniGolfStation(
PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_FLAT);
}
WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
@ -730,10 +726,9 @@ static void PaintMiniGolfTrackLeftQuarterTurn1Tile(
ImageId imageId;
TrackPaintUtilLeftQuarterTurn1TilePaint(
session, 1, height, 0, direction, session.TrackColours[SCHEME_TRACK], MiniGolfTrackSpritesQuarterTurn1Tile);
session, 1, height, 0, direction, session.TrackColours, MiniGolfTrackSpritesQuarterTurn1Tile);
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
MetalASupportsPaintSetup(session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_B8 | SEGMENT_C8 | SEGMENT_C4 | SEGMENT_D0, direction), 0xFFFF, 0);
@ -817,7 +812,7 @@ static void PaintMiniGolfHoleAb(
ImageId imageId;
CoordsXY boundBox, boundBoxOffset;
bool drewSupports = WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.TrackColours[SCHEME_SUPPORTS]);
bool drewSupports = WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
@ -844,7 +839,7 @@ static void PaintMiniGolfHoleAb(
auto bb = BoundBoxXYZ{ { boundBoxOffset, height + 24 }, { boundBox, 0 } };
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][trackSequence][1]);
imageId = session.TrackColours.WithIndex(sprites[direction][trackSequence][1]);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, bb);
bb.offset.z = height;
@ -852,16 +847,15 @@ static void PaintMiniGolfHoleAb(
if (drewSupports)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
((direction & 1) ? SPR_FLOOR_PLANKS_90_DEG : SPR_FLOOR_PLANKS));
imageId = session.SupportColours.WithIndex(((direction & 1) ? SPR_FLOOR_PLANKS_90_DEG : SPR_FLOOR_PLANKS));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, bb);
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][trackSequence][0]);
imageId = session.TrackColours.WithIndex(sprites[direction][trackSequence][0]);
PaintAddImageAsChild(session, imageId, { 0, 0, height }, bb);
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][trackSequence][0]);
imageId = session.TrackColours.WithIndex(sprites[direction][trackSequence][0]);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, bb);
}
}
@ -890,7 +884,7 @@ static void PaintMiniGolfHoleC(
ImageId imageId;
CoordsXY boundBox, boundBoxOffset;
bool drewSupports = WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.TrackColours[SCHEME_SUPPORTS]);
bool drewSupports = WoodenASupportsPaintSetup(session, (direction & 1), 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
@ -915,7 +909,7 @@ static void PaintMiniGolfHoleC(
boundBoxOffset = { 0, 3 };
}
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(MiniGolfTrackSpritesHoleC[direction][trackSequence][1]);
imageId = session.TrackColours.WithIndex(MiniGolfTrackSpritesHoleC[direction][trackSequence][1]);
switch ((direction << 4) | trackSequence)
{
@ -937,16 +931,15 @@ static void PaintMiniGolfHoleC(
auto bb = BoundBoxXYZ{ { boundBoxOffset, height }, { boundBox.x, boundBox.y, 1 } };
if (drewSupports)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
((direction & 1) ? SPR_FLOOR_PLANKS_90_DEG : SPR_FLOOR_PLANKS));
imageId = session.SupportColours.WithIndex(((direction & 1) ? SPR_FLOOR_PLANKS_90_DEG : SPR_FLOOR_PLANKS));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, bb);
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(MiniGolfTrackSpritesHoleC[direction][trackSequence][0]);
imageId = session.TrackColours.WithIndex(MiniGolfTrackSpritesHoleC[direction][trackSequence][0]);
PaintAddImageAsChild(session, imageId, { 0, 0, height }, bb);
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(MiniGolfTrackSpritesHoleC[direction][trackSequence][0]);
imageId = session.TrackColours.WithIndex(MiniGolfTrackSpritesHoleC[direction][trackSequence][0]);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, bb);
}
}
@ -962,7 +955,7 @@ static void PaintMiniGolfHoleD(
int32_t supportType = (direction & 1);
if (trackSequence == 2)
supportType = 1 - supportType;
bool drewSupports = WoodenASupportsPaintSetup(session, supportType, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
bool drewSupports = WoodenASupportsPaintSetup(session, supportType, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
@ -991,7 +984,7 @@ static void PaintMiniGolfHoleD(
boundBoxOffset = { 0, 3 };
}
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(MiniGolfTrackSpritesHoleD[direction][trackSequence][1]);
imageId = session.TrackColours.WithIndex(MiniGolfTrackSpritesHoleD[direction][trackSequence][1]);
switch ((direction << 4) | trackSequence)
{
@ -1030,16 +1023,15 @@ static void PaintMiniGolfHoleD(
auto offset = CoordsXYZ{ 0, 0, height };
if (drewSupports)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
((supportType & 1) ? SPR_FLOOR_PLANKS_90_DEG : SPR_FLOOR_PLANKS));
imageId = session.SupportColours.WithIndex(((supportType & 1) ? SPR_FLOOR_PLANKS_90_DEG : SPR_FLOOR_PLANKS));
PaintAddImageAsParent(session, imageId, offset, bb);
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(MiniGolfTrackSpritesHoleD[direction][trackSequence][0]);
imageId = session.TrackColours.WithIndex(MiniGolfTrackSpritesHoleD[direction][trackSequence][0]);
PaintAddImageAsChild(session, imageId, offset, bb);
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(MiniGolfTrackSpritesHoleD[direction][trackSequence][0]);
imageId = session.TrackColours.WithIndex(MiniGolfTrackSpritesHoleD[direction][trackSequence][0]);
PaintAddImageAsParent(session, imageId, offset, bb);
}
}
@ -1055,7 +1047,7 @@ static void PaintMiniGolfHoleE(
int32_t supportType = (direction & 1);
if (trackSequence == 2)
supportType = 1 - supportType;
bool drewSupports = WoodenASupportsPaintSetup(session, supportType, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
bool drewSupports = WoodenASupportsPaintSetup(session, supportType, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
@ -1084,7 +1076,7 @@ static void PaintMiniGolfHoleE(
boundBoxOffset = { 0, 3 };
}
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(MiniGolfTrackSpritesHoleE[direction][trackSequence][1]);
imageId = session.TrackColours.WithIndex(MiniGolfTrackSpritesHoleE[direction][trackSequence][1]);
switch ((direction << 4) | trackSequence)
{
@ -1123,16 +1115,15 @@ static void PaintMiniGolfHoleE(
auto offset = CoordsXYZ{ 0, 0, height };
if (drewSupports)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
((supportType & 1) ? SPR_FLOOR_PLANKS_90_DEG : SPR_FLOOR_PLANKS));
imageId = session.SupportColours.WithIndex(((supportType & 1) ? SPR_FLOOR_PLANKS_90_DEG : SPR_FLOOR_PLANKS));
PaintAddImageAsParent(session, imageId, offset, bb);
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(MiniGolfTrackSpritesHoleE[direction][trackSequence][0]);
imageId = session.TrackColours.WithIndex(MiniGolfTrackSpritesHoleE[direction][trackSequence][0]);
PaintAddImageAsChild(session, imageId, offset, bb);
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(MiniGolfTrackSpritesHoleE[direction][trackSequence][0]);
imageId = session.TrackColours.WithIndex(MiniGolfTrackSpritesHoleE[direction][trackSequence][0]);
PaintAddImageAsParent(session, imageId, offset, bb);
}
}

View File

@ -28,7 +28,7 @@ static void PaintMiniHelicoptersTrackStation(
imageId = GetStationColourScheme(session, trackElement).WithIndex(SPR_STATION_BASE_B_SW_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height - 2 }, { { 0, 2, height }, { 32, 28, 1 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_NE_SW);
imageId = session.TrackColours.WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_NE_SW);
PaintAddImageAsChild(session, imageId, { 0, 0, height }, { { 0, 0, height }, { 32, 20, 1 } });
}
else if (direction == 1 || direction == 3)
@ -36,11 +36,11 @@ static void PaintMiniHelicoptersTrackStation(
imageId = GetStationColourScheme(session, trackElement).WithIndex(SPR_STATION_BASE_B_NW_SE);
PaintAddImageAsParent(session, imageId, { 0, 0, height - 2 }, { { 2, 0, height }, { 28, 32, 1 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_SE_NW);
imageId = session.TrackColours.WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_SE_NW);
PaintAddImageAsChild(session, imageId, { 0, 0, height }, { { 0, 0, height }, { 20, 32, 1 } });
}
DrawSupportsSideBySide(session, direction, height, session.TrackColours[SCHEME_SUPPORTS], MetalSupportType::Boxed);
DrawSupportsSideBySide(session, direction, height, session.SupportColours, MetalSupportType::Boxed);
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_SQUARE_FLAT);
TrackPaintUtilDrawStation(session, ride, direction, height, trackElement);
@ -58,13 +58,13 @@ static void PaintMiniHelicoptersTrackFlat(
if (direction & 1)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_SE_NW);
imageId = session.TrackColours.WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_SE_NW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 6, 0, height }, { 20, 32, 3 } });
PaintUtilPushTunnelRight(session, height, TUNNEL_0);
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_NE_SW);
imageId = session.TrackColours.WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_NE_SW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
PaintUtilPushTunnelLeft(session, height, TUNNEL_0);
}
@ -73,7 +73,7 @@ static void PaintMiniHelicoptersTrackFlat(
{
MetalASupportsPaintSetup(
session, (direction & 1) ? MetalSupportType::StickAlt : MetalSupportType::Stick, MetalSupportPlace::Centre, -1,
height, session.TrackColours[SCHEME_SUPPORTS]);
height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
@ -91,26 +91,22 @@ static void PaintMiniHelicoptersTrackFlatTo25DegUp(
switch (direction)
{
case 0:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_TO_25_DEG_UP_SW_NE);
imageId = session.TrackColours.WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_TO_25_DEG_UP_SW_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
PaintUtilPushTunnelLeft(session, height, TUNNEL_0);
break;
case 1:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_TO_25_DEG_UP_NW_SE);
imageId = session.TrackColours.WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_TO_25_DEG_UP_NW_SE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 6, 0, height }, { 20, 32, 3 } });
PaintUtilPushTunnelRight(session, height, TUNNEL_2);
break;
case 2:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_TO_25_DEG_UP_NE_SW);
imageId = session.TrackColours.WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_TO_25_DEG_UP_NE_SW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
PaintUtilPushTunnelLeft(session, height, TUNNEL_2);
break;
case 3:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_TO_25_DEG_UP_SE_NW);
imageId = session.TrackColours.WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_TO_25_DEG_UP_SE_NW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 6, 0, height }, { 20, 32, 3 } });
PaintUtilPushTunnelRight(session, height, TUNNEL_0);
break;
@ -119,7 +115,7 @@ static void PaintMiniHelicoptersTrackFlatTo25DegUp(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Stick, MetalSupportPlace::Centre, -4, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Stick, MetalSupportPlace::Centre, -4, height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
@ -137,22 +133,22 @@ static void PaintMiniHelicoptersTrack25DegUp(
switch (direction)
{
case 0:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_25_DEG_UP_SW_NE);
imageId = session.TrackColours.WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_25_DEG_UP_SW_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
PaintUtilPushTunnelLeft(session, height - 8, TUNNEL_1);
break;
case 1:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_25_DEG_UP_NW_SE);
imageId = session.TrackColours.WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_25_DEG_UP_NW_SE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 6, 0, height }, { 20, 32, 3 } });
PaintUtilPushTunnelRight(session, height + 8, TUNNEL_2);
break;
case 2:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_25_DEG_UP_NE_SW);
imageId = session.TrackColours.WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_25_DEG_UP_NE_SW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
PaintUtilPushTunnelLeft(session, height + 8, TUNNEL_2);
break;
case 3:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_25_DEG_UP_SE_NW);
imageId = session.TrackColours.WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_25_DEG_UP_SE_NW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 6, 0, height }, { 20, 32, 3 } });
PaintUtilPushTunnelRight(session, height - 8, TUNNEL_1);
break;
@ -161,7 +157,7 @@ static void PaintMiniHelicoptersTrack25DegUp(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Stick, MetalSupportPlace::Centre, -9, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Stick, MetalSupportPlace::Centre, -9, height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
@ -179,26 +175,22 @@ static void PaintMiniHelicoptersTrack25DegUpToFlat(
switch (direction)
{
case 0:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_25_DEG_UP_TO_FLAT_SW_NE);
imageId = session.TrackColours.WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_25_DEG_UP_TO_FLAT_SW_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
PaintUtilPushTunnelLeft(session, height - 8, TUNNEL_0);
break;
case 1:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_25_DEG_UP_TO_FLAT_NW_SE);
imageId = session.TrackColours.WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_25_DEG_UP_TO_FLAT_NW_SE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 6, 0, height }, { 20, 32, 3 } });
PaintUtilPushTunnelRight(session, height + 8, TUNNEL_12);
break;
case 2:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_25_DEG_UP_TO_FLAT_NE_SW);
imageId = session.TrackColours.WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_25_DEG_UP_TO_FLAT_NE_SW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
PaintUtilPushTunnelLeft(session, height + 8, TUNNEL_12);
break;
case 3:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_25_DEG_UP_TO_FLAT_SE_NW);
imageId = session.TrackColours.WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_25_DEG_UP_TO_FLAT_SE_NW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 6, 0, height }, { 20, 32, 3 } });
PaintUtilPushTunnelRight(session, height - 8, TUNNEL_0);
break;
@ -207,7 +199,7 @@ static void PaintMiniHelicoptersTrack25DegUpToFlat(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Stick, MetalSupportPlace::Centre, -7, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Stick, MetalSupportPlace::Centre, -7, height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
@ -245,7 +237,7 @@ static void PaintMiniHelicoptersTrackLeftQuarterTurn3Tiles(
const TrackElement& trackElement)
{
TrackPaintUtilLeftQuarterTurn3TilesPaint(
session, 3, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK],
session, 3, height, direction, trackSequence, session.TrackColours,
trackSpritesSubmarineRideMiniHelicoptersQuarterTurn3Tiles);
TrackPaintUtilLeftQuarterTurn3TilesTunnel(session, height, TUNNEL_0, direction, trackSequence);
@ -253,7 +245,7 @@ static void PaintMiniHelicoptersTrackLeftQuarterTurn3Tiles(
{
case 0:
MetalASupportsPaintSetup(
session, MetalSupportType::Stick, MetalSupportPlace::Centre, -1, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Stick, MetalSupportPlace::Centre, -1, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_B4, direction), 0xFFFF, 0);
break;
@ -263,7 +255,7 @@ static void PaintMiniHelicoptersTrackLeftQuarterTurn3Tiles(
break;
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::Stick, MetalSupportPlace::Centre, -1, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Stick, MetalSupportPlace::Centre, -1, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_C8 | SEGMENT_C4 | SEGMENT_D4 | SEGMENT_C0, direction), 0xFFFF, 0);
break;
@ -294,8 +286,7 @@ static void PaintMiniHelicoptersTrackLeftQuarterTurn1Tile(
const TrackElement& trackElement)
{
TrackPaintUtilLeftQuarterTurn1TilePaint(
session, 1, height, 0, direction, session.TrackColours[SCHEME_TRACK],
trackSpritesSubmarineRideMiniHelicoptersQuarterTurn1Tile);
session, 1, height, 0, direction, session.TrackColours, trackSpritesSubmarineRideMiniHelicoptersQuarterTurn1Tile);
TrackPaintUtilLeftQuarterTurn1TileTunnel(session, direction, height, 0, TUNNEL_0, 0, TUNNEL_0);
PaintUtilSetSegmentSupportHeight(
@ -322,8 +313,8 @@ static void PaintMiniHelicoptersTrackSpinningTunnel(
{ SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_SE_NW, 28774 },
};
ImageId imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][0]);
ImageId underlay = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]);
ImageId imageId = session.TrackColours.WithIndex(sprites[direction][0]);
ImageId underlay = session.TrackColours.WithIndex(sprites[direction][1]);
PaintAddImageAsParentRotated(session, direction, underlay, { 0, 6, height - 2 }, { { 0, 6, height }, { 32, 20, 1 } });
PaintAddImageAsChildRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });

View File

@ -164,7 +164,7 @@ static void PaintMonorailCyclesTrackFlat(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(MonorailCyclesTrackPiecesFlat[(direction & 1)]);
auto imageId = session.TrackColours.WithIndex(MonorailCyclesTrackPiecesFlat[(direction & 1)]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 3 } });
if (direction & 1)
@ -178,7 +178,7 @@ static void PaintMonorailCyclesTrackFlat(
MetalASupportsPaintSetup(
session, (direction & 1) ? MetalSupportType::StickAlt : MetalSupportType::Stick, MetalSupportPlace::Centre, -1, height,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
@ -197,7 +197,7 @@ static void PaintMonorailCyclesStation(
imageId = GetStationColourScheme(session, trackElement).WithIndex(SPR_STATION_BASE_B_SW_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height - 2 }, { { 0, 2, height }, { 32, 28, 1 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SprMonorailCyclesFlatSwNe);
imageId = session.TrackColours.WithIndex(SprMonorailCyclesFlatSwNe);
PaintAddImageAsChild(session, imageId, { 0, 0, height }, { { 0, 0, height }, { 32, 20, 1 } });
}
else if (direction == 1 || direction == 3)
@ -205,11 +205,11 @@ static void PaintMonorailCyclesStation(
imageId = GetStationColourScheme(session, trackElement).WithIndex(SPR_STATION_BASE_B_NW_SE);
PaintAddImageAsParent(session, imageId, { 0, 0, height - 2 }, { { 2, 0, height }, { 28, 32, 1 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SprMonorailCyclesFlatNwSe);
imageId = session.TrackColours.WithIndex(SprMonorailCyclesFlatNwSe);
PaintAddImageAsChild(session, imageId, { 0, 0, height }, { { 0, 0, height }, { 20, 32, 1 } });
}
DrawSupportsSideBySide(session, direction, height, session.TrackColours[SCHEME_SUPPORTS], MetalSupportType::Boxed);
DrawSupportsSideBySide(session, direction, height, session.SupportColours, MetalSupportType::Boxed);
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_SQUARE_FLAT);
TrackPaintUtilDrawStation(session, ride, direction, height, trackElement);
@ -224,15 +224,14 @@ static void PaintMonorailCyclesTrackLeftQuarterTurn3Tiles(
const TrackElement& trackElement)
{
TrackPaintUtilLeftQuarterTurn3TilesPaint(
session, 3, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK],
MonorailCyclesTrackPiecesFlatQuarterTurn3Tiles);
session, 3, height, direction, trackSequence, session.TrackColours, MonorailCyclesTrackPiecesFlatQuarterTurn3Tiles);
TrackPaintUtilLeftQuarterTurn3TilesTunnel(session, height, TUNNEL_0, direction, trackSequence);
switch (trackSequence)
{
case 0:
MetalASupportsPaintSetup(
session, MetalSupportType::Stick, MetalSupportPlace::Centre, -1, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Stick, MetalSupportPlace::Centre, -1, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_B4, direction), 0xFFFF, 0);
break;
@ -242,7 +241,7 @@ static void PaintMonorailCyclesTrackLeftQuarterTurn3Tiles(
break;
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::Stick, MetalSupportPlace::Centre, -1, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Stick, MetalSupportPlace::Centre, -1, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_C8 | SEGMENT_C4 | SEGMENT_D4 | SEGMENT_C0, direction), 0xFFFF, 0);
break;
@ -287,9 +286,8 @@ static void PaintMonorailCyclesTrackRightQuarterTurn5Tiles(
const TrackElement& trackElement)
{
TrackPaintUtilRightQuarterTurn5TilesPaint(
session, 1, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK],
MonorailCyclesTrackPiecesFlatQuarterTurn5Tiles, nullptr, defaultRightQuarterTurn5TilesBoundLengths,
defaultRightQuarterTurn5TilesBoundOffsets);
session, 1, height, direction, trackSequence, session.TrackColours, MonorailCyclesTrackPiecesFlatQuarterTurn5Tiles,
nullptr, defaultRightQuarterTurn5TilesBoundLengths, defaultRightQuarterTurn5TilesBoundOffsets);
int32_t supportHeight = height + MonorailCyclesTrackRightQuarterTurn5TilesSupportHeightOffset[direction][trackSequence];
int32_t supportSpecial = MonorailCyclesTrackRightQuarterTurn5TilesSupportSpecial[direction][trackSequence];
@ -298,48 +296,48 @@ static void PaintMonorailCyclesTrackRightQuarterTurn5Tiles(
case 0:
MetalASupportsPaintSetup(
session, (direction & 1) ? MetalSupportType::StickAlt : MetalSupportType::Stick, MetalSupportPlace::Centre,
supportSpecial, supportHeight, session.TrackColours[SCHEME_SUPPORTS]);
supportSpecial, supportHeight, session.SupportColours);
break;
case 2:
if (direction == 0)
MetalASupportsPaintSetup(
session, (direction & 1) ? MetalSupportType::StickAlt : MetalSupportType::Stick,
MetalSupportPlace::BottomRightSide, supportSpecial, supportHeight, session.TrackColours[SCHEME_SUPPORTS]);
MetalSupportPlace::BottomRightSide, supportSpecial, supportHeight, session.SupportColours);
if (direction == 1)
MetalASupportsPaintSetup(
session, (direction & 1) ? MetalSupportType::StickAlt : MetalSupportType::Stick,
MetalSupportPlace::BottomLeftSide, supportSpecial, supportHeight, session.TrackColours[SCHEME_SUPPORTS]);
MetalSupportPlace::BottomLeftSide, supportSpecial, supportHeight, session.SupportColours);
if (direction == 2)
MetalASupportsPaintSetup(
session, (direction & 1) ? MetalSupportType::StickAlt : MetalSupportType::Stick,
MetalSupportPlace::TopLeftSide, supportSpecial, supportHeight, session.TrackColours[SCHEME_SUPPORTS]);
MetalSupportPlace::TopLeftSide, supportSpecial, supportHeight, session.SupportColours);
if (direction == 3)
MetalASupportsPaintSetup(
session, (direction & 1) ? MetalSupportType::StickAlt : MetalSupportType::Stick,
MetalSupportPlace::TopRightSide, supportSpecial, supportHeight, session.TrackColours[SCHEME_SUPPORTS]);
MetalSupportPlace::TopRightSide, supportSpecial, supportHeight, session.SupportColours);
break;
case 5:
if (direction == 0)
MetalASupportsPaintSetup(
session, (direction & 1) ? MetalSupportType::Stick : MetalSupportType::StickAlt,
MetalSupportPlace::BottomLeftSide, supportSpecial, supportHeight, session.TrackColours[SCHEME_SUPPORTS]);
MetalSupportPlace::BottomLeftSide, supportSpecial, supportHeight, session.SupportColours);
if (direction == 1)
MetalASupportsPaintSetup(
session, (direction & 1) ? MetalSupportType::Stick : MetalSupportType::StickAlt,
MetalSupportPlace::TopLeftSide, supportSpecial, supportHeight, session.TrackColours[SCHEME_SUPPORTS]);
MetalSupportPlace::TopLeftSide, supportSpecial, supportHeight, session.SupportColours);
if (direction == 2)
MetalASupportsPaintSetup(
session, (direction & 1) ? MetalSupportType::Stick : MetalSupportType::StickAlt,
MetalSupportPlace::TopRightSide, supportSpecial, supportHeight, session.TrackColours[SCHEME_SUPPORTS]);
MetalSupportPlace::TopRightSide, supportSpecial, supportHeight, session.SupportColours);
if (direction == 3)
MetalASupportsPaintSetup(
session, (direction & 1) ? MetalSupportType::Stick : MetalSupportType::StickAlt,
MetalSupportPlace::BottomRightSide, supportSpecial, supportHeight, session.TrackColours[SCHEME_SUPPORTS]);
MetalSupportPlace::BottomRightSide, supportSpecial, supportHeight, session.SupportColours);
break;
case 6:
MetalASupportsPaintSetup(
session, (direction & 1) ? MetalSupportType::Stick : MetalSupportType::StickAlt, MetalSupportPlace::Centre,
supportSpecial, supportHeight, session.TrackColours[SCHEME_SUPPORTS]);
supportSpecial, supportHeight, session.SupportColours);
break;
}
@ -413,8 +411,7 @@ static void PaintMonorailCyclesTrackSBendLeft(
trackSequence = 3 - trackSequence;
}
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
MonorailCyclesTrackPiecesSBendLeft[direction & 1][trackSequence]);
auto imageId = session.TrackColours.WithIndex(MonorailCyclesTrackPiecesSBendLeft[direction & 1][trackSequence]);
switch (trackSequence)
{
case 0:
@ -442,18 +439,15 @@ static void PaintMonorailCyclesTrackSBendLeft(
{
case 0:
MetalASupportsPaintSetup(
session, MetalSupportType::Stick, MetalSupportPlace::Centre, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Stick, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
case 1:
MetalASupportsPaintSetup(
session, MetalSupportType::Stick, MetalSupportPlace::TopLeftSide, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Stick, MetalSupportPlace::TopLeftSide, 0, height, session.SupportColours);
break;
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::Stick, MetalSupportPlace::Centre, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Stick, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
}
}
@ -468,18 +462,15 @@ static void PaintMonorailCyclesTrackSBendLeft(
{
case 0:
MetalASupportsPaintSetup(
session, MetalSupportType::StickAlt, MetalSupportPlace::Centre, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::StickAlt, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
case 1:
MetalASupportsPaintSetup(
session, MetalSupportType::StickAlt, MetalSupportPlace::TopRightSide, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::StickAlt, MetalSupportPlace::TopRightSide, 0, height, session.SupportColours);
break;
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::StickAlt, MetalSupportPlace::Centre, 0, height - 2,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::StickAlt, MetalSupportPlace::Centre, 0, height - 2, session.SupportColours);
break;
}
}
@ -522,8 +513,7 @@ static void PaintMonorailCyclesTrackSBendRight(
trackSequence = 3 - trackSequence;
}
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
MonorailCyclesTrackPiecesSBendRight[direction & 1][trackSequence]);
auto imageId = session.TrackColours.WithIndex(MonorailCyclesTrackPiecesSBendRight[direction & 1][trackSequence]);
switch (trackSequence)
{
case 0:
@ -551,18 +541,16 @@ static void PaintMonorailCyclesTrackSBendRight(
{
case 0:
MetalASupportsPaintSetup(
session, MetalSupportType::Stick, MetalSupportPlace::Centre, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Stick, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
case 1:
MetalASupportsPaintSetup(
session, MetalSupportType::Stick, MetalSupportPlace::BottomRightSide, 0, height - 2,
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
break;
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::Stick, MetalSupportPlace::Centre, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Stick, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
}
}
@ -577,18 +565,15 @@ static void PaintMonorailCyclesTrackSBendRight(
{
case 0:
MetalASupportsPaintSetup(
session, MetalSupportType::StickAlt, MetalSupportPlace::Centre, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::StickAlt, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
case 1:
MetalASupportsPaintSetup(
session, MetalSupportType::StickAlt, MetalSupportPlace::BottomLeftSide, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::StickAlt, MetalSupportPlace::BottomLeftSide, 0, height, session.SupportColours);
break;
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::StickAlt, MetalSupportPlace::Centre, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::StickAlt, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
}
}

View File

@ -92,21 +92,21 @@ static void PaintObservationTowerBase(
const StationObject* stationObject = ride.GetStationObject();
TrackPaintUtilPaintFloor(session, edges, session.TrackColours[SCHEME_SUPPORTS], height, floorSpritesMetalB, stationObject);
TrackPaintUtilPaintFloor(session, edges, session.SupportColours, height, floorSpritesMetalB, stationObject);
TrackPaintUtilPaintFences(
session, edges, position, trackElement, ride, session.TrackColours[SCHEME_TRACK], height, fenceSpritesMetalB,
session, edges, position, trackElement, ride, session.TrackColours, height, fenceSpritesMetalB,
session.CurrentRotation);
if (trackSequence == 0)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SprObservationTowerSegmentBase);
auto imageId = session.TrackColours.WithIndex(SprObservationTowerSegmentBase);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 8, 8, height + 3 }, { 2, 2, 27 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SprObservationTowerSegment);
imageId = session.TrackColours.WithIndex(SprObservationTowerSegment);
PaintAddImageAsParent(session, imageId, { 0, 0, height + 32 }, { { 8, 8, height + 32 }, { 2, 2, 30 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SprObservationTowerSegment);
imageId = session.TrackColours.WithIndex(SprObservationTowerSegment);
PaintAddImageAsParent(session, imageId, { 0, 0, height + 64 }, { { 8, 8, height + 64 }, { 2, 2, 30 } });
PaintUtilSetVerticalTunnel(session, height + 96);
@ -160,13 +160,13 @@ static void PaintObservationTowerSection(
return;
}
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SprObservationTowerSegment);
auto imageId = session.TrackColours.WithIndex(SprObservationTowerSegment);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 8, 8, height }, { 2, 2, 30 } });
const TileElement* nextTileElement = reinterpret_cast<const TileElement*>(&trackElement) + 1;
if (trackElement.IsLastForTile() || trackElement.GetClearanceZ() != nextTileElement->GetBaseZ())
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SprObservationTowerSegmentTop);
imageId = session.TrackColours.WithIndex(SprObservationTowerSegmentTop);
PaintAddImageAsChild(session, imageId, { 0, 0, height }, { { 8, 8, height }, { 2, 2, 30 } });
}

View File

@ -98,7 +98,7 @@ static void PaintSpaceRings(
WoodenASupportsPaintSetup(session, (direction & 1), 0, height, stationColour);
const StationObject* stationObject = ride.GetStationObject();
TrackPaintUtilPaintFloor(session, edges, session.TrackColours[SCHEME_TRACK], height, floorSpritesCork, stationObject);
TrackPaintUtilPaintFloor(session, edges, session.TrackColours, height, floorSpritesCork, stationObject);
switch (trackSequence)
{

View File

@ -59,13 +59,13 @@ static void SpiralSlidePaintTileRight(
ImageId imageId;
if (direction == 0)
imageId = session.TrackColours[SCHEME_TRACK].WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideRightR0));
imageId = session.TrackColours.WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideRightR0));
else if (direction == 1)
imageId = session.TrackColours[SCHEME_TRACK].WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideRightR1));
imageId = session.TrackColours.WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideRightR1));
else if (direction == 2)
imageId = session.TrackColours[SCHEME_TRACK].WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideRightR2));
imageId = session.TrackColours.WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideRightR2));
else
imageId = session.TrackColours[SCHEME_TRACK].WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideRightR3));
imageId = session.TrackColours.WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideRightR3));
PaintAddImageAsParent(session, imageId, { 16, 16, height }, { { 16, 0, height + 3 }, { 16, 16, 108 } });
}
@ -81,13 +81,13 @@ static void SpiralSlidePaintTileLeft(
ImageId imageId;
if (direction == 0)
imageId = session.TrackColours[SCHEME_TRACK].WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideLeftR0));
imageId = session.TrackColours.WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideLeftR0));
else if (direction == 1)
imageId = session.TrackColours[SCHEME_TRACK].WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideLeftR1));
imageId = session.TrackColours.WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideLeftR1));
else if (direction == 2)
imageId = session.TrackColours[SCHEME_TRACK].WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideLeftR2));
imageId = session.TrackColours.WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideLeftR2));
else
imageId = session.TrackColours[SCHEME_TRACK].WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideLeftR3));
imageId = session.TrackColours.WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideLeftR3));
PaintAddImageAsParent(session, imageId, { 16, 16, height }, { { 0, 16, height + 3 }, { 16, 16, 108 } });
}
@ -104,33 +104,33 @@ static void SpiralSlidePaintTileFront(
if (direction == 1)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideInsideR1));
imageId = session.TrackColours.WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideInsideR1));
PaintAddImageAsParent(session, imageId, { 16, 16, height }, { { -12, 0, height + 3 }, { 2, 16, 108 } });
}
else if (direction == 2)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideInsideR2));
imageId = session.TrackColours.WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideInsideR2));
PaintAddImageAsParent(session, imageId, { 16, 16, height }, { { 0, -12, height + 3 }, { 16, 2, 108 } });
}
if (direction == 0)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideCentreR0));
imageId = session.TrackColours.WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideCentreR0));
PaintAddImageAsParent(session, imageId, { 16, 16, height }, { { 0, 8, height + 3 }, { 16, 8, 108 } });
}
else if (direction == 1)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideCentreR1));
imageId = session.TrackColours.WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideCentreR1));
PaintAddImageAsParent(session, imageId, { 16, 16, height }, { { 14, 0, height + 3 }, { 2, 16, 108 } });
}
else if (direction == 2)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideCentreR2));
imageId = session.TrackColours.WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideCentreR2));
PaintAddImageAsParent(session, imageId, { 16, 16, height }, { { 0, 14, height + 3 }, { 16, 2, 108 } });
}
else if (direction == 3)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideCentreR3));
imageId = session.TrackColours.WithIndex((rideEntry->Cars[0].base_image_id + SpiralSlideCentreR3));
PaintAddImageAsParent(session, imageId, { 16, 16, height }, { { 8, 0, height + 3 }, { 8, 16, 108 } });
}
@ -211,7 +211,7 @@ static void PaintSpiralSlide(
if (stationObject != nullptr && !(stationObject->Flags & STATION_OBJECT_FLAGS::NO_PLATFORMS))
{
auto imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
auto imageId = session.SupportColours.WithIndex(
rideEntry->Cars[0].base_image_id + ((direction & 1) ? SpiralSlideBaseB : SpiralSlideBaseA));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 0, height }, { 32, 32, 1 } });
}
@ -224,8 +224,8 @@ static void PaintSpiralSlide(
};
TrackPaintUtilPaintFences(
session, edges, session.MapPosition, trackElement, ride, session.TrackColours[SCHEME_TRACK], height,
spiral_slide_fence_sprites, session.CurrentRotation);
session, edges, session.MapPosition, trackElement, ride, session.TrackColours, height, spiral_slide_fence_sprites,
session.CurrentRotation);
switch (trackSequence)
{

View File

@ -40,7 +40,7 @@ static void PaintFacility(
BoundBoxXYZ bb = { { direction == 3 ? 28 : 2, direction == 0 ? 28 : 2, height },
{ lengthX, lengthY, trackElement.GetClearanceZ() - trackElement.GetBaseZ() - 3 } };
auto imageTemplate = session.TrackColours[SCHEME_TRACK];
auto imageTemplate = session.TrackColours;
auto imageIndex = firstCarEntry->base_image_id + ((direction + 2) & 3);
auto imageId = imageTemplate.WithIndex(imageIndex);
if (hasSupports)

View File

@ -37,7 +37,7 @@ static void PaintShop(
CoordsXYZ offset(0, 0, height);
BoundBoxXYZ bb = { { 2, 2, height }, { 28, 28, trackElement.GetClearanceZ() - trackElement.GetBaseZ() - 3 } };
auto imageFlags = session.TrackColours[SCHEME_TRACK].WithoutSecondary();
auto imageFlags = session.TrackColours.WithoutSecondary();
auto imageIndex = firstCarEntry->base_image_id + direction;
if (hasSupports)
{

View File

@ -62,7 +62,7 @@ static void Paint3dCinema(
const StationObject* stationObject = ride.GetStationObject();
TrackPaintUtilPaintFloor(session, edges, session.TrackColours[SCHEME_TRACK], height, floorSpritesCork, stationObject);
TrackPaintUtilPaintFloor(session, edges, session.TrackColours, height, floorSpritesCork, stationObject);
TrackPaintUtilPaintFences(
session, edges, session.MapPosition, trackElement, ride, stationColour, height, fenceSpritesRope,

View File

@ -100,10 +100,10 @@ static void PaintEnterprise(
GetStationColourScheme(session, trackElement));
const StationObject* stationObject = ride.GetStationObject();
TrackPaintUtilPaintFloor(session, edges, session.TrackColours[SCHEME_TRACK], height, floorSpritesCork, stationObject);
TrackPaintUtilPaintFloor(session, edges, session.TrackColours, height, floorSpritesCork, stationObject);
TrackPaintUtilPaintFences(
session, edges, session.MapPosition, trackElement, ride, session.TrackColours[SCHEME_TRACK], height, fenceSpritesRope,
session, edges, session.MapPosition, trackElement, ride, session.TrackColours, height, fenceSpritesRope,
session.CurrentRotation);
switch (trackSequence)

View File

@ -132,28 +132,27 @@ static void PaintGoKartsTrackFlat(
ImageId imageId;
if (direction == 0 || direction == 2)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_GO_KARTS_FLAT_SW_NE);
imageId = session.TrackColours.WithIndex(SPR_GO_KARTS_FLAT_SW_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 28, 1 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_GO_KARTS_FLAT_FRONT_SW_NE);
imageId = session.TrackColours.WithIndex(SPR_GO_KARTS_FLAT_FRONT_SW_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 29, height + 2 }, { 32, 1, 3 } });
PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_FLAT);
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_GO_KARTS_FLAT_NW_SE);
imageId = session.TrackColours.WithIndex(SPR_GO_KARTS_FLAT_NW_SE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 2, 0, height }, { 28, 32, 1 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_GO_KARTS_FLAT_FRONT_NW_SE);
imageId = session.TrackColours.WithIndex(SPR_GO_KARTS_FLAT_FRONT_NW_SE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 29, 0, height + 2 }, { 1, 32, 3 } });
PaintUtilPushTunnelRight(session, height, TUNNEL_SQUARE_FLAT);
}
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
@ -167,7 +166,7 @@ static void PaintGoKartsTrack25DegUp(
ImageId imageId;
PaintStruct* ps;
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(go_karts_track_pieces_25_deg_up[direction][0]);
imageId = session.TrackColours.WithIndex(go_karts_track_pieces_25_deg_up[direction][0]);
if (direction == 0 || direction == 2)
{
ps = PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 28, 1 } });
@ -177,7 +176,7 @@ static void PaintGoKartsTrack25DegUp(
ps = PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 2, 0, height }, { 28, 32, 1 } });
}
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(go_karts_track_pieces_25_deg_up[direction][1]);
imageId = session.TrackColours.WithIndex(go_karts_track_pieces_25_deg_up[direction][1]);
if (direction == 0 || direction == 2)
{
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 29, height + 2 }, { 32, 1, 11 } });
@ -190,7 +189,7 @@ static void PaintGoKartsTrack25DegUp(
session.WoodenSupportsPrependTo = ps;
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_SUPPORTS],
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours,
WoodenSupportTransitionType::Up25Deg);
switch (direction)
@ -221,7 +220,7 @@ static void PaintGoKartsTrackFlatTo25DegUp(
ImageId imageId;
PaintStruct* ps;
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(go_karts_track_pieces_flat_to_25_deg_up[direction][0]);
imageId = session.TrackColours.WithIndex(go_karts_track_pieces_flat_to_25_deg_up[direction][0]);
if (direction == 0 || direction == 2)
{
ps = PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 28, 1 } });
@ -231,7 +230,7 @@ static void PaintGoKartsTrackFlatTo25DegUp(
ps = PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 2, 0, height }, { 28, 32, 1 } });
}
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(go_karts_track_pieces_flat_to_25_deg_up[direction][1]);
imageId = session.TrackColours.WithIndex(go_karts_track_pieces_flat_to_25_deg_up[direction][1]);
if (direction == 0 || direction == 2)
{
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 29, height + 2 }, { 32, 1, 11 } });
@ -244,7 +243,7 @@ static void PaintGoKartsTrackFlatTo25DegUp(
session.WoodenSupportsPrependTo = ps;
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_SUPPORTS],
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours,
WoodenSupportTransitionType::FlatToUp25Deg);
switch (direction)
@ -275,7 +274,7 @@ static void PaintGoKartsTrack25DegUpToFlat(
ImageId imageId;
PaintStruct* ps;
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(go_karts_track_pieces_25_deg_up_to_flat[direction][0]);
imageId = session.TrackColours.WithIndex(go_karts_track_pieces_25_deg_up_to_flat[direction][0]);
if (direction == 0 || direction == 2)
{
ps = PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 28, 1 } });
@ -285,7 +284,7 @@ static void PaintGoKartsTrack25DegUpToFlat(
ps = PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 2, 0, height }, { 28, 32, 1 } });
}
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(go_karts_track_pieces_25_deg_up_to_flat[direction][1]);
imageId = session.TrackColours.WithIndex(go_karts_track_pieces_25_deg_up_to_flat[direction][1]);
if (direction == 0 || direction == 2)
{
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 29, height + 2 }, { 32, 1, 11 } });
@ -298,7 +297,7 @@ static void PaintGoKartsTrack25DegUpToFlat(
session.WoodenSupportsPrependTo = ps;
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_SUPPORTS],
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours,
WoodenSupportTransitionType::Up25DegToFlat);
switch (direction)
@ -362,7 +361,7 @@ static void PaintGoKartsStation(
sprites = go_karts_track_pieces_starting_grid_end;
}
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][0]);
imageId = session.TrackColours.WithIndex(sprites[direction][0]);
if (direction == 0 || direction == 2)
{
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 28, 1 } });
@ -384,7 +383,7 @@ static void PaintGoKartsStation(
TrackPaintUtilDrawStationCovers(session, EDGE_NE, hasFence, stationObj, height, stationColour);
}
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]);
imageId = session.TrackColours.WithIndex(sprites[direction][1]);
if (direction == 0 || direction == 2)
{
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 29, height + 2 }, { 32, 1, 3 } });
@ -416,34 +415,34 @@ static void PaintGoKartsStation(
switch (direction)
{
case 0:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
imageId = session.TrackColours.WithIndex(
(hasGreenLight ? SPR_GO_KARTS_START_POLE_GREEN_SW_NE : SPR_GO_KARTS_START_POLE_RED_SW_NE));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 1, 1, height + 4 }, { 3, 3, 13 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
imageId = session.TrackColours.WithIndex(
(hasGreenLight ? SPR_GO_KARTS_START_LIGHTS_GREEN_SW_NE : SPR_GO_KARTS_START_LIGHTS_RED_SW_NE));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 1, 28, height + 4 }, { 3, 3, 13 } });
break;
case 1:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_GO_KARTS_START_POLE_NW_SE);
imageId = session.TrackColours.WithIndex(SPR_GO_KARTS_START_POLE_NW_SE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 1, 28, height + 4 }, { 3, 3, 13 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_GO_KARTS_START_LIGHTS_NW_SE);
imageId = session.TrackColours.WithIndex(SPR_GO_KARTS_START_LIGHTS_NW_SE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 28, 28, height + 4 }, { 3, 3, 13 } });
break;
case 2:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_GO_KARTS_START_POLE_NE_SW);
imageId = session.TrackColours.WithIndex(SPR_GO_KARTS_START_POLE_NE_SW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 28, 1, height + 4 }, { 3, 3, 13 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_GO_KARTS_START_LIGHTS_NE_SW);
imageId = session.TrackColours.WithIndex(SPR_GO_KARTS_START_LIGHTS_NE_SW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 28, 28, height + 4 }, { 3, 3, 13 } });
break;
case 3:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
imageId = session.TrackColours.WithIndex(
(hasGreenLight ? SPR_GO_KARTS_START_POLE_GREEN_SE_NW : SPR_GO_KARTS_START_POLE_RED_SE_NW));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 1, 1, height + 4 }, { 3, 3, 13 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
imageId = session.TrackColours.WithIndex(
(hasGreenLight ? SPR_GO_KARTS_START_LIGHTS_GREEN_SE_NW : SPR_GO_KARTS_START_LIGHTS_RED_SE_NW));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 28, 1, height + 4 }, { 3, 3, 13 } });
break;
@ -451,8 +450,7 @@ static void PaintGoKartsStation(
}
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
@ -468,40 +466,40 @@ static void PaintGoKartsTrackLeftQuarterTurn1Tile(
switch (direction)
{
case 0:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_GO_KARTS_FLAT_QUARTER_TURN_1_TILE_NW_NE);
imageId = session.TrackColours.WithIndex(SPR_GO_KARTS_FLAT_QUARTER_TURN_1_TILE_NW_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 28, 1 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_GO_KARTS_FLAT_QUARTER_TURN_1_TILE_EDGE_A_NW_NE);
imageId = session.TrackColours.WithIndex(SPR_GO_KARTS_FLAT_QUARTER_TURN_1_TILE_EDGE_A_NW_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 29, 2, height + 2 }, { 1, 1, 3 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_GO_KARTS_FLAT_QUARTER_TURN_1_TILE_EDGE_B_NW_NE);
imageId = session.TrackColours.WithIndex(SPR_GO_KARTS_FLAT_QUARTER_TURN_1_TILE_EDGE_B_NW_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 14, 29, height + 2 }, { 16, 1, 3 } });
break;
case 1:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_GO_KARTS_FLAT_QUARTER_TURN_1_TILE_NE_SE);
imageId = session.TrackColours.WithIndex(SPR_GO_KARTS_FLAT_QUARTER_TURN_1_TILE_NE_SE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 0, height }, { 30, 30, 1 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_GO_KARTS_FLAT_QUARTER_TURN_1_TILE_EDGE_A_NE_SE);
imageId = session.TrackColours.WithIndex(SPR_GO_KARTS_FLAT_QUARTER_TURN_1_TILE_EDGE_A_NE_SE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 2, 29, height + 2 }, { 16, 1, 3 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_GO_KARTS_FLAT_QUARTER_TURN_1_TILE_EDGE_B_NE_SE);
imageId = session.TrackColours.WithIndex(SPR_GO_KARTS_FLAT_QUARTER_TURN_1_TILE_EDGE_B_NE_SE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 29, 2, height + 2 }, { 1, 16, 3 } });
break;
case 2:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_GO_KARTS_FLAT_QUARTER_TURN_1_TILE_SE_SW);
imageId = session.TrackColours.WithIndex(SPR_GO_KARTS_FLAT_QUARTER_TURN_1_TILE_SE_SW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 2, 0, height }, { 28, 32, 1 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_GO_KARTS_FLAT_QUARTER_TURN_1_TILE_EDGE_A_SE_SW);
imageId = session.TrackColours.WithIndex(SPR_GO_KARTS_FLAT_QUARTER_TURN_1_TILE_EDGE_A_SE_SW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 2, 2, height + 2 }, { 1, 1, 3 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_GO_KARTS_FLAT_QUARTER_TURN_1_TILE_EDGE_B_SE_SW);
imageId = session.TrackColours.WithIndex(SPR_GO_KARTS_FLAT_QUARTER_TURN_1_TILE_EDGE_B_SE_SW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 29, 14, height + 2 }, { 1, 16, 3 } });
break;
case 3:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_GO_KARTS_FLAT_QUARTER_TURN_1_TILE_SW_NW);
imageId = session.TrackColours.WithIndex(SPR_GO_KARTS_FLAT_QUARTER_TURN_1_TILE_SW_NW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 0, height }, { 32, 32, 1 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_GO_KARTS_FLAT_QUARTER_TURN_1_TILE_EDGE_A_SW_NW);
imageId = session.TrackColours.WithIndex(SPR_GO_KARTS_FLAT_QUARTER_TURN_1_TILE_EDGE_A_SW_NW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 29, 29, height + 2 }, { 1, 1, 3 } });
// The empty sprite isn't drawn
@ -523,8 +521,7 @@ static void PaintGoKartsTrackLeftQuarterTurn1Tile(
}
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);

View File

@ -101,23 +101,23 @@ static void PaintLaunchedFreefallBase(
const StationObject* stationObject = ride.GetStationObject();
TrackPaintUtilPaintFloor(session, edges, session.TrackColours[SCHEME_SUPPORTS], height, floorSpritesMetal, stationObject);
TrackPaintUtilPaintFloor(session, edges, session.SupportColours, height, floorSpritesMetal, stationObject);
TrackPaintUtilPaintFences(
session, edges, session.MapPosition, trackElement, ride, session.TrackColours[SCHEME_TRACK], height, fenceSpritesMetal,
session, edges, session.MapPosition, trackElement, ride, session.TrackColours, height, fenceSpritesMetal,
session.CurrentRotation);
if (trackSequence == 0)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_LAUNCHED_FREEFALL_TOWER_BASE);
auto imageId = session.TrackColours.WithIndex(SPR_LAUNCHED_FREEFALL_TOWER_BASE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 8, 8, height + 3 }, { 2, 2, 27 } });
height += 32;
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_LAUNCHED_FREEFALL_TOWER_SEGMENT);
imageId = session.TrackColours.WithIndex(SPR_LAUNCHED_FREEFALL_TOWER_SEGMENT);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 8, 8, height }, { 2, 2, 30 } });
height += 32;
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_LAUNCHED_FREEFALL_TOWER_SEGMENT);
imageId = session.TrackColours.WithIndex(SPR_LAUNCHED_FREEFALL_TOWER_SEGMENT);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 8, 8, height }, { 2, 2, 30 } });
PaintUtilSetVerticalTunnel(session, height + 32);
@ -171,13 +171,13 @@ static void PaintLaunchedFreefallTowerSection(
return;
}
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_LAUNCHED_FREEFALL_TOWER_SEGMENT);
auto imageId = session.TrackColours.WithIndex(SPR_LAUNCHED_FREEFALL_TOWER_SEGMENT);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 8, 8, height }, { 2, 2, 30 } });
const TileElement* nextTileElement = reinterpret_cast<const TileElement*>(&trackElement) + 1;
if (trackElement.IsLastForTile() || trackElement.GetClearanceZ() != nextTileElement->GetBaseZ())
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_LAUNCHED_FREEFALL_TOWER_SEGMENT_TOP);
imageId = session.TrackColours.WithIndex(SPR_LAUNCHED_FREEFALL_TOWER_SEGMENT_TOP);
PaintAddImageAsChild(session, imageId, { 0, 0, height }, { { 8, 8, height }, { 2, 2, 30 } });
}

View File

@ -117,7 +117,7 @@ static void PaintMagicCarpetFrame(
PaintSession& session, Plane plane, Direction direction, const CoordsXYZ& offset, const BoundBoxXYZ& bb)
{
auto imageIndex = GetMagicCarpetFrameImage(plane, direction);
auto imageTemplate = session.TrackColours[SCHEME_TRACK];
auto imageTemplate = session.TrackColours;
auto imageId = imageTemplate.WithIndex(imageIndex);
if (plane == Plane::Back)
{
@ -133,7 +133,7 @@ static void PaintMagicCarpetPendulum(
PaintSession& session, Plane plane, int32_t swing, Direction direction, const CoordsXYZ& offset, const BoundBoxXYZ& bb)
{
auto imageIndex = GetMagicCarpetPendulumImage(plane, direction, swing);
auto imageTemplate = session.TrackColours[SCHEME_TRACK];
auto imageTemplate = session.TrackColours;
auto imageId = imageTemplate.WithIndex(imageIndex);
PaintAddImageAsChild(session, imageId, offset, bb);
}
@ -223,26 +223,22 @@ static void PaintMagicCarpet(
if (direction & 1)
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::TopRightSide, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::TopRightSide, 0, height, session.SupportColours);
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::BottomLeftSide, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::BottomLeftSide, 0, height, session.SupportColours);
}
else
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::TopLeftSide, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::TopLeftSide, 0, height, session.SupportColours);
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::BottomRightSide, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::BottomRightSide, 0, height, session.SupportColours);
}
const StationObject* stationObject = ride.GetStationObject();
if (stationObject != nullptr && !(stationObject->Flags & STATION_OBJECT_FLAGS::NO_PLATFORMS))
{
auto imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_BASE_D);
auto imageId = session.SupportColours.WithIndex(SPR_STATION_BASE_D);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { 32, 32, 1 });
}
break;

View File

@ -114,11 +114,11 @@ static void PaintMotionSimulator(
const StationObject* stationObject = ride.GetStationObject();
TrackPaintUtilPaintFloor(session, edges, session.TrackColours[SCHEME_TRACK], height, floorSpritesCork, stationObject);
TrackPaintUtilPaintFloor(session, edges, session.TrackColours, height, floorSpritesCork, stationObject);
TrackPaintUtilPaintFences(
session, edges, session.MapPosition, trackElement, ride, session.TrackColours[SCHEME_SUPPORTS], height,
fenceSpritesRope, session.CurrentRotation);
session, edges, session.MapPosition, trackElement, ride, session.SupportColours, height, fenceSpritesRope,
session.CurrentRotation);
switch (trackSequence)
{

View File

@ -113,23 +113,23 @@ static void PaintRotoDropBase(
const StationObject* stationObject = ride.GetStationObject();
TrackPaintUtilPaintFloor(session, edges, session.TrackColours[SCHEME_SUPPORTS], height, floorSpritesMetalB, stationObject);
TrackPaintUtilPaintFloor(session, edges, session.SupportColours, height, floorSpritesMetalB, stationObject);
TrackPaintUtilPaintFences(
session, edges, session.MapPosition, trackElement, ride, session.TrackColours[SCHEME_TRACK], height, fenceSpritesMetalB,
session, edges, session.MapPosition, trackElement, ride, session.TrackColours, height, fenceSpritesMetalB,
session.CurrentRotation);
if (trackSequence == 0)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
auto imageId = session.TrackColours.WithIndex(
(direction & 1 ? SPR_ROTO_DROP_TOWER_BASE_90_DEG : SPR_ROTO_DROP_TOWER_BASE));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 8, 8, height + 3 }, { 2, 2, 27 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
imageId = session.TrackColours.WithIndex(
(direction & 1 ? SPR_ROTO_DROP_TOWER_BASE_SEGMENT_90_DEG : SPR_ROTO_DROP_TOWER_BASE_SEGMENT));
PaintAddImageAsParent(session, imageId, { 0, 0, height + 32 }, { { 8, 8, height + 32 }, { 2, 2, 30 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
imageId = session.TrackColours.WithIndex(
(direction & 1 ? SPR_ROTO_DROP_TOWER_BASE_SEGMENT_90_DEG : SPR_ROTO_DROP_TOWER_BASE_SEGMENT));
PaintAddImageAsParent(session, imageId, { 0, 0, height + 64 }, { { 8, 8, height + 64 }, { 2, 2, 30 } });
@ -184,7 +184,7 @@ static void PaintRotoDropTowerSection(
return;
}
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_ROTO_DROP_TOWER_SEGMENT);
auto imageId = session.TrackColours.WithIndex(SPR_ROTO_DROP_TOWER_SEGMENT);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 8, 8, height }, { 2, 2, 30 } });
// The top segment of the Roto drop is only drawn when there is no tile element right above it
@ -198,7 +198,7 @@ static void PaintRotoDropTowerSection(
if (paintTopSegment)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_ROTO_DROP_TOWER_SEGMENT_TOP);
imageId = session.TrackColours.WithIndex(SPR_ROTO_DROP_TOWER_SEGMENT_TOP);
PaintAddImageAsChild(session, imageId, { 0, 0, height }, { { 8, 8, height }, { 2, 2, 30 } });
}

View File

@ -104,7 +104,7 @@ static void PaintSwingingInverterShipStructure(
{
vehicleImageTemplate = stationColour;
}
auto frameImageTemplate = session.TrackColours[SCHEME_TRACK];
auto frameImageTemplate = session.TrackColours;
auto vehicleImageId = vehicleImageTemplate.WithIndex(vehicleImageIndex);
auto frameImageId = frameImageTemplate.WithIndex(SwingingInverterShipFrameSprites[direction]);
@ -137,43 +137,39 @@ static void PaintSwingingInverterShip(
if (direction & 1)
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::TopRightSide, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::TopRightSide, 0, height, session.SupportColours);
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::BottomLeftSide, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::BottomLeftSide, 0, height, session.SupportColours);
}
else
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::TopLeftSide, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::TopLeftSide, 0, height, session.SupportColours);
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::BottomRightSide, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::BottomRightSide, 0, height, session.SupportColours);
}
if (stationObject != nullptr && !(stationObject->Flags & STATION_OBJECT_FLAGS::NO_PLATFORMS))
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_BASE_D);
imageId = session.SupportColours.WithIndex(SPR_STATION_BASE_D);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { 32, 32, 1 });
switch (direction)
{
case 0:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_STATION_PLATFORM_SW_NE);
imageId = session.TrackColours.WithIndex(SPR_STATION_PLATFORM_SW_NE);
PaintAddImageAsParent(session, imageId, { 0, 24, height + 9 }, { 32, 8, 1 });
break;
case 1:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_STATION_PLATFORM_NW_SE);
imageId = session.TrackColours.WithIndex(SPR_STATION_PLATFORM_NW_SE);
PaintAddImageAsParent(session, imageId, { 24, 0, height + 9 }, { 8, 32, 1 });
break;
case 2:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_STATION_PLATFORM_SW_NE);
imageId = session.TrackColours.WithIndex(SPR_STATION_PLATFORM_SW_NE);
PaintAddImageAsChild(session, imageId, { 0, 0, height + 9 }, { { -2, 0, height }, { 32, 8, 1 } });
break;
case 3:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_STATION_PLATFORM_NW_SE);
imageId = session.TrackColours.WithIndex(SPR_STATION_PLATFORM_NW_SE);
PaintAddImageAsChild(session, imageId, { 0, 0, height + 9 }, { { 0, -2, height }, { 8, 32, 1 } });
break;
}

View File

@ -121,7 +121,7 @@ static void PaintSwingingShipStructure(
}
}
auto supportsImageTemplate = session.TrackColours[SCHEME_TRACK];
auto supportsImageTemplate = session.TrackColours;
auto vehicleImageTemplate = ImageId(0, ride.vehicle_colours[0].Body, ride.vehicle_colours[0].Trim);
if (stationColour != TrackStationColour)
{
@ -163,35 +163,31 @@ static void PaintSwingingShip(
if (relativeTrackSequence == 1 || relativeTrackSequence == 4)
{
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours);
}
else if (direction & 1)
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::TopRightSide, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::TopRightSide, 0, height, session.SupportColours);
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::BottomLeftSide, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::BottomLeftSide, 0, height, session.SupportColours);
if (stationObject != nullptr && !(stationObject->Flags & STATION_OBJECT_FLAGS::NO_PLATFORMS))
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_BASE_A_NW_SE);
imageId = session.SupportColours.WithIndex(SPR_STATION_BASE_A_NW_SE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { 32, 32, 1 });
}
}
else
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::TopLeftSide, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::TopLeftSide, 0, height, session.SupportColours);
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::BottomRightSide, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::BottomRightSide, 0, height, session.SupportColours);
if (stationObject != nullptr && !(stationObject->Flags & STATION_OBJECT_FLAGS::NO_PLATFORMS))
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_STATION_BASE_A_SW_NE);
imageId = session.SupportColours.WithIndex(SPR_STATION_BASE_A_SW_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { 32, 32, 1 });
}
}
@ -207,17 +203,17 @@ static void PaintSwingingShip(
hasFence = TrackPaintUtilHasFence(EDGE_NE, session.MapPosition, trackElement, ride, session.CurrentRotation);
if (relativeTrackSequence == 2)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
imageId = session.TrackColours.WithIndex(
(hasFence ? SPR_STATION_PLATFORM_BEGIN_FENCED_NW_SE : SPR_STATION_PLATFORM_BEGIN_NW_SE));
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
imageId = session.TrackColours.WithIndex(
(hasFence ? SPR_STATION_PLATFORM_FENCED_NW_SE : SPR_STATION_PLATFORM_NW_SE));
}
PaintAddImageAsChild(session, imageId, { 0, 0, height + 9 }, { { 0, -2, height + 9 }, { 8, 32, 1 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
imageId = session.TrackColours.WithIndex(
(relativeTrackSequence == 2 ? SPR_STATION_PLATFORM_BEGIN_NW_SE : SPR_STATION_PLATFORM_NW_SE));
PaintAddImageAsParent(session, imageId, { 24, 0, height + 9 }, { 8, 32, 1 });
@ -226,21 +222,21 @@ static void PaintSwingingShip(
{
if (hasFence)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_STATION_BEGIN_ANGLE_FENCE_NW_SE);
imageId = session.TrackColours.WithIndex(SPR_STATION_BEGIN_ANGLE_FENCE_NW_SE);
PaintAddImageAsParent(session, imageId, { 31, 0, height + 11 }, { 1, 32, 7 });
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_STATION_FENCE_SMALL_SW_NE);
imageId = session.TrackColours.WithIndex(SPR_STATION_FENCE_SMALL_SW_NE);
PaintAddImageAsParent(session, imageId, { 23, 31, height + 11 }, { 8, 1, 7 });
}
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_STATION_FENCE_SMALL_SW_NE);
imageId = session.TrackColours.WithIndex(SPR_STATION_FENCE_SMALL_SW_NE);
PaintAddImageAsParent(session, imageId, { 0, 31, height + 11 }, { 8, 1, 7 });
}
else if (hasFence)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_STATION_FENCE_NW_SE);
imageId = session.TrackColours.WithIndex(SPR_STATION_FENCE_NW_SE);
PaintAddImageAsParent(session, imageId, { 31, 0, height + 11 }, { 1, 32, 7 });
}
}
@ -252,17 +248,17 @@ static void PaintSwingingShip(
hasFence = TrackPaintUtilHasFence(EDGE_NW, session.MapPosition, trackElement, ride, session.CurrentRotation);
if (relativeTrackSequence == 2)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
imageId = session.TrackColours.WithIndex(
(hasFence ? SPR_STATION_PLATFORM_BEGIN_FENCED_SW_NE : SPR_STATION_PLATFORM_BEGIN_SW_NE));
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
imageId = session.TrackColours.WithIndex(
(hasFence ? SPR_STATION_PLATFORM_FENCED_SW_NE : SPR_STATION_PLATFORM_SW_NE));
}
PaintAddImageAsChild(session, imageId, { 0, 0, height + 9 }, { { -2, 0, height + 9 }, { 32, 8, 1 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
imageId = session.TrackColours.WithIndex(
(relativeTrackSequence == 2 ? SPR_STATION_PLATFORM_BEGIN_SW_NE : SPR_STATION_PLATFORM_SW_NE));
PaintAddImageAsParent(session, imageId, { 0, 24, height + 9 }, { 32, 8, 1 });
@ -271,21 +267,21 @@ static void PaintSwingingShip(
{
if (hasFence)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_STATION_BEGIN_ANGLE_FENCE_SW_NE);
imageId = session.TrackColours.WithIndex(SPR_STATION_BEGIN_ANGLE_FENCE_SW_NE);
PaintAddImageAsParent(session, imageId, { 0, 31, height + 11 }, { 32, 1, 7 });
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_STATION_FENCE_SMALL_NW_SE);
imageId = session.TrackColours.WithIndex(SPR_STATION_FENCE_SMALL_NW_SE);
PaintAddImageAsParent(session, imageId, { 31, 23, height + 11 }, { 1, 8, 7 });
}
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_STATION_FENCE_SMALL_NW_SE);
imageId = session.TrackColours.WithIndex(SPR_STATION_FENCE_SMALL_NW_SE);
PaintAddImageAsParent(session, imageId, { 31, 0, height + 11 }, { 1, 8, 7 });
}
else if (hasFence)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_STATION_FENCE_SW_NE);
imageId = session.TrackColours.WithIndex(SPR_STATION_FENCE_SW_NE);
PaintAddImageAsParent(session, imageId, { 0, 31, height + 11 }, { 32, 1, 7 });
}
}

View File

@ -192,7 +192,7 @@ static void PaintTopSpin(
const StationObject* stationObject = ride.GetStationObject();
TrackPaintUtilPaintFloor(session, edges, session.TrackColours[SCHEME_TRACK], height, floorSpritesCork, stationObject);
TrackPaintUtilPaintFloor(session, edges, session.TrackColours, height, floorSpritesCork, stationObject);
TrackPaintUtilPaintFences(
session, edges, session.MapPosition, trackElement, ride, stationColour, height, fenceSpritesRope,

View File

@ -89,8 +89,7 @@ static void ChairliftPaintUtilDrawSupports(PaintSession& session, int32_t segmen
}
if (MetalASupportsPaintSetup(
session, MetalSupportType::Truss, static_cast<MetalSupportPlace>(s), 0, height,
session.TrackColours[SCHEME_SUPPORTS]))
session, MetalSupportType::Truss, static_cast<MetalSupportPlace>(s), 0, height, session.SupportColours))
{
success = true;
}
@ -111,8 +110,7 @@ static void ChairliftPaintUtilDrawSupports(PaintSession& session, int32_t segmen
uint16_t temp = supportSegments[s].height;
supportSegments[s].height = session.Support.height;
MetalASupportsPaintSetup(
session, MetalSupportType::Truss, static_cast<MetalSupportPlace>(s), 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Truss, static_cast<MetalSupportPlace>(s), 0, height, session.SupportColours);
supportSegments[s].height = temp;
}
}
@ -198,31 +196,31 @@ static void ChairliftPaintStationNeSw(
if (!isStart && !isEnd)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(((direction == 0) ? SPR_20502 : SPR_20504));
imageId = session.TrackColours.WithIndex(((direction == 0) ? SPR_20502 : SPR_20504));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 13, height + 28 }, { 32, 6, 2 } });
}
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_FLOOR_METAL);
imageId = session.SupportColours.WithIndex(SPR_FLOOR_METAL);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 0, height }, { 32, 32, 1 } });
bool hasFence = TrackPaintUtilHasFence(EDGE_NW, pos, trackElement, ride, session.CurrentRotation);
if (hasFence)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_FENCE_METAL_NW);
imageId = session.TrackColours.WithIndex(SPR_FENCE_METAL_NW);
PaintAddImageAsChild(session, imageId, { 0, 0, height }, { { 0, 2, height + 2 }, { 32, 1, 7 } });
}
TrackPaintUtilDrawStationCovers(session, EDGE_NW, hasFence, stationObj, height, stationColour);
if ((direction == 2 && isStart) || (direction == 0 && isEnd))
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_FENCE_METAL_NE);
imageId = session.TrackColours.WithIndex(SPR_FENCE_METAL_NE);
PaintAddImageAsChild(session, imageId, { 0, 0, height }, { { 2, 2, height + 4 }, { 1, 28, 7 } });
}
hasFence = TrackPaintUtilHasFence(EDGE_SE, pos, trackElement, ride, session.CurrentRotation);
if (hasFence)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_FENCE_METAL_SE);
imageId = session.TrackColours.WithIndex(SPR_FENCE_METAL_SE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 30, height + 2 }, { 32, 1, 27 } });
}
TrackPaintUtilDrawStationCovers(session, EDGE_SE, hasFence, stationObj, height, stationColour);
@ -231,25 +229,23 @@ static void ChairliftPaintStationNeSw(
bool drawBackColumn = true;
if ((direction == 0 && isStart) || (direction == 2 && isEnd))
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_FENCE_METAL_SW);
imageId = session.TrackColours.WithIndex(SPR_FENCE_METAL_SW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 30, 2, height + 4 }, { 1, 28, 27 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
chairlift_bullwheel_frames[ride.chairlift_bullwheel_rotation / 16384]);
imageId = session.TrackColours.WithIndex(chairlift_bullwheel_frames[ride.chairlift_bullwheel_rotation / 16384]);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 14, 14, height + 4 }, { 4, 4, 26 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_CHAIRLIFT_STATION_END_CAP_NE);
imageId = session.TrackColours.WithIndex(SPR_CHAIRLIFT_STATION_END_CAP_NE);
PaintAddImageAsChild(session, imageId, { 0, 0, height }, { { 14, 14, height + 4 }, { 4, 4, 26 } });
drawFrontColumn = false;
}
else if ((direction == 2 && isStart) || (direction == 0 && isEnd))
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
chairlift_bullwheel_frames[ride.chairlift_bullwheel_rotation / 16384]);
imageId = session.TrackColours.WithIndex(chairlift_bullwheel_frames[ride.chairlift_bullwheel_rotation / 16384]);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 14, 14, height + 4 }, { 4, 4, 26 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_CHAIRLIFT_STATION_END_CAP_SW);
imageId = session.TrackColours.WithIndex(SPR_CHAIRLIFT_STATION_END_CAP_SW);
PaintAddImageAsChild(session, imageId, { 0, 0, height }, { { 14, 14, height + 4 }, { 4, 4, 26 } });
drawBackColumn = false;
@ -257,13 +253,13 @@ static void ChairliftPaintStationNeSw(
if (drawBackColumn)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_CHAIRLIFT_STATION_COLUMN_NE_SW);
imageId = session.TrackColours.WithIndex(SPR_CHAIRLIFT_STATION_COLUMN_NE_SW);
PaintAddImageAsParent(session, imageId, { 0, 16, height + 2 }, { { 1, 16, height + 2 }, { 1, 1, 7 } });
}
if (drawFrontColumn)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_CHAIRLIFT_STATION_COLUMN_NE_SW);
imageId = session.TrackColours.WithIndex(SPR_CHAIRLIFT_STATION_COLUMN_NE_SW);
PaintAddImageAsParent(
session, imageId, { 30, 16, height + 2 }, { { 1, 16, height + 2 }, { 1, 1, 7 } }); // bound offset x is wrong?
}
@ -291,31 +287,31 @@ static void ChairliftPaintStationSeNw(
if (!isStart && !isEnd)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(((direction == 1) ? SPR_20503 : SPR_20505));
imageId = session.TrackColours.WithIndex(((direction == 1) ? SPR_20503 : SPR_20505));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 13, 0, height + 28 }, { 6, 32, 2 } });
}
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_FLOOR_METAL);
imageId = session.SupportColours.WithIndex(SPR_FLOOR_METAL);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 0, height }, { 32, 32, 1 } });
bool hasFence = TrackPaintUtilHasFence(EDGE_NE, pos, trackElement, ride, session.CurrentRotation);
if (hasFence)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_FENCE_METAL_NE);
imageId = session.TrackColours.WithIndex(SPR_FENCE_METAL_NE);
PaintAddImageAsChild(session, imageId, { 0, 0, height }, { { 2, 0, height + 2 }, { 1, 32, 7 } });
}
TrackPaintUtilDrawStationCovers(session, EDGE_NE, hasFence, stationObj, height, stationColour);
if ((direction == 1 && isStart) || (direction == 3 && isEnd))
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_FENCE_METAL_NW);
imageId = session.TrackColours.WithIndex(SPR_FENCE_METAL_NW);
PaintAddImageAsChild(session, imageId, { 0, 0, height }, { { 2, 2, height + 4 }, { 28, 1, 7 } });
}
hasFence = TrackPaintUtilHasFence(EDGE_SW, pos, trackElement, ride, session.CurrentRotation);
if (hasFence)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_FENCE_METAL_SW);
imageId = session.TrackColours.WithIndex(SPR_FENCE_METAL_SW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 30, 0, height + 2 }, { 1, 32, 27 } });
}
TrackPaintUtilDrawStationCovers(session, EDGE_SW, hasFence, stationObj, height, stationColour);
@ -324,27 +320,25 @@ static void ChairliftPaintStationSeNw(
bool drawLeftColumn = true;
if ((direction == 1 && isStart) || (direction == 3 && isEnd))
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
chairlift_bullwheel_frames[ride.chairlift_bullwheel_rotation / 16384]);
imageId = session.TrackColours.WithIndex(chairlift_bullwheel_frames[ride.chairlift_bullwheel_rotation / 16384]);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 14, 14, height + 4 }, { 4, 4, 26 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_CHAIRLIFT_STATION_END_CAP_SE);
imageId = session.TrackColours.WithIndex(SPR_CHAIRLIFT_STATION_END_CAP_SE);
PaintAddImageAsChild(session, imageId, { 0, 0, height }, { { 14, 14, height + 4 }, { 4, 4, 26 } });
drawLeftColumn = false;
}
else if ((direction == 3 && isStart) || (direction == 1 && isEnd))
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_FENCE_METAL_SE);
imageId = session.TrackColours.WithIndex(SPR_FENCE_METAL_SE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 2, 30, height + 4 }, { 28, 1, 27 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
chairlift_bullwheel_frames[ride.chairlift_bullwheel_rotation / 16384]);
imageId = session.TrackColours.WithIndex(chairlift_bullwheel_frames[ride.chairlift_bullwheel_rotation / 16384]);
auto bb = BoundBoxXYZ{ { 14, 14, height + 4 }, { 4, 4, 26 } };
PaintAddImageAsParent(session, imageId, { 0, 0, height }, bb);
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_CHAIRLIFT_STATION_END_CAP_NW);
imageId = session.TrackColours.WithIndex(SPR_CHAIRLIFT_STATION_END_CAP_NW);
PaintAddImageAsChild(session, imageId, { 0, 0, height }, bb);
drawRightColumn = false;
@ -352,13 +346,13 @@ static void ChairliftPaintStationSeNw(
if (drawLeftColumn)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_CHAIRLIFT_STATION_COLUMN_SE_NW);
imageId = session.TrackColours.WithIndex(SPR_CHAIRLIFT_STATION_COLUMN_SE_NW);
PaintAddImageAsParent(session, imageId, { 16, 0, height + 2 }, { { 16, 1, height + 2 }, { 1, 1, 7 } });
}
if (drawRightColumn)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_CHAIRLIFT_STATION_COLUMN_SE_NW);
imageId = session.TrackColours.WithIndex(SPR_CHAIRLIFT_STATION_COLUMN_SE_NW);
PaintAddImageAsParent(
session, imageId, { 16, 30, height + 2 }, { { 16, 1, height + 2 }, { 1, 1, 7 } }); // bound offset x is wrong?
@ -391,13 +385,13 @@ static void ChairliftPaintFlat(
ImageId imageId;
if (direction & 1)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_CHAIRLIFT_CABLE_FLAT_SE_NW);
imageId = session.TrackColours.WithIndex(SPR_CHAIRLIFT_CABLE_FLAT_SE_NW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 13, 0, height + 28 }, { 6, 32, 2 } });
PaintUtilPushTunnelRight(session, height, TUNNEL_SQUARE_FLAT);
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_CHAIRLIFT_CABLE_FLAT_SW_NE);
imageId = session.TrackColours.WithIndex(SPR_CHAIRLIFT_CABLE_FLAT_SW_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 13, height + 28 }, { 32, 6, 2 } });
PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_FLAT);
}
@ -416,25 +410,25 @@ static void ChairliftPaint25DegUp(
switch (direction)
{
case 0:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_CHAIRLIFT_CABLE_UP_SW_NE);
imageId = session.TrackColours.WithIndex(SPR_CHAIRLIFT_CABLE_UP_SW_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 13, height + 28 }, { 32, 6, 2 } });
PaintUtilPushTunnelLeft(session, height - 8, TUNNEL_SQUARE_7);
break;
case 1:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_CHAIRLIFT_CABLE_UP_NW_SE);
imageId = session.TrackColours.WithIndex(SPR_CHAIRLIFT_CABLE_UP_NW_SE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 13, 0, height + 28 }, { 6, 32, 2 } });
PaintUtilPushTunnelRight(session, height + 8, TUNNEL_SQUARE_8);
break;
case 2:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_CHAIRLIFT_CABLE_UP_NE_SW);
imageId = session.TrackColours.WithIndex(SPR_CHAIRLIFT_CABLE_UP_NE_SW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 13, height + 28 }, { 32, 6, 2 } });
PaintUtilPushTunnelLeft(session, height + 8, TUNNEL_SQUARE_8);
break;
case 3:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_CHAIRLIFT_CABLE_UP_SE_NW);
imageId = session.TrackColours.WithIndex(SPR_CHAIRLIFT_CABLE_UP_SE_NW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 13, 0, height + 28 }, { 6, 32, 2 } });
PaintUtilPushTunnelRight(session, height - 8, TUNNEL_SQUARE_7);
break;
@ -454,40 +448,40 @@ static void ChairliftPaintFlatTo25DegUp(
switch (direction)
{
case 0:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_20508);
imageId = session.TrackColours.WithIndex(SPR_20508);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 13, height + 28 }, { 32, 6, 2 } });
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_20520);
imageId = session.SupportColours.WithIndex(SPR_20520);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 14, 14, height + 1 }, { 4, 4, 25 } });
PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_FLAT);
break;
case 1:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_20509);
imageId = session.TrackColours.WithIndex(SPR_20509);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 13, 0, height + 28 }, { 6, 32, 2 } });
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_20521);
imageId = session.SupportColours.WithIndex(SPR_20521);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 14, 14, height + 1 }, { 4, 4, 25 } });
PaintUtilPushTunnelRight(session, height, TUNNEL_SQUARE_8);
break;
case 2:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_20510);
imageId = session.TrackColours.WithIndex(SPR_20510);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 13, height + 28 }, { 32, 6, 2 } });
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_20522);
imageId = session.SupportColours.WithIndex(SPR_20522);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 14, 14, height + 1 }, { 4, 4, 25 } });
PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_8);
break;
case 3:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_20511);
imageId = session.TrackColours.WithIndex(SPR_20511);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 13, 0, height + 28 }, { 6, 32, 2 } });
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_20523);
imageId = session.SupportColours.WithIndex(SPR_20523);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 14, 14, height + 1 }, { 4, 4, 25 } });
PaintUtilPushTunnelRight(session, height, TUNNEL_SQUARE_FLAT);
@ -509,40 +503,40 @@ static void ChairliftPaint25DegUpToFlat(
switch (direction)
{
case 0:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_20512);
imageId = session.TrackColours.WithIndex(SPR_20512);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 13, height + 28 }, { 32, 6, 2 } });
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_20524);
imageId = session.SupportColours.WithIndex(SPR_20524);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 14, 14, height + 1 }, { 4, 4, 25 } });
PaintUtilPushTunnelLeft(session, height - 8, TUNNEL_SQUARE_FLAT);
break;
case 1:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_20513);
imageId = session.TrackColours.WithIndex(SPR_20513);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 13, 0, height + 28 }, { 6, 32, 2 } });
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_20525);
imageId = session.SupportColours.WithIndex(SPR_20525);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 14, 14, height + 1 }, { 4, 4, 25 } });
PaintUtilPushTunnelRight(session, height + 8, TUNNEL_14);
break;
case 2:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_20514);
imageId = session.TrackColours.WithIndex(SPR_20514);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 13, height + 28 }, { 32, 6, 2 } });
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_20526);
imageId = session.SupportColours.WithIndex(SPR_20526);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 14, 14, height + 1 }, { 4, 4, 25 } });
PaintUtilPushTunnelLeft(session, height + 8, TUNNEL_14);
break;
case 3:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_20515);
imageId = session.TrackColours.WithIndex(SPR_20515);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 13, 0, height + 28 }, { 6, 32, 2 } });
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_20527);
imageId = session.SupportColours.WithIndex(SPR_20527);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 14, 14, height + 1 }, { 4, 4, 25 } });
PaintUtilPushTunnelRight(session, height - 8, TUNNEL_SQUARE_FLAT);
@ -588,50 +582,50 @@ static void ChairliftPaintLeftQuarterTurn1Tile(
switch (direction)
{
case 0:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_CHAIRLIFT_CORNER_NW_SW);
imageId = session.TrackColours.WithIndex(SPR_CHAIRLIFT_CORNER_NW_SW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 16, 0, height + 28 }, { 16, 16, 2 } });
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_20532);
imageId = session.SupportColours.WithIndex(SPR_20532);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 16, 4, height }, { 2, 2, 27 } });
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_20536);
imageId = session.SupportColours.WithIndex(SPR_20536);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 28, 4, height }, { 2, 2, 27 } });
PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_FLAT);
break;
case 1:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_CHAIRLIFT_CORNER_NW_NE);
imageId = session.TrackColours.WithIndex(SPR_CHAIRLIFT_CORNER_NW_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 0, height + 28 }, { 16, 16, 2 } });
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_20533);
imageId = session.SupportColours.WithIndex(SPR_20533);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 16, 4, height }, { 2, 2, 27 } });
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_20537);
imageId = session.SupportColours.WithIndex(SPR_20537);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 4, 16, height }, { 2, 2, 27 } });
break;
case 2:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_CHAIRLIFT_CORNER_SE_NE);
imageId = session.TrackColours.WithIndex(SPR_CHAIRLIFT_CORNER_SE_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 16, height + 28 }, { 16, 16, 2 } });
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_20534);
imageId = session.SupportColours.WithIndex(SPR_20534);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 4, 16, height }, { 2, 2, 27 } });
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_20538);
imageId = session.SupportColours.WithIndex(SPR_20538);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 16, 28, height }, { 2, 2, 27 } });
PaintUtilPushTunnelRight(session, height, TUNNEL_SQUARE_FLAT);
break;
case 3:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_CHAIRLIFT_CORNER_SW_SE);
imageId = session.TrackColours.WithIndex(SPR_CHAIRLIFT_CORNER_SW_SE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 16, 16, height + 28 }, { 16, 16, 2 } });
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_20535);
imageId = session.SupportColours.WithIndex(SPR_20535);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 28, 16, height }, { 2, 2, 27 } });
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_20539);
imageId = session.SupportColours.WithIndex(SPR_20539);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 16, 28, height }, { 2, 2, 27 } });
PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_FLAT);

View File

@ -54,11 +54,11 @@ static void PaintLiftBase(
if (trackSequence == 0)
{
PaintLiftCage(session, direction, session.TrackColours[SCHEME_TRACK], height, session.CurrentRotation);
PaintLiftCage(session, direction, session.TrackColours, height, session.CurrentRotation);
PaintLiftCage(session, -1, session.TrackColours[SCHEME_TRACK], height + 32, session.CurrentRotation);
PaintLiftCage(session, -1, session.TrackColours, height + 32, session.CurrentRotation);
PaintLiftCage(session, -1, session.TrackColours[SCHEME_TRACK], height + 64, session.CurrentRotation);
PaintLiftCage(session, -1, session.TrackColours, height + 64, session.CurrentRotation);
PaintUtilSetVerticalTunnel(session, height + 96);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
@ -70,11 +70,11 @@ static void PaintLiftBase(
int32_t edges = edges_3x3[trackSequence];
auto imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(SPR_FLOOR_METAL_B);
auto imageId = session.SupportColours.WithIndex(SPR_FLOOR_METAL_B);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 0, height }, { 32, 32, 1 } });
TrackPaintUtilPaintFences(
session, edges, session.MapPosition, trackElement, ride, session.TrackColours[SCHEME_TRACK], height, fenceSpritesMetalB,
session, edges, session.MapPosition, trackElement, ride, session.TrackColours, height, fenceSpritesMetalB,
session.CurrentRotation);
int32_t blockedSegments = 0;
@ -120,7 +120,7 @@ static void PaintLiftTowerSection(
return;
}
PaintLiftCage(session, -1, session.TrackColours[SCHEME_TRACK], height, session.CurrentRotation);
PaintLiftCage(session, -1, session.TrackColours, height, session.CurrentRotation);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);

View File

@ -635,17 +635,17 @@ static void PaintMiniatureRailwayTrackFlat(
paintGrooved = true;
}
bool isSupported = WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
bool isSupported = WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.SupportColours);
ImageId imageId, imageIdAlt;
// In the following 3 calls to PaintAddImageAsParentRotated/PaintAddImageAsChildRotated, we add 1 to the
// bound_box_offset_z argument to make straight tracks draw above footpaths
if (isSupported)
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(miniature_railway_track_floor[direction]);
imageId = session.SupportColours.WithIndex(miniature_railway_track_floor[direction]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(miniature_railway_track_pieces_flat[direction]);
imageId = session.TrackColours.WithIndex(miniature_railway_track_pieces_flat[direction]);
if (!paintAsGravel)
{
PaintAddImageAsChildRotated(session, direction, imageId, { 0, 6, height }, { { 0, 6, height }, { 32, 20, 2 } });
@ -669,7 +669,7 @@ static void PaintMiniatureRailwayTrackFlat(
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(miniature_railway_track_pieces_flat[direction]);
imageId = session.TrackColours.WithIndex(miniature_railway_track_pieces_flat[direction]);
if (!paintAsGravel)
{
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 6, height }, { { 0, 6, height }, { 32, 20, 2 } });
@ -705,12 +705,12 @@ static void PaintMiniatureRailwayStation(
{
ImageId imageId;
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 0, height, session.SupportColours);
imageId = GetStationColourScheme(session, trackElement).WithIndex(miniature_railway_station_floor[direction]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height - 2 }, { { 0, 2, height }, { 32, 28, 2 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(miniature_railway_track_pieces_flat_station[direction]);
imageId = session.TrackColours.WithIndex(miniature_railway_track_pieces_flat_station[direction]);
PaintAddImageAsChildRotated(session, direction, imageId, { 0, 6, height }, { { 0, 0, height }, { 32, 20, 2 } });
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_SQUARE_FLAT);
@ -727,7 +727,7 @@ static void PaintMiniatureRailwayTrack25DegUp(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(miniature_railway_track_pieces_25_deg_up[direction]);
auto imageId = session.TrackColours.WithIndex(miniature_railway_track_pieces_25_deg_up[direction]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 2, height }, { { 0, 3, height }, { 32, 25, 2 } });
@ -747,7 +747,7 @@ static void PaintMiniatureRailwayTrack25DegUp(
break;
}
WoodenASupportsPaintSetup(session, direction & 1, 45 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 45 + direction, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20);
@ -758,7 +758,7 @@ static void PaintMiniatureRailwayTrackFlatTo25DegUp(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(miniature_railway_track_pieces_flat_to_25_deg_up[direction]);
auto imageId = session.TrackColours.WithIndex(miniature_railway_track_pieces_flat_to_25_deg_up[direction]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 2, height }, { { 0, 3, height }, { 32, 25, 2 } });
@ -778,7 +778,7 @@ static void PaintMiniatureRailwayTrackFlatTo25DegUp(
break;
}
WoodenASupportsPaintSetup(session, direction & 1, 37 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 37 + direction, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 48, 0x20);
@ -789,7 +789,7 @@ static void PaintMiniatureRailwayTrack25DegUpToFlat(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(miniature_railway_track_pieces_25_deg_up_to_flat[direction]);
auto imageId = session.TrackColours.WithIndex(miniature_railway_track_pieces_25_deg_up_to_flat[direction]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 2, height }, { { 0, 3, height }, { 32, 25, 2 } });
@ -809,7 +809,7 @@ static void PaintMiniatureRailwayTrack25DegUpToFlat(
break;
}
WoodenASupportsPaintSetup(session, direction & 1, 41 + direction, height, session.TrackColours[SCHEME_SUPPORTS]);
WoodenASupportsPaintSetup(session, direction & 1, 41 + direction, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 40, 0x20);
@ -982,26 +982,25 @@ static void PaintMiniatureRailwayTrackRightQuarterTurn5Tiles(
if (right_quarter_turn_5_supports_type[direction][trackSequence] != -1)
{
bool isSupported = WoodenASupportsPaintSetup(
session, right_quarter_turn_5_supports_type[direction][trackSequence], 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, right_quarter_turn_5_supports_type[direction][trackSequence], 0, height, session.SupportColours);
if (!isSupported || (trackSequence == 3 && direction == 2))
{
TrackPaintUtilRightQuarterTurn5TilesPaint(
session, 2, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK],
session, 2, height, direction, trackSequence, session.TrackColours,
miniature_railway_track_pieces_flat_quarter_turn_5_tiles, miniature_railway_right_quarter_turn_5_tiles_offsets,
miniature_railway_right_quarter_turn_5_tiles_bound_lengths, nullptr);
}
else
{
TrackPaintUtilRightQuarterTurn5TilesPaint(
session, 2, height, direction, trackSequence, session.TrackColours[SCHEME_SUPPORTS],
session, 2, height, direction, trackSequence, session.SupportColours,
miniature_railway_right_quarter_turn_5_tiles_track_floor, nullptr,
miniature_railway_right_quarter_turn_5_tiles_bound_lengths,
miniature_railway_right_quarter_turn_5_tiles_bound_offsets);
int32_t index = miniature_railway_right_quarter_turn_5_tiles_sprite_map[trackSequence];
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
auto imageId = session.TrackColours.WithIndex(
miniature_railway_track_pieces_flat_quarter_turn_5_tiles[direction][index]);
CoordsXY offset = miniature_railway_right_quarter_turn_5_tiles_offsets[direction][index];
CoordsXY boundsLength = miniature_railway_right_quarter_turn_5_tiles_bound_lengths[direction][index];
@ -1105,7 +1104,7 @@ static void PaintMiniatureRailwayTrackSBendLeft(
}
bool isSupported = WoodenASupportsPaintSetup(
session, s_bend_left_supports_type[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, s_bend_left_supports_type[direction][trackSequence], 0, height, session.SupportColours);
static constexpr CoordsXY offsetList[] = {
{ 0, 2 },
@ -1121,8 +1120,7 @@ static void PaintMiniatureRailwayTrackSBendLeft(
{ 32, 27 },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
miniature_railway_track_pieces_s_bend_left[direction & 1][trackSequence]);
auto imageId = session.TrackColours.WithIndex(miniature_railway_track_pieces_s_bend_left[direction & 1][trackSequence]);
CoordsXY offset = offsetList[trackSequence];
CoordsXY bounds = boundsList[trackSequence];
@ -1134,13 +1132,12 @@ static void PaintMiniatureRailwayTrackSBendLeft(
}
else
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
imageId = session.SupportColours.WithIndex(
miniature_railway_s_bend_left_tiles_track_floor[direction & 1][trackSequence]);
PaintAddImageAsParentRotated(
session, direction, imageId, { 0, 0, height }, { { offset.x, offset.y, height }, { bounds.x, bounds.y, 2 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
miniature_railway_track_pieces_s_bend_left[direction & 1][trackSequence]);
imageId = session.TrackColours.WithIndex(miniature_railway_track_pieces_s_bend_left[direction & 1][trackSequence]);
PaintAddImageAsChildRotated(
session, direction, imageId, { offset.x, offset.y, height },
{ { offset.x, offset.y, height }, { bounds.x, bounds.y, 2 } });
@ -1214,7 +1211,7 @@ static void PaintMiniatureRailwayTrackSBendRight(
}
bool isSupported = WoodenASupportsPaintSetup(
session, s_bend_right_supports_type[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, s_bend_right_supports_type[direction][trackSequence], 0, height, session.SupportColours);
static constexpr CoordsXY offsetList[] = {
{ 0, 2 },
@ -1230,8 +1227,7 @@ static void PaintMiniatureRailwayTrackSBendRight(
{ 32, 27 },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
miniature_railway_track_pieces_s_bend_right[direction & 1][trackSequence]);
auto imageId = session.TrackColours.WithIndex(miniature_railway_track_pieces_s_bend_right[direction & 1][trackSequence]);
CoordsXY offset = offsetList[trackSequence];
CoordsXY bounds = boundsList[trackSequence];
if (!isSupported)
@ -1242,13 +1238,12 @@ static void PaintMiniatureRailwayTrackSBendRight(
}
else
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
imageId = session.SupportColours.WithIndex(
miniature_railway_s_bend_right_tiles_track_floor[direction & 1][trackSequence]);
PaintAddImageAsParentRotated(
session, direction, imageId, { 0, 0, height }, { { offset.x, offset.y, height }, { bounds.x, bounds.y, 2 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
miniature_railway_track_pieces_s_bend_right[direction & 1][trackSequence]);
imageId = session.TrackColours.WithIndex(miniature_railway_track_pieces_s_bend_right[direction & 1][trackSequence]);
PaintAddImageAsChildRotated(
session, direction, imageId, { offset.x, offset.y, height },
{ { offset.x, offset.y, height }, { bounds.x, bounds.y, 2 } });
@ -1345,28 +1340,26 @@ static void PaintMiniatureRailwayTrackRightQuarterTurn3Tiles(
if (trackSequence != 1 && trackSequence != 2)
{
static constexpr uint8_t supportType[] = { 4, 5, 2, 3 };
isSupported = WoodenASupportsPaintSetup(
session, supportType[direction], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
isSupported = WoodenASupportsPaintSetup(session, supportType[direction], 0, height, session.SupportColours);
}
if (!isSupported)
{
TrackPaintUtilRightQuarterTurn3TilesPaint(
session, 3, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK],
session, 3, height, direction, trackSequence, session.TrackColours,
miniature_railway_track_pieces_flat_quarter_turn_3_tiles, defaultRightQuarterTurn3TilesOffsets,
defaultRightQuarterTurn3TilesBoundLengths, nullptr);
// The following piece was missing in vanilla RCT2
if (trackSequence == 1 && direction == 0)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
SPR_G2_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_3);
auto imageId = session.TrackColours.WithIndex(SPR_G2_MINIATURE_RAILWAY_QUARTER_TURN_3_TILES_SW_SE_PART_3);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 0, height }, { 8, 8, 2 } });
}
}
else
{
TrackPaintUtilRightQuarterTurn3TilesPaint(
session, 3, height, direction, trackSequence, session.TrackColours[SCHEME_SUPPORTS],
session, 3, height, direction, trackSequence, session.SupportColours,
miniature_railway_right_quarter_turn_3_tile_track_floor, nullptr, defaultRightQuarterTurn3TilesBoundLengths,
miniature_railway_right_quarter_turn_3_tile_bound_offsets);
@ -1374,7 +1367,7 @@ static void PaintMiniatureRailwayTrackRightQuarterTurn3Tiles(
int32_t index = _right_quarter_turn_3_tiles_sprite_map[trackSequence];
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
auto imageId = session.TrackColours.WithIndex(
miniature_railway_track_pieces_flat_quarter_turn_3_tiles[direction][index]);
CoordsXY offset = defaultRightQuarterTurn3TilesOffsets[direction][index];
CoordsXY boundsLength = defaultRightQuarterTurn3TilesBoundLengths[direction][index];
@ -1528,7 +1521,7 @@ static void PaintMiniatureRailwayTrackLeftEighthToDiag(
if (trackSequence != 4 || !isRightEighthToOrthog)
{
isSupported = WoodenASupportsPaintSetup(
session, supportType[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, supportType[direction][trackSequence], 0, height, session.SupportColours);
}
ImageId imageId;
if (!isSupported)
@ -1536,8 +1529,7 @@ static void PaintMiniatureRailwayTrackLeftEighthToDiag(
int8_t index = paint_miniature_railway_eighth_to_diag_index[trackSequence];
if (index >= 0)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
miniature_railway_track_pieces_left_eight_to_diag[direction][index]);
imageId = session.TrackColours.WithIndex(miniature_railway_track_pieces_left_eight_to_diag[direction][index]);
CoordsXY offset = miniature_railway_track_pieces_left_eight_to_diag_offset[direction][index];
CoordsXYZ bounds = miniature_railway_track_pieces_left_eight_to_diag_bounds[direction][index];
if (isRightEighthToOrthog)
@ -1550,7 +1542,7 @@ static void PaintMiniatureRailwayTrackLeftEighthToDiag(
}
else
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
imageId = session.SupportColours.WithIndex(
miniature_railway_floor_track_pieces_left_eight_to_diag[direction][trackSequence]);
CoordsXY offset = miniature_railway_track_floor_pieces_left_eight_to_diag_offset[direction][trackSequence];
CoordsXYZ bounds = miniature_railway_track_floor_pieces_left_eight_to_diag_bounds[direction][trackSequence];
@ -1559,8 +1551,7 @@ static void PaintMiniatureRailwayTrackLeftEighthToDiag(
int8_t index = paint_miniature_railway_eighth_to_diag_index[trackSequence];
if (index >= 0)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
miniature_railway_track_pieces_left_eight_to_diag[direction][index]);
imageId = session.TrackColours.WithIndex(miniature_railway_track_pieces_left_eight_to_diag[direction][index]);
offset = miniature_railway_track_pieces_left_eight_to_diag_offset[direction][index];
bounds = miniature_railway_track_pieces_left_eight_to_diag_bounds[direction][index];
PaintAddImageAsChild(session, imageId, { 0, 0, height }, { { offset, height }, bounds });
@ -1692,7 +1683,7 @@ static void PaintMiniatureRailwayTrackRightEighthToDiag(
if (trackSequence != 4 || !isLeftEighthToOrthog)
{
isSupported = WoodenASupportsPaintSetup(
session, supportType[direction][trackSequence], 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, supportType[direction][trackSequence], 0, height, session.SupportColours);
}
ImageId imageId;
@ -1701,8 +1692,7 @@ static void PaintMiniatureRailwayTrackRightEighthToDiag(
int8_t index = paint_miniature_railway_eighth_to_diag_index[trackSequence];
if (index >= 0)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
miniature_railway_track_pieces_right_eight_to_diag[direction][index]);
imageId = session.TrackColours.WithIndex(miniature_railway_track_pieces_right_eight_to_diag[direction][index]);
CoordsXY offset = miniature_railway_track_pieces_right_eight_to_diag_offset[direction][index];
CoordsXYZ bounds = miniature_railway_track_pieces_right_eight_to_diag_bounds[direction][index];
if (isLeftEighthToOrthog)
@ -1715,7 +1705,7 @@ static void PaintMiniatureRailwayTrackRightEighthToDiag(
}
else
{
imageId = session.TrackColours[SCHEME_SUPPORTS].WithIndex(
imageId = session.SupportColours.WithIndex(
miniature_railway_floor_track_pieces_right_eight_to_diag[direction][trackSequence]);
CoordsXY offset = miniature_railway_track_floor_pieces_right_eight_to_diag_offset[direction][trackSequence];
CoordsXYZ bounds = miniature_railway_track_floor_pieces_right_eight_to_diag_bounds[direction][trackSequence];
@ -1724,8 +1714,7 @@ static void PaintMiniatureRailwayTrackRightEighthToDiag(
int8_t index = paint_miniature_railway_eighth_to_diag_index[trackSequence];
if (index >= 0)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
miniature_railway_track_pieces_right_eight_to_diag[direction][index]);
imageId = session.TrackColours.WithIndex(miniature_railway_track_pieces_right_eight_to_diag[direction][index]);
offset = miniature_railway_track_pieces_right_eight_to_diag_offset[direction][index];
bounds = miniature_railway_track_pieces_right_eight_to_diag_bounds[direction][index];
PaintAddImageAsChild(session, imageId, { 0, 0, height }, { { offset, height }, bounds });
@ -1812,7 +1801,7 @@ static void MiniatureRailwayTrackDiagFlat(
floorBoundSize = floors[enumValue].bound_size;
floorBoundOffset = floors[enumValue].bound_offset;
isSupported = WoodenASupportsPaintSetup(
session, WoodenSupportType::Truss, supportType.value(), height, session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, supportType.value(), height, session.SupportColours);
}
if (direction == 1 && trackSequence == 3)
@ -1826,20 +1815,19 @@ static void MiniatureRailwayTrackDiagFlat(
if (isSupported)
{
PaintAddImageAsParent(
session, session.TrackColours[SCHEME_SUPPORTS].WithIndex(floorImage), { 0, 0, height },
session, session.SupportColours.WithIndex(floorImage), { 0, 0, height },
{ { floorBoundOffset, height }, { floorBoundSize, (drawRail ? 2 : 0) } });
if (drawRail)
{
PaintAddImageAsChild(
session, session.TrackColours[SCHEME_TRACK].WithIndex(imageId), { -16, -16, height },
session, session.TrackColours.WithIndex(imageId), { -16, -16, height },
{ { -16, -16, height }, { 32, 32, 2 } });
}
}
else if (drawRail)
{
PaintAddImageAsParent(
session, session.TrackColours[SCHEME_TRACK].WithIndex(imageId), { -16, -16, height },
{ { -16, -16, height }, { 32, 32, 2 } });
session, session.TrackColours.WithIndex(imageId), { -16, -16, height }, { { -16, -16, height }, { 32, 32, 2 } });
}
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
@ -1874,14 +1862,12 @@ static void MiniatureRailwayTrackDiag25DegUp(
if (trackSequence == 3)
{
hasSupports = WoodenASupportsPaintSetup(
session, enumValue, 0, height + heightDiff, session.TrackColours[SCHEME_SUPPORTS]);
hasSupports = WoodenASupportsPaintSetup(session, enumValue, 0, height + heightDiff, session.SupportColours);
}
else
{
hasSupports = WoodenBSupportsPaintSetup(
session, WoodenSupportType::Truss, supportType.value(), height + heightDiff,
session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, supportType.value(), height + heightDiff, session.SupportColours);
}
}
@ -1908,20 +1894,19 @@ static void MiniatureRailwayTrackDiag25DegUp(
if (hasSupports)
{
PaintAddImageAsParent(
session, session.TrackColours[SCHEME_SUPPORTS].WithIndex(floorImage),
{ 0, 0, height + offsetsB[direction][trackSequence][0] },
session, session.SupportColours.WithIndex(floorImage), { 0, 0, height + offsetsB[direction][trackSequence][0] },
{ { floorBoundOffset, height + offsetsB[direction][trackSequence][1] }, { floorBoundSize, (drawRail ? 2 : 0) } });
if (drawRail)
{
PaintAddImageAsChild(
session, session.TrackColours[SCHEME_TRACK].WithIndex(imageId), { -16, -16, height },
session, session.TrackColours.WithIndex(imageId), { -16, -16, height },
{ { -16, -16, height + offsetB[direction] }, { 32, 32, 2 } });
}
}
else if (drawRail)
{
PaintAddImageAsParent(
session, session.TrackColours[SCHEME_TRACK].WithIndex(imageId), { -16, -16, height },
session, session.TrackColours.WithIndex(imageId), { -16, -16, height },
{ { -16, -16, height + offsetB[direction] }, { 32, 32, 2 } });
}
@ -1948,7 +1933,7 @@ static void MiniatureRailwayTrackDiagFlatTo25DegUp(
floorBoundSize = floors[enumValue].bound_size;
floorBoundOffset = floors[enumValue].bound_offset;
hasSupports = WoodenASupportsPaintSetup(
session, WoodenSupportType::Truss, supportType.value(), height, session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, supportType.value(), height, session.SupportColours);
}
if (direction == 1 && trackSequence == 3)
@ -1962,20 +1947,19 @@ static void MiniatureRailwayTrackDiagFlatTo25DegUp(
if (hasSupports)
{
PaintAddImageAsParent(
session, session.TrackColours[SCHEME_SUPPORTS].WithIndex(floorImage), { 0, 0, height },
session, session.SupportColours.WithIndex(floorImage), { 0, 0, height },
{ { floorBoundOffset, height }, { floorBoundSize, (drawRail ? 2 : 0) } });
if (drawRail)
{
PaintAddImageAsChild(
session, session.TrackColours[SCHEME_TRACK].WithIndex(imageId), { -16, -16, height },
session, session.TrackColours.WithIndex(imageId), { -16, -16, height },
{ { -16, -16, height }, { 32, 32, 2 } });
}
}
else if (drawRail)
{
PaintAddImageAsParent(
session, session.TrackColours[SCHEME_TRACK].WithIndex(imageId), { -16, -16, height },
{ { -16, -16, height }, { 32, 32, 2 } });
session, session.TrackColours.WithIndex(imageId), { -16, -16, height }, { { -16, -16, height }, { 32, 32, 2 } });
}
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
@ -2010,14 +1994,13 @@ static void MiniatureRailwayTrackDiag25DegUpToFlat(
if (trackSequence == 3)
{
hasSupports = WoodenASupportsPaintSetup(
session, enumValue, 0, height + supportOffsets[direction][trackSequence],
session.TrackColours[SCHEME_SUPPORTS]);
session, enumValue, 0, height + supportOffsets[direction][trackSequence], session.SupportColours);
}
else
{
hasSupports = WoodenBSupportsPaintSetup(
session, WoodenSupportType::Truss, supportType.value(), height + supportOffsets[direction][trackSequence],
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
}
}
@ -2041,20 +2024,19 @@ static void MiniatureRailwayTrackDiag25DegUpToFlat(
if (hasSupports)
{
PaintAddImageAsParent(
session, session.TrackColours[SCHEME_SUPPORTS].WithIndex(floorImage),
{ 0, 0, height + offsetsB[direction][trackSequence][0] },
session, session.SupportColours.WithIndex(floorImage), { 0, 0, height + offsetsB[direction][trackSequence][0] },
{ { floorBoundOffset, height + offsetsB[direction][trackSequence][1] }, { floorBoundSize, (drawRail ? 2 : 0) } });
if (drawRail)
{
PaintAddImageAsChild(
session, session.TrackColours[SCHEME_TRACK].WithIndex(imageId), { -16, -16, height },
session, session.TrackColours.WithIndex(imageId), { -16, -16, height },
{ { -16, -16, height + railOffsets[direction] }, { 32, 32, 2 } });
}
}
else if (drawRail)
{
PaintAddImageAsParent(
session, session.TrackColours[SCHEME_TRACK].WithIndex(imageId), { -16, -16, height },
session, session.TrackColours.WithIndex(imageId), { -16, -16, height },
{ { -16, -16, height + railOffsets[direction] }, { 32, 32, 2 } });
}
@ -2090,14 +2072,13 @@ static void MiniatureRailwayTrackDiag25DegDown(
if (trackSequence == 3)
{
hasSupports = WoodenASupportsPaintSetup(
session, enumValue, 0, height + supportOffsets[direction][trackSequence],
session.TrackColours[SCHEME_SUPPORTS]);
session, enumValue, 0, height + supportOffsets[direction][trackSequence], session.SupportColours);
}
else
{
hasSupports = WoodenBSupportsPaintSetup(
session, WoodenSupportType::Truss, supportType.value(), height + supportOffsets[direction][trackSequence],
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
}
}
@ -2120,20 +2101,19 @@ static void MiniatureRailwayTrackDiag25DegDown(
if (hasSupports)
{
PaintAddImageAsParent(
session, session.TrackColours[SCHEME_SUPPORTS].WithIndex(floorImage),
{ 0, 0, height + offsetsB[direction][trackSequence][0] },
session, session.SupportColours.WithIndex(floorImage), { 0, 0, height + offsetsB[direction][trackSequence][0] },
{ { floorBoundOffset, height + offsetsB[direction][trackSequence][1] }, { floorBoundSize, (drawRail ? 2 : 0) } });
if (drawRail)
{
PaintAddImageAsChild(
session, session.TrackColours[SCHEME_TRACK].WithIndex(imageId), { -16, -16, height },
session, session.TrackColours.WithIndex(imageId), { -16, -16, height },
{ { -16, -16, height + railOffsets[direction] }, { 32, 32, 2 } });
}
}
else if (drawRail)
{
PaintAddImageAsParent(
session, session.TrackColours[SCHEME_TRACK].WithIndex(imageId), { -16, -16, height },
session, session.TrackColours.WithIndex(imageId), { -16, -16, height },
{ { -16, -16, height + railOffsets[direction] }, { 32, 32, 2 } });
}
@ -2168,14 +2148,13 @@ static void MiniatureRailwayTrackDiagFlatTo25DegDown(
if (trackSequence == 3)
{
hasSupports = WoodenASupportsPaintSetup(
session, enumValue, 0, height + supportOffsets[direction][trackSequence],
session.TrackColours[SCHEME_SUPPORTS]);
session, enumValue, 0, height + supportOffsets[direction][trackSequence], session.SupportColours);
}
else
{
hasSupports = WoodenBSupportsPaintSetup(
session, WoodenSupportType::Truss, supportType.value(), height + supportOffsets[direction][trackSequence],
session.TrackColours[SCHEME_SUPPORTS]);
session.SupportColours);
}
}
@ -2198,20 +2177,19 @@ static void MiniatureRailwayTrackDiagFlatTo25DegDown(
if (hasSupports)
{
PaintAddImageAsParent(
session, session.TrackColours[SCHEME_SUPPORTS].WithIndex(floorImage),
{ 0, 0, height + offsetsB[direction][trackSequence][0] },
session, session.SupportColours.WithIndex(floorImage), { 0, 0, height + offsetsB[direction][trackSequence][0] },
{ { floorBoundOffset, height + offsetsB[direction][trackSequence][1] }, { floorBoundSize, (drawRail ? 2 : 0) } });
if (drawRail)
{
PaintAddImageAsChild(
session, session.TrackColours[SCHEME_TRACK].WithIndex(imageId), { -16, -16, height },
session, session.TrackColours.WithIndex(imageId), { -16, -16, height },
{ { -16, -16, height + railOffsets[direction] }, { 32, 32, 2 } });
}
}
else if (drawRail)
{
PaintAddImageAsParent(
session, session.TrackColours[SCHEME_TRACK].WithIndex(imageId), { -16, -16, height },
session, session.TrackColours.WithIndex(imageId), { -16, -16, height },
{ { -16, -16, height + railOffsets[direction] }, { 32, 32, 2 } });
}
@ -2236,7 +2214,7 @@ static void MiniatureRailwayTrackDiag25DegDownToFlat(
floorBoundSize = floors[enumValue].bound_size;
floorBoundOffset = floors[enumValue].bound_offset;
hasSupports = WoodenASupportsPaintSetup(
session, WoodenSupportType::Truss, supportType.value(), height, session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, supportType.value(), height, session.SupportColours);
}
if (direction == 1 && trackSequence == 3)
@ -2250,20 +2228,19 @@ static void MiniatureRailwayTrackDiag25DegDownToFlat(
if (hasSupports)
{
PaintAddImageAsParent(
session, session.TrackColours[SCHEME_SUPPORTS].WithIndex(floorImage), { 0, 0, height },
session, session.SupportColours.WithIndex(floorImage), { 0, 0, height },
{ { floorBoundOffset, height }, { floorBoundSize, (drawRail ? 2 : 0) } });
if (drawRail)
{
PaintAddImageAsChild(
session, session.TrackColours[SCHEME_TRACK].WithIndex(imageId), { -16, -16, height },
session, session.TrackColours.WithIndex(imageId), { -16, -16, height },
{ { -16, -16, height }, { 32, 32, 2 } });
}
}
else if (drawRail)
{
PaintAddImageAsParent(
session, session.TrackColours[SCHEME_TRACK].WithIndex(imageId), { -16, -16, height },
{ { -16, -16, height }, { 32, 32, 2 } });
session, session.TrackColours.WithIndex(imageId), { -16, -16, height }, { { -16, -16, height }, { 32, 32, 2 } });
}
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);

View File

@ -388,7 +388,7 @@ static void PaintMonorailTrackFlat(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(monorail_track_pieces_flat[direction]);
auto imageId = session.TrackColours.WithIndex(monorail_track_pieces_flat[direction]);
if (direction == 0 || direction == 2)
{
@ -411,7 +411,7 @@ static void PaintMonorailTrackFlat(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
@ -443,7 +443,7 @@ static void PaintMonorailStation(
}
}
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(monorail_track_pieces_flat[direction]);
imageId = session.TrackColours.WithIndex(monorail_track_pieces_flat[direction]);
if (direction == 0 || direction == 2)
{
PaintAddImageAsChild(session, imageId, { 0, 6, height }, { { 0, 0, height }, { 32, 20, 2 } });
@ -462,7 +462,7 @@ static void PaintMonorailStation(
PaintUtilPushTunnelRight(session, height, TUNNEL_SQUARE_FLAT);
}
DrawSupportsSideBySide(session, direction, height, session.TrackColours[SCHEME_SUPPORTS], MetalSupportType::Boxed);
DrawSupportsSideBySide(session, direction, height, session.SupportColours, MetalSupportType::Boxed);
TrackPaintUtilDrawStation(session, ride, direction, height, trackElement);
@ -475,7 +475,7 @@ static void PaintMonorailTrack25DegUp(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(monorail_track_pieces_25_deg_up[direction]);
auto imageId = session.TrackColours.WithIndex(monorail_track_pieces_25_deg_up[direction]);
if (direction == 0 || direction == 2)
{
@ -505,7 +505,7 @@ static void PaintMonorailTrack25DegUp(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
@ -518,7 +518,7 @@ static void PaintMonorailTrackFlatTo25DegUp(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(monorail_track_pieces_flat_to_25_deg_up[direction]);
auto imageId = session.TrackColours.WithIndex(monorail_track_pieces_flat_to_25_deg_up[direction]);
if (direction == 0 || direction == 2)
{
@ -548,7 +548,7 @@ static void PaintMonorailTrackFlatTo25DegUp(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 3, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 3, height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
@ -561,7 +561,7 @@ static void PaintMonorailTrack25DegUpToFlat(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(monorail_track_pieces_25_deg_up_to_flat[direction]);
auto imageId = session.TrackColours.WithIndex(monorail_track_pieces_25_deg_up_to_flat[direction]);
if (direction == 0 || direction == 2)
{
@ -591,7 +591,7 @@ static void PaintMonorailTrack25DegUpToFlat(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 6, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 6, height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
@ -629,16 +629,15 @@ static void PaintMonorailTrackRightQuarterTurn5Tiles(
const TrackElement& trackElement)
{
TrackPaintUtilRightQuarterTurn5TilesPaint(
session, 3, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK],
monorail_track_pieces_flat_quarter_turn_5_tiles, defaultRightQuarterTurn5TilesOffsets,
defaultRightQuarterTurn5TilesBoundLengths, nullptr);
session, 3, height, direction, trackSequence, session.TrackColours, monorail_track_pieces_flat_quarter_turn_5_tiles,
defaultRightQuarterTurn5TilesOffsets, defaultRightQuarterTurn5TilesBoundLengths, nullptr);
switch (trackSequence)
{
case 0:
case 6:
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
}
@ -713,8 +712,7 @@ static void PaintMonorailTrackSBendLeft(
{ { 0, 6 }, { 32, 20 } },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
monorail_track_pieces_s_bend_left[direction & 1][trackSequence]);
auto imageId = session.TrackColours.WithIndex(monorail_track_pieces_s_bend_left[direction & 1][trackSequence]);
const CoordsXY& offset = boxList[trackSequence].offset;
const CoordsXY& bounds = boxList[trackSequence].length;
if (direction == 0 || direction == 2)
@ -737,18 +735,15 @@ static void PaintMonorailTrackSBendLeft(
{
case 0:
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
case 1:
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::TopLeftSide, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::TopLeftSide, 0, height, session.SupportColours);
break;
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
}
}
@ -763,18 +758,15 @@ static void PaintMonorailTrackSBendLeft(
{
case 0:
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
case 1:
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::TopRightSide, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::TopRightSide, 0, height, session.SupportColours);
break;
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
}
}
@ -814,8 +806,7 @@ static void PaintMonorailTrackSBendRight(
{ { 0, 6 }, { 32, 20 } }, { { 0, 6 }, { 32, 26 } }, { { 0, 0 }, { 32, 26 } }, { { 0, 6 }, { 32, 20 } }
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
monorail_track_pieces_s_bend_right[direction & 1][trackSequence]);
auto imageId = session.TrackColours.WithIndex(monorail_track_pieces_s_bend_right[direction & 1][trackSequence]);
const CoordsXY& offset = boxList[trackSequence].offset;
const CoordsXY& bounds = boxList[trackSequence].length;
if (direction == 0 || direction == 2)
@ -838,18 +829,15 @@ static void PaintMonorailTrackSBendRight(
{
case 0:
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
case 1:
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::BottomRightSide, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::BottomRightSide, 0, height, session.SupportColours);
break;
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
}
}
@ -864,18 +852,15 @@ static void PaintMonorailTrackSBendRight(
{
case 0:
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
case 1:
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::BottomLeftSide, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::BottomLeftSide, 0, height, session.SupportColours);
break;
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
}
}
@ -907,9 +892,8 @@ static void PaintMonorailTrackRightQuarterTurn3Tiles(
const TrackElement& trackElement)
{
TrackPaintUtilRightQuarterTurn3TilesPaint(
session, 3, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK],
monorail_track_pieces_flat_quarter_turn_3_tiles, defaultRightQuarterTurn3TilesOffsets,
defaultRightQuarterTurn3TilesBoundLengths, nullptr);
session, 3, height, direction, trackSequence, session.TrackColours, monorail_track_pieces_flat_quarter_turn_3_tiles,
defaultRightQuarterTurn3TilesOffsets, defaultRightQuarterTurn3TilesBoundLengths, nullptr);
TrackPaintUtilRightQuarterTurn3TilesTunnel(session, height, direction, trackSequence, TUNNEL_SQUARE_FLAT);
switch (trackSequence)
@ -917,7 +901,7 @@ static void PaintMonorailTrackRightQuarterTurn3Tiles(
case 0:
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
}
@ -960,8 +944,7 @@ static void PaintMonorailTrackLeftEighthToDiag(
int8_t index = paint_monorail_eighth_to_diag_index[trackSequence];
if (index >= 0)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
ghost_train_track_pieces_left_eight_to_diag[direction][index]);
auto imageId = session.TrackColours.WithIndex(ghost_train_track_pieces_left_eight_to_diag[direction][index]);
const CoordsXY& offset = GhostTrainTrackPiecesLeftEightToDiagBoxes[direction][index].offset;
const CoordsXY& bounds = GhostTrainTrackPiecesLeftEightToDiagBoxes[direction][index].length;
PaintAddImageAsParent(
@ -972,25 +955,21 @@ static void PaintMonorailTrackLeftEighthToDiag(
{
case 0:
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
case 4:
if (direction == 0)
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::BottomCorner, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::BottomCorner, 0, height, session.SupportColours);
if (direction == 1)
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::LeftCorner, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::LeftCorner, 0, height, session.SupportColours);
if (direction == 2)
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::TopCorner, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::TopCorner, 0, height, session.SupportColours);
if (direction == 3)
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::RightCorner, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::RightCorner, 0, height, session.SupportColours);
break;
}
@ -1035,8 +1014,7 @@ static void PaintMonorailTrackRightEighthToDiag(
int8_t index = paint_monorail_eighth_to_diag_index[trackSequence];
if (index >= 0)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
ghost_train_track_pieces_right_eight_to_diag[direction][index]);
auto imageId = session.TrackColours.WithIndex(ghost_train_track_pieces_right_eight_to_diag[direction][index]);
const CoordsXY offset = GhostTrainTrackPiecesRightEightToDiagBoxes[direction][index].offset;
const CoordsXY bounds = GhostTrainTrackPiecesRightEightToDiagBoxes[direction][index].length;
PaintAddImageAsParent(
@ -1047,25 +1025,21 @@ static void PaintMonorailTrackRightEighthToDiag(
{
case 0:
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
case 4:
if (direction == 0)
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::LeftCorner, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::LeftCorner, 0, height, session.SupportColours);
if (direction == 1)
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::TopCorner, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::TopCorner, 0, height, session.SupportColours);
if (direction == 2)
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::RightCorner, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::RightCorner, 0, height, session.SupportColours);
if (direction == 3)
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::BottomCorner, 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::BottomCorner, 0, height, session.SupportColours);
break;
}
@ -1136,15 +1110,14 @@ static void PaintMonorailTrackDiagFlat(
{
if (monorail_diag_image_segment[direction][trackSequence])
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(monorail_track_pieces_diag_flat[direction]);
auto imageId = session.TrackColours.WithIndex(monorail_track_pieces_diag_flat[direction]);
PaintAddImageAsParent(session, imageId, { -16, -16, height }, { { -16, -16, height }, { 32, 32, 2 } });
}
if (trackSequence == 3)
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, DiagSupportPlacement[direction], 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, DiagSupportPlacement[direction], 0, height, session.SupportColours);
}
int32_t blockedSegments = DiagBlockedSegments[trackSequence];
@ -1159,15 +1132,14 @@ static void PaintMonorailTrackDiag25DegUp(
{
if (monorail_diag_image_segment[direction][trackSequence])
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(monorail_track_pieces_diag_25_deg_up[direction]);
auto imageId = session.TrackColours.WithIndex(monorail_track_pieces_diag_25_deg_up[direction]);
PaintAddImageAsParent(session, imageId, { -16, -16, height }, { { -16, -16, height }, { 32, 32, 2 } });
}
if (trackSequence == 3)
{
MetalBSupportsPaintSetup(
session, MetalSupportType::Boxed, DiagSupportPlacement[direction], 8, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, DiagSupportPlacement[direction], 8, height, session.SupportColours);
}
int32_t blockedSegments = DiagBlockedSegments[trackSequence];
@ -1182,15 +1154,14 @@ static void PaintMonorailTrackDiagFlatTo25DegUp(
{
if (monorail_diag_image_segment[direction][trackSequence])
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(monorail_track_pieces_diag_flat_to_25_deg_up[direction]);
auto imageId = session.TrackColours.WithIndex(monorail_track_pieces_diag_flat_to_25_deg_up[direction]);
PaintAddImageAsParent(session, imageId, { -16, -16, height }, { { -16, -16, height }, { 32, 32, 2 } });
}
if (trackSequence == 3)
{
MetalBSupportsPaintSetup(
session, MetalSupportType::Boxed, DiagSupportPlacement[direction], 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, DiagSupportPlacement[direction], 0, height, session.SupportColours);
}
int32_t blockedSegments = DiagBlockedSegments[trackSequence];
@ -1205,15 +1176,14 @@ static void PaintMonorailTrackDiag25DegUpToFlat(
{
if (monorail_diag_image_segment[direction][trackSequence])
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(monorail_track_pieces_diag_25_deg_up_to_flat[direction]);
auto imageId = session.TrackColours.WithIndex(monorail_track_pieces_diag_25_deg_up_to_flat[direction]);
PaintAddImageAsParent(session, imageId, { -16, -16, height }, { { -16, -16, height }, { 32, 32, 2 } });
}
if (trackSequence == 3)
{
MetalBSupportsPaintSetup(
session, MetalSupportType::Boxed, DiagSupportPlacement[direction], 4, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, DiagSupportPlacement[direction], 4, height, session.SupportColours);
}
int32_t blockedSegments = DiagBlockedSegments[trackSequence];
@ -1228,15 +1198,14 @@ static void PaintMonorailTrackDiag25DegDown(
{
if (monorail_diag_image_segment[direction][trackSequence])
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(monorail_track_pieces_diag_25_deg_up[(direction + 2) % 4]);
auto imageId = session.TrackColours.WithIndex(monorail_track_pieces_diag_25_deg_up[(direction + 2) % 4]);
PaintAddImageAsParent(session, imageId, { -16, -16, height }, { { -16, -16, height }, { 32, 32, 2 } });
}
if (trackSequence == 3)
{
MetalBSupportsPaintSetup(
session, MetalSupportType::Boxed, DiagSupportPlacement[direction], 8, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, DiagSupportPlacement[direction], 8, height, session.SupportColours);
}
int32_t blockedSegments = DiagBlockedSegments[trackSequence];
@ -1251,16 +1220,14 @@ static void PaintMonorailTrackDiagFlatTo25DegDown(
{
if (monorail_diag_image_segment[direction][trackSequence])
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
monorail_track_pieces_diag_25_deg_up_to_flat[(direction + 2) % 4]);
auto imageId = session.TrackColours.WithIndex(monorail_track_pieces_diag_25_deg_up_to_flat[(direction + 2) % 4]);
PaintAddImageAsParent(session, imageId, { -16, -16, height }, { { -16, -16, height }, { 32, 32, 2 } });
}
if (trackSequence == 3)
{
MetalBSupportsPaintSetup(
session, MetalSupportType::Boxed, DiagSupportPlacement[direction], 4, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, DiagSupportPlacement[direction], 4, height, session.SupportColours);
}
int32_t blockedSegments = DiagBlockedSegments[trackSequence];
@ -1275,16 +1242,14 @@ static void PaintMonorailTrackDiag25DegDownToFlat(
{
if (monorail_diag_image_segment[direction][trackSequence])
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
monorail_track_pieces_diag_flat_to_25_deg_up[(direction + 2) % 4]);
auto imageId = session.TrackColours.WithIndex(monorail_track_pieces_diag_flat_to_25_deg_up[(direction + 2) % 4]);
PaintAddImageAsParent(session, imageId, { -16, -16, height }, { { -16, -16, height }, { 32, 32, 2 } });
}
if (trackSequence == 3)
{
MetalBSupportsPaintSetup(
session, MetalSupportType::Boxed, DiagSupportPlacement[direction], 0, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, DiagSupportPlacement[direction], 0, height, session.SupportColours);
}
int32_t blockedSegments = DiagBlockedSegments[trackSequence];

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,4 @@
/*****************************************************************************
/*****************************************************************************
* Copyright (c) 2014-2023 OpenRCT2 developers
*
@ -40,18 +41,18 @@ static void PaintBoatHireTrackFlat(
const auto offset = CoordsXYZ{ 0, 0, height };
if (direction & 1)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_BOAT_HIRE_FLAT_BACK_NW_SE);
imageId = session.TrackColours.WithIndex(SPR_BOAT_HIRE_FLAT_BACK_NW_SE);
PaintAddImageAsParent(session, imageId, offset, { { 4, 0, height }, { 1, 32, 3 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_BOAT_HIRE_FLAT_FRONT_NW_SE);
imageId = session.TrackColours.WithIndex(SPR_BOAT_HIRE_FLAT_FRONT_NW_SE);
PaintAddImageAsParent(session, imageId, offset, { { 28, 0, height }, { 1, 32, 3 } });
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_BOAT_HIRE_FLAT_BACK_SW_NE);
imageId = session.TrackColours.WithIndex(SPR_BOAT_HIRE_FLAT_BACK_SW_NE);
PaintAddImageAsParent(session, imageId, offset, { { 0, 4, height }, { 32, 1, 3 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_BOAT_HIRE_FLAT_FRONT_SW_NE);
imageId = session.TrackColours.WithIndex(SPR_BOAT_HIRE_FLAT_FRONT_SW_NE);
PaintAddImageAsParent(session, imageId, offset, { { 0, 28, height }, { 32, 1, 3 } });
}
@ -94,31 +95,31 @@ static void PaintBoatHireTrackLeftQuarterTurn1Tile(
switch (direction)
{
case 0:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_BOAT_HIRE_FLAT_QUARTER_TURN_1_TILE_BACK_SW_NW);
imageId = session.TrackColours.WithIndex(SPR_BOAT_HIRE_FLAT_QUARTER_TURN_1_TILE_BACK_SW_NW);
PaintAddImageAsParent(session, imageId, offset, { { 0, 0, height }, { 32, 32, 0 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_BOAT_HIRE_FLAT_QUARTER_TURN_1_TILE_FRONT_SW_NW);
imageId = session.TrackColours.WithIndex(SPR_BOAT_HIRE_FLAT_QUARTER_TURN_1_TILE_FRONT_SW_NW);
PaintAddImageAsParent(session, imageId, offset, { { 28, 28, height + 2 }, { 3, 3, 3 } });
break;
case 1:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_BOAT_HIRE_FLAT_QUARTER_TURN_1_TILE_BACK_NW_NE);
imageId = session.TrackColours.WithIndex(SPR_BOAT_HIRE_FLAT_QUARTER_TURN_1_TILE_BACK_NW_NE);
PaintAddImageAsParent(session, imageId, offset, { { 0, 0, height }, { 32, 32, 0 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_BOAT_HIRE_FLAT_QUARTER_TURN_1_TILE_FRONT_NW_NE);
imageId = session.TrackColours.WithIndex(SPR_BOAT_HIRE_FLAT_QUARTER_TURN_1_TILE_FRONT_NW_NE);
PaintAddImageAsParent(session, imageId, offset, { { 28, 28, height + 2 }, { 3, 3, 3 } });
break;
case 2:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_BOAT_HIRE_FLAT_QUARTER_TURN_1_TILE_BACK_NE_SE);
imageId = session.TrackColours.WithIndex(SPR_BOAT_HIRE_FLAT_QUARTER_TURN_1_TILE_BACK_NE_SE);
PaintAddImageAsParent(session, imageId, offset, { { 0, 0, height }, { 32, 32, 0 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_BOAT_HIRE_FLAT_QUARTER_TURN_1_TILE_FRONT_NE_SE);
imageId = session.TrackColours.WithIndex(SPR_BOAT_HIRE_FLAT_QUARTER_TURN_1_TILE_FRONT_NE_SE);
PaintAddImageAsParent(session, imageId, offset, { { 28, 28, height + 2 }, { 3, 3, 3 } });
break;
case 3:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_BOAT_HIRE_FLAT_QUARTER_TURN_1_TILE_FRONT_SE_SW);
imageId = session.TrackColours.WithIndex(SPR_BOAT_HIRE_FLAT_QUARTER_TURN_1_TILE_FRONT_SE_SW);
PaintAddImageAsParent(session, imageId, offset, { { 28, 28, height + 2 }, { 3, 3, 3 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_BOAT_HIRE_FLAT_QUARTER_TURN_1_TILE_BACK_SE_SW);
imageId = session.TrackColours.WithIndex(SPR_BOAT_HIRE_FLAT_QUARTER_TURN_1_TILE_BACK_SE_SW);
PaintAddImageAsParent(session, imageId, offset, { { 0, 0, height }, { 32, 32, 0 } });
break;
}

View File

@ -223,16 +223,16 @@ static void DinghySlideTrackFlat(
};
uint8_t isChained = trackElement.HasChain() ? 1 : 0;
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[isChained][direction][0]);
auto imageId = session.TrackColours.WithIndex(imageIds[isChained][direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[isChained][direction][1]);
imageId = session.TrackColours.WithIndex(imageIds[isChained][direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 26 } });
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.SupportColours);
}
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);
@ -254,13 +254,13 @@ static void DinghySlideTrackStation(
};
PaintAddImageAsParentRotated(
session, direction, session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]), { 0, 0, height },
session, direction, session.TrackColours.WithIndex(imageIds[direction][0]), { 0, 0, height },
{ { 0, 6, height + 3 }, { 32, 20, 1 } });
PaintAddImageAsParentRotated(
session, direction, GetStationColourScheme(session, trackElement).WithIndex(imageIds[direction][1]), { 0, 0, height },
{ 32, 32, 1 });
DrawSupportsSideBySide(session, direction, height, session.TrackColours[SCHEME_SUPPORTS], MetalSupportType::Tubes);
DrawSupportsSideBySide(session, direction, height, session.SupportColours, MetalSupportType::Tubes);
TrackPaintUtilDrawStation(session, ride, direction, height, trackElement);
@ -290,16 +290,16 @@ static void DinghySlideTrack25DegUp(
};
uint8_t isChained = trackElement.HasChain() ? 1 : 0;
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[isChained][direction][0]);
auto imageId = session.TrackColours.WithIndex(imageIds[isChained][direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[isChained][direction][1]);
imageId = session.TrackColours.WithIndex(imageIds[isChained][direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 50 } });
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 8, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 8, height, session.SupportColours);
}
if (direction == 0 || direction == 3)
@ -327,16 +327,16 @@ static void DinghySlideTrack60DegUp(
{ SPR_DINGHY_SLIDE_60_DEG_SE_NW, SPR_DINGHY_SLIDE_60_DEG_FRONT_SE_NW },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
imageId = session.TrackColours.WithIndex(imageIds[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 98 } });
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 32, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 32, height, session.SupportColours);
}
if (direction == 0 || direction == 3)
@ -373,16 +373,16 @@ static void DinghySlideTrackFlatTo25DegUp(
};
uint8_t isChained = trackElement.HasChain() ? 1 : 0;
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[isChained][direction][0]);
auto imageId = session.TrackColours.WithIndex(imageIds[isChained][direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[isChained][direction][1]);
imageId = session.TrackColours.WithIndex(imageIds[isChained][direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 42 } });
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 3, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 3, height, session.SupportColours);
}
if (direction == 0 || direction == 3)
@ -410,16 +410,16 @@ static void DinghySlideTrack25DegUpTo60DegUp(
{ SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_SE_NW, SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_FRONT_SE_NW },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
imageId = session.TrackColours.WithIndex(imageIds[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 66 } });
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 12, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 12, height, session.SupportColours);
}
if (direction == 0 || direction == 3)
@ -447,16 +447,16 @@ static void DinghySlideTrack60DegUpTo25DegUp(
{ SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_SE_NW, SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_FRONT_SE_NW },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
imageId = session.TrackColours.WithIndex(imageIds[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 66 } });
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 20, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 20, height, session.SupportColours);
}
if (direction == 0 || direction == 3)
@ -493,16 +493,16 @@ static void DinghySlideTrack25DegUpToFlat(
};
uint8_t isChained = trackElement.HasChain() ? 1 : 0;
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[isChained][direction][0]);
auto imageId = session.TrackColours.WithIndex(imageIds[isChained][direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[isChained][direction][1]);
imageId = session.TrackColours.WithIndex(imageIds[isChained][direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 34 } });
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 6, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 6, height, session.SupportColours);
}
if (direction == 0 || direction == 3)
@ -619,17 +619,15 @@ static void DinghySlideTrackRightQuarterTurn5(
},
};
TrackPaintUtilRightQuarterTurn5TilesPaint2(
session, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], imageIds);
TrackPaintUtilRightQuarterTurn5TilesPaint2(
session, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], frontImageIds);
TrackPaintUtilRightQuarterTurn5TilesPaint2(session, height, direction, trackSequence, session.TrackColours, imageIds);
TrackPaintUtilRightQuarterTurn5TilesPaint2(session, height, direction, trackSequence, session.TrackColours, frontImageIds);
switch (trackSequence)
{
case 0:
case 6:
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
}
@ -727,8 +725,8 @@ static void DinghySlideTrackSBendLeft(
},
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][0]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][1]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][trackSequence][0]);
auto frontImageId = session.TrackColours.WithIndex(imageIds[direction][trackSequence][1]);
int16_t bboy;
switch (trackSequence)
@ -738,7 +736,7 @@ static void DinghySlideTrackSBendLeft(
PaintAddImageAsParentRotated(
session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } });
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
break;
@ -751,8 +749,7 @@ static void DinghySlideTrackSBendLeft(
{
const auto supportPlace = (direction & 1) ? MetalSupportPlace::TopRightSide : MetalSupportPlace::TopLeftSide;
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, supportPlace, (direction & 1), height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, supportPlace, (direction & 1), height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
session,
@ -768,8 +765,7 @@ static void DinghySlideTrackSBendLeft(
{
const auto supportPlace = (direction & 1) ? MetalSupportPlace::TopRightSide : MetalSupportPlace::TopLeftSide;
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, supportPlace, (direction & 1), height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, supportPlace, (direction & 1), height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
session,
@ -781,7 +777,7 @@ static void DinghySlideTrackSBendLeft(
PaintAddImageAsParentRotated(
session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } });
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
break;
@ -836,8 +832,8 @@ static void DinghySlideTrackSBendRight(
},
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][0]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][1]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][trackSequence][0]);
auto frontImageId = session.TrackColours.WithIndex(imageIds[direction][trackSequence][1]);
int16_t bboy;
switch (trackSequence)
@ -847,7 +843,7 @@ static void DinghySlideTrackSBendRight(
PaintAddImageAsParentRotated(
session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } });
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
break;
@ -860,8 +856,7 @@ static void DinghySlideTrackSBendRight(
{
const auto supportPlace = (direction & 1) ? MetalSupportPlace::BottomLeftSide
: MetalSupportPlace::BottomRightSide;
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, supportPlace, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
MetalASupportsPaintSetup(session, MetalSupportType::Tubes, supportPlace, 0, height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
session,
@ -877,8 +872,7 @@ static void DinghySlideTrackSBendRight(
{
const auto supportPlace = (direction & 1) ? MetalSupportPlace::BottomLeftSide
: MetalSupportPlace::BottomRightSide;
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, supportPlace, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
MetalASupportsPaintSetup(session, MetalSupportType::Tubes, supportPlace, 0, height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
session,
@ -890,7 +884,7 @@ static void DinghySlideTrackSBendRight(
PaintAddImageAsParentRotated(
session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } });
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
break;
@ -963,10 +957,8 @@ static void DinghySlideTrackRightQuarterTurn3(
},
};
TrackPaintUtilRightQuarterTurn3TilesPaint3(
session, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], imageIds);
TrackPaintUtilRightQuarterTurn3TilesPaint3(
session, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], frontImageIds);
TrackPaintUtilRightQuarterTurn3TilesPaint3(session, height, direction, trackSequence, session.TrackColours, imageIds);
TrackPaintUtilRightQuarterTurn3TilesPaint3(session, height, direction, trackSequence, session.TrackColours, frontImageIds);
TrackPaintUtilRightQuarterTurn3TilesTunnel(session, height, direction, trackSequence, TUNNEL_0);
switch (trackSequence)
@ -974,7 +966,7 @@ static void DinghySlideTrackRightQuarterTurn3(
case 0:
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
}

View File

@ -179,16 +179,16 @@ static void DinghySlideTrackCoveredFlat(
{ SPR_DINGHY_SLIDE_FLAT_COVERED_NW_SE, SPR_DINGHY_SLIDE_FLAT_COVERED_FRONT_NW_SE },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
imageId = session.TrackColours.WithIndex(imageIds[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 26 } });
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.SupportColours);
}
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);
@ -209,16 +209,16 @@ static void DinghySlideTrackCovered25DegUp(
{ SPR_DINGHY_SLIDE_25_DEG_COVERED_SE_NW, SPR_DINGHY_SLIDE_25_DEG_COVERED_FRONT_SE_NW },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
imageId = session.TrackColours.WithIndex(imageIds[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 50 } });
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 8, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 8, height, session.SupportColours);
}
if (direction == 0 || direction == 3)
@ -246,16 +246,16 @@ static void DinghySlideTrackCovered60DegUp(
{ SPR_DINGHY_SLIDE_60_DEG_COVERED_SE_NW, SPR_DINGHY_SLIDE_60_DEG_COVERED_FRONT_SE_NW },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
imageId = session.TrackColours.WithIndex(imageIds[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 98 } });
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 32, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 32, height, session.SupportColours);
}
if (direction == 0 || direction == 3)
@ -283,16 +283,16 @@ static void DinghySlideTrackCoveredFlatTo25DegUp(
{ SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_SE_NW, SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_FRONT_SE_NW },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
imageId = session.TrackColours.WithIndex(imageIds[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 42 } });
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 3, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 3, height, session.SupportColours);
}
if (direction == 0 || direction == 3)
@ -320,16 +320,16 @@ static void DinghySlideTrackCovered25DegUpTo60DegUp(
{ SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_SE_NW, SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_FRONT_SE_NW },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
imageId = session.TrackColours.WithIndex(imageIds[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 66 } });
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 12, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 12, height, session.SupportColours);
}
if (direction == 0 || direction == 3)
@ -357,16 +357,16 @@ static void DinghySlideTrackCovered60DegUpTo25DegUp(
{ SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_SE_NW, SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_FRONT_SE_NW },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
imageId = session.TrackColours.WithIndex(imageIds[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 66 } });
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 20, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 20, height, session.SupportColours);
}
if (direction == 0 || direction == 3)
@ -394,16 +394,16 @@ static void DinghySlideTrackCovered25DegUpToFlat(
{ SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_SE_NW, SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_FRONT_SE_NW },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
imageId = session.TrackColours.WithIndex(imageIds[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 34 } });
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 6, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 6, height, session.SupportColours);
}
if (direction == 0 || direction == 3)
@ -520,17 +520,15 @@ static void DinghySlideTrackCoveredRightQuarterTurn5(
},
};
TrackPaintUtilRightQuarterTurn5TilesPaint2(
session, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], imageIds);
TrackPaintUtilRightQuarterTurn5TilesPaint2(
session, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], frontImageIds);
TrackPaintUtilRightQuarterTurn5TilesPaint2(session, height, direction, trackSequence, session.TrackColours, imageIds);
TrackPaintUtilRightQuarterTurn5TilesPaint2(session, height, direction, trackSequence, session.TrackColours, frontImageIds);
switch (trackSequence)
{
case 0:
case 6:
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
}
@ -621,8 +619,8 @@ static void DinghySlideTrackCoveredSBendLeft(
},
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][0]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][1]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][trackSequence][0]);
auto frontImageId = session.TrackColours.WithIndex(imageIds[direction][trackSequence][1]);
int16_t bboy;
switch (trackSequence)
@ -632,7 +630,7 @@ static void DinghySlideTrackCoveredSBendLeft(
PaintAddImageAsParentRotated(
session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } });
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
break;
@ -645,8 +643,7 @@ static void DinghySlideTrackCoveredSBendLeft(
{
const auto supportPlace = (direction & 1) ? MetalSupportPlace::TopRightSide : MetalSupportPlace::TopLeftSide;
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, supportPlace, (direction & 1), height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, supportPlace, (direction & 1), height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
session,
@ -662,8 +659,7 @@ static void DinghySlideTrackCoveredSBendLeft(
{
const auto supportPlace = (direction & 1) ? MetalSupportPlace::TopRightSide : MetalSupportPlace::TopLeftSide;
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, supportPlace, (direction & 1), height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, supportPlace, (direction & 1), height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
session,
@ -675,7 +671,7 @@ static void DinghySlideTrackCoveredSBendLeft(
PaintAddImageAsParentRotated(
session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } });
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
break;
@ -730,8 +726,8 @@ static void DinghySlideTrackCoveredSBendRight(
},
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][0]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][1]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][trackSequence][0]);
auto frontImageId = session.TrackColours.WithIndex(imageIds[direction][trackSequence][1]);
int16_t bboy;
switch (trackSequence)
@ -741,7 +737,7 @@ static void DinghySlideTrackCoveredSBendRight(
PaintAddImageAsParentRotated(
session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } });
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
break;
@ -754,8 +750,7 @@ static void DinghySlideTrackCoveredSBendRight(
{
const auto supportPlace = (direction & 1) ? MetalSupportPlace::BottomLeftSide
: MetalSupportPlace::BottomRightSide;
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, supportPlace, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
MetalASupportsPaintSetup(session, MetalSupportType::Tubes, supportPlace, 0, height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
session,
@ -771,8 +766,7 @@ static void DinghySlideTrackCoveredSBendRight(
{
const auto supportPlace = (direction & 1) ? MetalSupportPlace::BottomLeftSide
: MetalSupportPlace::BottomRightSide;
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, supportPlace, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
MetalASupportsPaintSetup(session, MetalSupportType::Tubes, supportPlace, 0, height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
session,
@ -784,7 +778,7 @@ static void DinghySlideTrackCoveredSBendRight(
PaintAddImageAsParentRotated(
session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } });
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
break;
@ -857,10 +851,8 @@ static void DinghySlideTrackCoveredRightQuarterTurn3(
},
};
TrackPaintUtilRightQuarterTurn3TilesPaint3(
session, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], imageIds);
TrackPaintUtilRightQuarterTurn3TilesPaint3(
session, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], frontImageIds);
TrackPaintUtilRightQuarterTurn3TilesPaint3(session, height, direction, trackSequence, session.TrackColours, imageIds);
TrackPaintUtilRightQuarterTurn3TilesPaint3(session, height, direction, trackSequence, session.TrackColours, frontImageIds);
TrackPaintUtilRightQuarterTurn3TilesTunnel(session, height, direction, trackSequence, TUNNEL_0);
switch (trackSequence)
@ -868,7 +860,7 @@ static void DinghySlideTrackCoveredRightQuarterTurn3(
case 0:
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.SupportColours);
break;
}

View File

@ -165,8 +165,8 @@ static void PaintLogFlumeTrackFlat(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(LogFlumeTrackFlatImageIds[direction][0]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(LogFlumeTrackFlatImageIds[direction][1]);
auto imageId = session.TrackColours.WithIndex(LogFlumeTrackFlatImageIds[direction][0]);
auto frontImageId = session.TrackColours.WithIndex(LogFlumeTrackFlatImageIds[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 26 } });
@ -174,7 +174,7 @@ static void PaintLogFlumeTrackFlat(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
}
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);
@ -187,7 +187,7 @@ static void PaintLogFlumeTrackStation(
PaintSession& session, const Ride& ride, [[maybe_unused]] uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(LogFlumeTrackFlatImageIds[direction][0]);
auto imageId = session.TrackColours.WithIndex(LogFlumeTrackFlatImageIds[direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height + 3 }, { 32, 20, 1 } });
if (direction & 1)
@ -200,7 +200,7 @@ static void PaintLogFlumeTrackStation(
}
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { 32, 32, 1 });
DrawSupportsSideBySide(session, direction, height, session.TrackColours[SCHEME_SUPPORTS], MetalSupportType::Boxed);
DrawSupportsSideBySide(session, direction, height, session.SupportColours, MetalSupportType::Boxed);
TrackPaintUtilDrawStation3(session, ride, direction, height + 2, height, trackElement);
// Covers shouldn't be offset by +2
@ -222,8 +222,8 @@ static void PaintLogFlumeTrack25DegUp(
{ SPR_LOG_FLUME_25_DEG_UP_SE_NW, SPR_LOG_FLUME_25_DEG_UP_FRONT_SE_NW },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][0]);
auto frontImageId = session.TrackColours.WithIndex(imageIds[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 50 } });
@ -231,7 +231,7 @@ static void PaintLogFlumeTrack25DegUp(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height, session.SupportColours);
}
if (direction == 0 || direction == 3)
@ -258,8 +258,8 @@ static void PaintLogFlumeTrackFlatTo25DegUp(
{ SPR_LOG_FLUME_FLAT_TO_25_DEG_UP_SE_NW, SPR_LOG_FLUME_FLAT_TO_25_DEG_UP_FRONT_SE_NW },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][0]);
auto frontImageId = session.TrackColours.WithIndex(imageIds[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 42 } });
@ -267,7 +267,7 @@ static void PaintLogFlumeTrackFlatTo25DegUp(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 3, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 3, height, session.SupportColours);
}
if (direction == 0 || direction == 3)
@ -294,8 +294,8 @@ static void PaintLogFlumeTrack25DegUpToFlat(
{ SPR_LOG_FLUME_25_DEG_UP_TO_FLAT_SE_NW, SPR_LOG_FLUME_25_DEG_UP_TO_FLAT_FRONT_SE_NW },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][0]);
auto frontImageId = session.TrackColours.WithIndex(imageIds[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 34 } });
@ -303,7 +303,7 @@ static void PaintLogFlumeTrack25DegUpToFlat(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 6, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 6, height, session.SupportColours);
}
if (direction == 0 || direction == 3)
@ -330,8 +330,8 @@ static void PaintLogFlumeTrack25DegDown(
{ SPR_LOG_FLUME_25_DEG_DOWN_SE_NW, SPR_LOG_FLUME_25_DEG_UP_FRONT_NW_SE },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][0]);
auto frontImageId = session.TrackColours.WithIndex(imageIds[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 50 } });
@ -339,7 +339,7 @@ static void PaintLogFlumeTrack25DegDown(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height, session.SupportColours);
}
if (direction == 0 || direction == 3)
@ -366,8 +366,8 @@ static void PaintLogFlumeTrackFlatTo25DegDown(
{ SPR_LOG_FLUME_FLAT_TO_25_DEG_DOWN_SE_NW, SPR_LOG_FLUME_25_DEG_UP_TO_FLAT_FRONT_NW_SE },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][0]);
auto frontImageId = session.TrackColours.WithIndex(imageIds[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 34 } });
@ -375,7 +375,7 @@ static void PaintLogFlumeTrackFlatTo25DegDown(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 6, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 6, height, session.SupportColours);
}
if (direction == 0 || direction == 3)
@ -402,8 +402,8 @@ static void PaintLogFlumeTrack25DegDownToFlat(
{ SPR_LOG_FLUME_25_DEG_DOWN_TO_FLAT_SE_NW, SPR_LOG_FLUME_FLAT_TO_25_DEG_UP_FRONT_NW_SE },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][0]);
auto frontImageId = session.TrackColours.WithIndex(imageIds[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 42 } });
@ -411,7 +411,7 @@ static void PaintLogFlumeTrack25DegDownToFlat(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 3, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 3, height, session.SupportColours);
}
if (direction == 0 || direction == 3)
@ -458,8 +458,8 @@ static void PaintLogFlumeTrackSBendLeft(
},
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][0]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][1]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][trackSequence][0]);
auto frontImageId = session.TrackColours.WithIndex(imageIds[direction][trackSequence][1]);
int16_t bboy;
switch (trackSequence)
@ -469,7 +469,7 @@ static void PaintLogFlumeTrackSBendLeft(
PaintAddImageAsParentRotated(
session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } });
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
break;
@ -482,8 +482,7 @@ static void PaintLogFlumeTrackSBendLeft(
{
const auto supportPlace = (direction & 1) ? MetalSupportPlace::TopRightSide : MetalSupportPlace::TopLeftSide;
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, supportPlace, (direction & 1), height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, supportPlace, (direction & 1), height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
session,
@ -499,8 +498,7 @@ static void PaintLogFlumeTrackSBendLeft(
{
const auto supportPlace = (direction & 1) ? MetalSupportPlace::TopRightSide : MetalSupportPlace::TopLeftSide;
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, supportPlace, (direction & 1), height,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, supportPlace, (direction & 1), height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
session,
@ -512,7 +510,7 @@ static void PaintLogFlumeTrackSBendLeft(
PaintAddImageAsParentRotated(
session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } });
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
break;
@ -567,8 +565,8 @@ static void PaintLogFlumeTrackSBendRight(
},
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][0]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][1]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][trackSequence][0]);
auto frontImageId = session.TrackColours.WithIndex(imageIds[direction][trackSequence][1]);
int16_t bboy;
switch (trackSequence)
@ -578,7 +576,7 @@ static void PaintLogFlumeTrackSBendRight(
PaintAddImageAsParentRotated(
session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } });
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
break;
@ -591,8 +589,7 @@ static void PaintLogFlumeTrackSBendRight(
{
const auto supportPlace = (direction & 1) ? MetalSupportPlace::BottomLeftSide
: MetalSupportPlace::BottomRightSide;
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, supportPlace, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
MetalASupportsPaintSetup(session, MetalSupportType::Boxed, supportPlace, 0, height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
session,
@ -608,8 +605,7 @@ static void PaintLogFlumeTrackSBendRight(
{
const auto supportPlace = (direction & 1) ? MetalSupportPlace::BottomLeftSide
: MetalSupportPlace::BottomRightSide;
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, supportPlace, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
MetalASupportsPaintSetup(session, MetalSupportType::Boxed, supportPlace, 0, height, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
session,
@ -621,7 +617,7 @@ static void PaintLogFlumeTrackSBendRight(
PaintAddImageAsParentRotated(
session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } });
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
break;
@ -679,15 +675,14 @@ static void PaintLogFlumeTrackLeftQuarterTurn3Tiles(
},
};
TrackPaintUtilLeftQuarterTurn3TilesPaint(
session, 2, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], imageIds);
TrackPaintUtilLeftQuarterTurn3TilesPaint(session, 2, height, direction, trackSequence, session.TrackColours, imageIds);
TrackPaintUtilLeftQuarterTurn3TilesPaintWithHeightOffset(
session, 0, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], imageIdsFront, 27);
session, 0, height, direction, trackSequence, session.TrackColours, imageIdsFront, 27);
if (trackSequence != 1 && trackSequence != 2)
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
}
switch (trackSequence)
@ -759,15 +754,14 @@ static void PaintLogFlumeTrackRightQuarterTurn3Tiles(
},
};
TrackPaintUtilRightQuarterTurn3TilesPaint2(
session, 2, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], imageIds);
TrackPaintUtilRightQuarterTurn3TilesPaint2(session, 2, height, direction, trackSequence, session.TrackColours, imageIds);
TrackPaintUtilRightQuarterTurn3TilesPaint2WithHeightOffset(
session, 0, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], imageIdsFront, 27);
session, 0, height, direction, trackSequence, session.TrackColours, imageIdsFront, 27);
if (trackSequence != 1 && trackSequence != 2)
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
}
switch (trackSequence)
@ -811,10 +805,10 @@ static void PaintLogFlumeTrackOnRidePhoto(
{
TrackPaintUtilOnridePhotoPlatformPaint(session, direction, height, MetalSupportType::Boxed);
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(LogFlumeTrackFlatImageIds[direction][0]);
auto imageId = session.TrackColours.WithIndex(LogFlumeTrackFlatImageIds[direction][0]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height + 3 }, { 32, 20, 0 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(LogFlumeTrackFlatImageIds[direction][1]);
imageId = session.TrackColours.WithIndex(LogFlumeTrackFlatImageIds[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height + 5 }, { 32, 1, 21 } });
TrackPaintUtilOnridePhotoPaint(session, direction, height + 3, trackElement);
@ -835,14 +829,13 @@ static void PaintLogFlumeTrackReverser(
{ SPR_LOG_FLUME_REVERSER_SE_NW, SPR_LOG_FLUME_REVERSER_FRONT_SE_NW },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][0]);
auto frontImageId = session.TrackColours.WithIndex(imageIds[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 26 } });
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
MetalASupportsPaintSetup(session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 0, height, session.SupportColours);
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);
PaintUtilSetSegmentSupportHeight(
@ -863,8 +856,8 @@ static void LogFlumeTrack25Down60(
{ SPR_G2_FLUME_25_60_NE_SW_BACK, SPR_G2_FLUME_25_60_NE_SW_BACK_WATER },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][0]);
auto frontImageId = session.TrackColours.WithIndex(imageIds[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height + 4 }, { 32, 1, 42 } });
PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 0 } });
@ -874,7 +867,7 @@ static void LogFlumeTrack25Down60(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height, session.SupportColours);
}
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_14);
@ -884,8 +877,7 @@ static void LogFlumeTrack25Down60(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height + 12,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height + 12, session.SupportColours);
}
PaintUtilPushTunnelRotated(session, direction, height + 24, TUNNEL_2);
@ -906,8 +898,8 @@ static void LogFlumeTrack60Down(
{ SPR_G2_FLUME_60_NE_SW_BACK, SPR_G2_EMPTY },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][0]);
auto frontImageId = session.TrackColours.WithIndex(imageIds[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height + 4 }, { 32, 1, 98 } });
PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
@ -917,7 +909,7 @@ static void LogFlumeTrack60Down(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height, session.SupportColours);
}
PaintUtilPushTunnelRotated(session, direction, height - 8, TUNNEL_SQUARE_7);
@ -927,8 +919,7 @@ static void LogFlumeTrack60Down(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height + 12,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height + 12, session.SupportColours);
}
PaintUtilPushTunnelRotated(session, direction, height + 56, TUNNEL_SQUARE_8);
@ -949,8 +940,8 @@ static void LogFlumeTrack60Down25(
{ SPR_G2_FLUME_60_25_NE_SW_BACK, SPR_G2_FLUME_60_25_NE_SW_BACK_WATER },
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][0]);
auto frontImageId = session.TrackColours.WithIndex(imageIds[direction][1]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height + 4 }, { 32, 1, 42 } });
PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 0 } });
@ -962,7 +953,7 @@ static void LogFlumeTrack60Down25(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height, session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height, session.SupportColours);
}
}
else
@ -972,8 +963,7 @@ static void LogFlumeTrack60Down25(
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
{
MetalASupportsPaintSetup(
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height + 8,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Boxed, MetalSupportPlace::Centre, 8, height + 8, session.SupportColours);
}
}
PaintUtilSetSegmentSupportHeight(

View File

@ -276,28 +276,25 @@ static void PaintRiverRapidsTrackFlat(
if (direction & 1)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
(direction == 1 ? SPR_RIVER_RAPIDS_FLAT_NW_SE : SPR_RIVER_RAPIDS_FLAT_SE_NW));
imageId = session.TrackColours.WithIndex((direction == 1 ? SPR_RIVER_RAPIDS_FLAT_NW_SE : SPR_RIVER_RAPIDS_FLAT_SE_NW));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 4, 0, height }, { 24, 32, 11 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
imageId = session.TrackColours.WithIndex(
(direction == 1 ? SPR_RIVER_RAPIDS_FLAT_FRONT_NW_SE : SPR_RIVER_RAPIDS_FLAT_FRONT_SE_NW));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 10, 10, height }, { 1, 2, 5 } });
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
(direction == 0 ? SPR_RIVER_RAPIDS_FLAT_SW_NE : SPR_RIVER_RAPIDS_FLAT_NE_SW));
imageId = session.TrackColours.WithIndex((direction == 0 ? SPR_RIVER_RAPIDS_FLAT_SW_NE : SPR_RIVER_RAPIDS_FLAT_NE_SW));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 4, height }, { 32, 24, 11 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
imageId = session.TrackColours.WithIndex(
(direction == 0 ? SPR_RIVER_RAPIDS_FLAT_FRONT_SW_NE : SPR_RIVER_RAPIDS_FLAT_FRONT_NE_SW));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 10, 10, height }, { 1, 2, 5 } });
}
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours);
if (direction & 1)
{
@ -330,56 +327,56 @@ static void PaintRiverRapidsTrack25Deg(PaintSession& session, uint8_t direction,
switch (direction)
{
case 0:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][0]);
imageId = session.TrackColours.WithIndex(sprites[direction][0]);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 4, height }, { 32, 24, 4 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]);
imageId = session.TrackColours.WithIndex(sprites[direction][1]);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 27, height + 16 }, { 32, 1, 34 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::Up25Deg);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours,
WoodenSupportTransitionType::Up25Deg);
PaintUtilPushTunnelLeft(session, height - 8, TUNNEL_SQUARE_7);
break;
case 1:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][0]);
imageId = session.TrackColours.WithIndex(sprites[direction][0]);
ps = PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 4, 0, height }, { 24, 32, 4 } });
session.WoodenSupportsPrependTo = ps;
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]);
imageId = session.TrackColours.WithIndex(sprites[direction][1]);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 27, 0, height + 16 }, { 1, 32, 34 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::Up25Deg);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours,
WoodenSupportTransitionType::Up25Deg);
PaintUtilPushTunnelRight(session, height + 8, TUNNEL_SQUARE_8);
break;
case 2:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][0]);
imageId = session.TrackColours.WithIndex(sprites[direction][0]);
ps = PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 4, height }, { 32, 24, 4 } });
session.WoodenSupportsPrependTo = ps;
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]);
imageId = session.TrackColours.WithIndex(sprites[direction][1]);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 27, height + 16 }, { 32, 1, 34 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::Up25Deg);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours,
WoodenSupportTransitionType::Up25Deg);
PaintUtilPushTunnelLeft(session, height + 8, TUNNEL_SQUARE_8);
break;
case 3:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][0]);
imageId = session.TrackColours.WithIndex(sprites[direction][0]);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 4, 0, height }, { 24, 32, 4 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]);
imageId = session.TrackColours.WithIndex(sprites[direction][1]);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 27, 0, height + 16 }, { 1, 32, 34 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::Up25Deg);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours,
WoodenSupportTransitionType::Up25Deg);
PaintUtilPushTunnelRight(session, height - 8, TUNNEL_SQUARE_7);
break;
}
@ -397,57 +394,57 @@ static void PaintRiverRapidsTrack25DegToFlatA(
switch (direction)
{
case 0:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][0]);
imageId = session.TrackColours.WithIndex(sprites[direction][0]);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 4, height }, { 32, 24, 4 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]);
imageId = session.TrackColours.WithIndex(sprites[direction][1]);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 27, height + 16 }, { 32, 1, 18 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::Up25DegToFlat);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours,
WoodenSupportTransitionType::Up25DegToFlat);
PaintUtilPushTunnelLeft(session, height - 8, TUNNEL_SQUARE_FLAT);
break;
case 1:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][0]);
imageId = session.TrackColours.WithIndex(sprites[direction][0]);
ps = PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 4, 0, height }, { 24, 32, 4 } });
session.WoodenSupportsPrependTo = ps;
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]);
imageId = session.TrackColours.WithIndex(sprites[direction][1]);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 27, 0, height + 16 }, { 1, 32, 18 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::Up25DegToFlat);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours,
WoodenSupportTransitionType::Up25DegToFlat);
PaintUtilPushTunnelRight(session, height + 8, TUNNEL_14);
break;
case 2:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][0]);
imageId = session.TrackColours.WithIndex(sprites[direction][0]);
ps = PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 4, height }, { 32, 24, 4 } });
session.WoodenSupportsPrependTo = ps;
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]);
imageId = session.TrackColours.WithIndex(sprites[direction][1]);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 18 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::Up25DegToFlat);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours,
WoodenSupportTransitionType::Up25DegToFlat);
PaintUtilPushTunnelLeft(session, height + 8, TUNNEL_14);
break;
case 3:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][0]);
imageId = session.TrackColours.WithIndex(sprites[direction][0]);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 4, 0, height }, { 24, 32, 4 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]);
imageId = session.TrackColours.WithIndex(sprites[direction][1]);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 27, 0, height + 16 }, { 1, 32, 18 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::Up25DegToFlat);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours,
WoodenSupportTransitionType::Up25DegToFlat);
PaintUtilPushTunnelRight(session, height - 8, TUNNEL_SQUARE_FLAT);
break;
}
@ -465,56 +462,56 @@ static void PaintRiverRapidsTrack25DegToFlatB(
switch (direction)
{
case 0:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][0]);
imageId = session.TrackColours.WithIndex(sprites[direction][0]);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 4, height }, { 32, 24, 11 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]);
imageId = session.TrackColours.WithIndex(sprites[direction][1]);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 27, height + 16 }, { 32, 1, 26 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::FlatToUp25Deg);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours,
WoodenSupportTransitionType::FlatToUp25Deg);
PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_FLAT);
break;
case 1:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][0]);
imageId = session.TrackColours.WithIndex(sprites[direction][0]);
ps = PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 4, 0, height }, { 24, 32, 11 } });
session.WoodenSupportsPrependTo = ps;
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]);
imageId = session.TrackColours.WithIndex(sprites[direction][1]);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 27, 0, height + 16 }, { 1, 32, 26 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::FlatToUp25Deg);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours,
WoodenSupportTransitionType::FlatToUp25Deg);
PaintUtilPushTunnelRight(session, height, TUNNEL_SQUARE_8);
break;
case 2:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][0]);
imageId = session.TrackColours.WithIndex(sprites[direction][0]);
ps = PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 4, height }, { 32, 24, 11 } });
session.WoodenSupportsPrependTo = ps;
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]);
imageId = session.TrackColours.WithIndex(sprites[direction][1]);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 27, height + 16 }, { 32, 1, 26 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::FlatToUp25Deg);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours,
WoodenSupportTransitionType::FlatToUp25Deg);
PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_8);
break;
case 3:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][0]);
imageId = session.TrackColours.WithIndex(sprites[direction][0]);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 4, 0, height }, { 24, 32, 11 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(sprites[direction][1]);
imageId = session.TrackColours.WithIndex(sprites[direction][1]);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 27, 0, height + 16 }, { 1, 32, 26 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::FlatToUp25Deg);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours,
WoodenSupportTransitionType::FlatToUp25Deg);
PaintUtilPushTunnelRight(session, height, TUNNEL_SQUARE_FLAT);
break;
}
@ -580,41 +577,41 @@ static void PaintRiverRapidsTrackLeftQuarterTurn1Tile(
switch (direction)
{
case 0:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_RIVER_RAPIDS_LEFT_QUARTER_TURN_1_TILE_SW_NW);
imageId = session.TrackColours.WithIndex(SPR_RIVER_RAPIDS_LEFT_QUARTER_TURN_1_TILE_SW_NW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 4, 2, height }, { 28, 26, 11 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_RIVER_RAPIDS_LEFT_QUARTER_TURN_1_TILE_FRONT_SW_NW);
imageId = session.TrackColours.WithIndex(SPR_RIVER_RAPIDS_LEFT_QUARTER_TURN_1_TILE_FRONT_SW_NW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 28, 27, height }, { 2, 1, 7 } });
PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_FLAT);
break;
case 1:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_RIVER_RAPIDS_LEFT_QUARTER_TURN_1_TILE_NW_NE);
imageId = session.TrackColours.WithIndex(SPR_RIVER_RAPIDS_LEFT_QUARTER_TURN_1_TILE_NW_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 0, height }, { 25, 25, 5 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_RIVER_RAPIDS_QUARTER_TURN_1_TILE_FRONT_LEFT_NW_NE);
imageId = session.TrackColours.WithIndex(SPR_RIVER_RAPIDS_QUARTER_TURN_1_TILE_FRONT_LEFT_NW_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 27, 1, height }, { 1, 30, 7 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_RIVER_RAPIDS_QUARTER_TURN_1_TILE_FRONT_RIGHT_NW_NE);
imageId = session.TrackColours.WithIndex(SPR_RIVER_RAPIDS_QUARTER_TURN_1_TILE_FRONT_RIGHT_NW_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 1, 27, height }, { 30, 1, 7 } });
break;
case 2:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_RIVER_RAPIDS_LEFT_QUARTER_TURN_1_TILE_NE_SE);
imageId = session.TrackColours.WithIndex(SPR_RIVER_RAPIDS_LEFT_QUARTER_TURN_1_TILE_NE_SE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 2, 4, height }, { 26, 28, 11 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_RIVER_RAPIDS_LEFT_QUARTER_TURN_1_TILE_FRONT_NE_SE);
imageId = session.TrackColours.WithIndex(SPR_RIVER_RAPIDS_LEFT_QUARTER_TURN_1_TILE_FRONT_NE_SE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 10, 10, height }, { 1, 2, 5 } });
PaintUtilPushTunnelRight(session, height, TUNNEL_SQUARE_FLAT);
break;
case 3:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_RIVER_RAPIDS_LEFT_QUARTER_TURN_1_TILE_SE_SW);
imageId = session.TrackColours.WithIndex(SPR_RIVER_RAPIDS_LEFT_QUARTER_TURN_1_TILE_SE_SW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 4, 4, height }, { 28, 28, 11 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_RIVER_RAPIDS_LEFT_QUARTER_TURN_1_TILE_FRONT_SE_SW);
imageId = session.TrackColours.WithIndex(SPR_RIVER_RAPIDS_LEFT_QUARTER_TURN_1_TILE_FRONT_SE_SW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 28, 28, height }, { 1, 1, 7 } });
PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_FLAT);
@ -623,8 +620,7 @@ static void PaintRiverRapidsTrackLeftQuarterTurn1Tile(
}
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
}
@ -639,10 +635,10 @@ static void PaintRiverRapidsTrackRightQuarterTurn1Tile(
switch (direction)
{
case 0:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_RIVER_RAPIDS_RIGHT_QUARTER_TURN_1_TILE_SW_SE);
imageId = session.TrackColours.WithIndex(SPR_RIVER_RAPIDS_RIGHT_QUARTER_TURN_1_TILE_SW_SE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 4, 4, height }, { 28, 28, 11 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_RIVER_RAPIDS_RIGHT_QUARTER_TURN_1_TILE_FRONT_SW_SE);
imageId = session.TrackColours.WithIndex(SPR_RIVER_RAPIDS_RIGHT_QUARTER_TURN_1_TILE_FRONT_SW_SE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 28, 28, height + 2 }, { 1, 1, 7 } });
PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_FLAT);
@ -650,31 +646,31 @@ static void PaintRiverRapidsTrackRightQuarterTurn1Tile(
break;
case 1:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_RIVER_RAPIDS_RIGHT_QUARTER_TURN_1_TILE_SE_NE);
imageId = session.TrackColours.WithIndex(SPR_RIVER_RAPIDS_RIGHT_QUARTER_TURN_1_TILE_SE_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 4, 2, height }, { 28, 26, 11 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_RIVER_RAPIDS_RIGHT_QUARTER_TURN_1_TILE_FRONT_SE_NE);
imageId = session.TrackColours.WithIndex(SPR_RIVER_RAPIDS_RIGHT_QUARTER_TURN_1_TILE_FRONT_SE_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 28, 27, height }, { 2, 1, 7 } });
PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_FLAT);
break;
case 2:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_RIVER_RAPIDS_RIGHT_QUARTER_TURN_1_TILE_NE_NW);
imageId = session.TrackColours.WithIndex(SPR_RIVER_RAPIDS_RIGHT_QUARTER_TURN_1_TILE_NE_NW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 0, height }, { 28, 28, 11 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_RIVER_RAPIDS_QUARTER_TURN_1_TILE_FRONT_LEFT_NW_NE);
imageId = session.TrackColours.WithIndex(SPR_RIVER_RAPIDS_QUARTER_TURN_1_TILE_FRONT_LEFT_NW_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 27, 1, height }, { 1, 22, 7 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_RIVER_RAPIDS_QUARTER_TURN_1_TILE_FRONT_RIGHT_NW_NE);
imageId = session.TrackColours.WithIndex(SPR_RIVER_RAPIDS_QUARTER_TURN_1_TILE_FRONT_RIGHT_NW_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 1, 27, height }, { 22, 1, 7 } });
break;
case 3:
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_RIVER_RAPIDS_RIGHT_QUARTER_TURN_1_TILE_NW_SW);
imageId = session.TrackColours.WithIndex(SPR_RIVER_RAPIDS_RIGHT_QUARTER_TURN_1_TILE_NW_SW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 2, 4, height }, { 26, 28, 11 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_RIVER_RAPIDS_RIGHT_QUARTER_TURN_1_TILE_FRONT_NW_SW);
imageId = session.TrackColours.WithIndex(SPR_RIVER_RAPIDS_RIGHT_QUARTER_TURN_1_TILE_FRONT_NW_SW);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 27, 2, height }, { 1, 28, 7 } });
PaintUtilPushTunnelRight(session, height, TUNNEL_SQUARE_FLAT);
@ -682,8 +678,7 @@ static void PaintRiverRapidsTrackRightQuarterTurn1Tile(
}
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NwSe, direction, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, WoodenSupportSubType::NwSe, direction, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
}
@ -699,53 +694,52 @@ static void PaintRiverRapidsTrackWaterfall(
if (direction & 1)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
imageId = session.TrackColours.WithIndex(
(direction == 1 ? SPR_RIVER_RAPIDS_WATERFALL_NW_SE : SPR_RIVER_RAPIDS_WATERFALL_SE_NW));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 4, 0, height }, { 24, 32, 11 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex((SPR_RIVER_RAPIDS_WATERFALL_BASE_NE_FRAME_0 + frameNum));
imageId = session.TrackColours.WithIndex((SPR_RIVER_RAPIDS_WATERFALL_BASE_NE_FRAME_0 + frameNum));
PaintAddImageAsChild(session, imageId, { 0, 0, height }, { { 4, 0, height }, { 24, 32, 11 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex((SPR_RIVER_RAPIDS_WATERFALL_TOP_NE_FRAME_0 + frameNum));
imageId = session.TrackColours.WithIndex((SPR_RIVER_RAPIDS_WATERFALL_TOP_NE_FRAME_0 + frameNum));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 4, 0, height + 17 }, { 1, 32, 27 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
imageId = session.TrackColours.WithIndex(
(direction == 1 ? SPR_RIVER_RAPIDS_WATERFALL_FRONT_NW_SE : SPR_RIVER_RAPIDS_WATERFALL_FRONT_SE_NW));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 27, 0, height + 17 }, { 1, 32, 27 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex((SPR_RIVER_RAPIDS_WATERFALL_SIDE_SW_FRAME_0 + frameNum));
imageId = session.TrackColours.WithIndex((SPR_RIVER_RAPIDS_WATERFALL_SIDE_SW_FRAME_0 + frameNum));
PaintAddImageAsChild(session, imageId, { 0, 0, height }, { { 27, 0, height + 17 }, { 1, 32, 27 } });
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
imageId = session.TrackColours.WithIndex(
(direction == 0 ? SPR_RIVER_RAPIDS_WATERFALL_SW_NE : SPR_RIVER_RAPIDS_WATERFALL_NE_SW));
auto bb = BoundBoxXYZ{ { 0, 4, height }, { 32, 24, 11 } };
PaintAddImageAsParent(session, imageId, { 0, 0, height }, bb);
imageId = session.TrackColours[SCHEME_TRACK].WithIndex((SPR_RIVER_RAPIDS_WATERFALL_BASE_NW_FRAME_0 + frameNum));
imageId = session.TrackColours.WithIndex((SPR_RIVER_RAPIDS_WATERFALL_BASE_NW_FRAME_0 + frameNum));
PaintAddImageAsChild(session, imageId, { 0, 0, height }, bb);
bb.offset = { 0, 4, height + 17 };
bb.length = { 32, 1, 27 };
imageId = session.TrackColours[SCHEME_TRACK].WithIndex((SPR_RIVER_RAPIDS_WATERFALL_TOP_NW_FRAME_0 + frameNum));
imageId = session.TrackColours.WithIndex((SPR_RIVER_RAPIDS_WATERFALL_TOP_NW_FRAME_0 + frameNum));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, bb);
bb.offset = { 0, 27, height + 17 };
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
imageId = session.TrackColours.WithIndex(
(direction == 0 ? SPR_RIVER_RAPIDS_WATERFALL_FRONT_SW_NE : SPR_RIVER_RAPIDS_WATERFALL_FRONT_NE_SW));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, bb);
imageId = session.TrackColours[SCHEME_TRACK].WithIndex((SPR_RIVER_RAPIDS_WATERFALL_SIDE_SE_FRAME_0 + frameNum));
imageId = session.TrackColours.WithIndex((SPR_RIVER_RAPIDS_WATERFALL_SIDE_SE_FRAME_0 + frameNum));
PaintAddImageAsChild(session, imageId, { 0, 0, height }, bb);
}
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours);
if (direction & 1)
{
@ -771,24 +765,23 @@ static void PaintRiverRapidsTrackRapids(
if (direction & 1)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex((SPR_RIVER_RAPIDS_RAPIDS_NW_SE_FRAME_0 + frameNum));
imageId = session.TrackColours.WithIndex((SPR_RIVER_RAPIDS_RAPIDS_NW_SE_FRAME_0 + frameNum));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 4, 0, height }, { 24, 32, 11 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_RIVER_RAPIDS_RAPIDS_FRONT_NW_SE);
imageId = session.TrackColours.WithIndex(SPR_RIVER_RAPIDS_RAPIDS_FRONT_NW_SE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 27, 0, height + 17 }, { 1, 32, 11 } });
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex((SPR_RIVER_RAPIDS_RAPIDS_SW_NE_FRAME_0 + frameNum));
imageId = session.TrackColours.WithIndex((SPR_RIVER_RAPIDS_RAPIDS_SW_NE_FRAME_0 + frameNum));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 4, height }, { 32, 24, 11 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_RIVER_RAPIDS_RAPIDS_FRONT_SW_NE);
imageId = session.TrackColours.WithIndex(SPR_RIVER_RAPIDS_RAPIDS_FRONT_SW_NE);
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 27, height + 17 }, { 32, 1, 11 } });
}
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours);
if (direction & 1)
{
@ -824,44 +817,41 @@ static void PaintRiverRapidsTrackWhirlpool(
if (direction & 1)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
(direction == 1 ? SPR_RIVER_RAPIDS_FLAT_NW_SE : SPR_RIVER_RAPIDS_FLAT_SE_NW));
imageId = session.TrackColours.WithIndex((direction == 1 ? SPR_RIVER_RAPIDS_FLAT_NW_SE : SPR_RIVER_RAPIDS_FLAT_SE_NW));
auto bb = BoundBoxXYZ{ { 4, 0, height }, { 24, 32, 11 } };
PaintAddImageAsParent(session, imageId, { 0, 0, height }, bb);
imageId = session.TrackColours[SCHEME_TRACK].WithIndex((SPR_RIVER_RAPIDS_RAPIDS_WHIRLPOOL_FRAME_0 + frameNum));
imageId = session.TrackColours.WithIndex((SPR_RIVER_RAPIDS_RAPIDS_WHIRLPOOL_FRAME_0 + frameNum));
PaintAddImageAsChild(session, imageId, { 0, 0, height }, bb);
bb.offset = { 10, 10, height };
bb.length = { 1, 2, 5 };
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
imageId = session.TrackColours.WithIndex(
(direction == 1 ? SPR_RIVER_RAPIDS_FLAT_FRONT_NW_SE : SPR_RIVER_RAPIDS_FLAT_FRONT_SE_NW));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, bb);
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
(direction == 0 ? SPR_RIVER_RAPIDS_FLAT_SW_NE : SPR_RIVER_RAPIDS_FLAT_NE_SW));
imageId = session.TrackColours.WithIndex((direction == 0 ? SPR_RIVER_RAPIDS_FLAT_SW_NE : SPR_RIVER_RAPIDS_FLAT_NE_SW));
auto bb = BoundBoxXYZ{ { 0, 4, height }, { 32, 24, 11 } };
PaintAddImageAsParent(session, imageId, { 0, 0, height }, bb);
imageId = session.TrackColours[SCHEME_TRACK].WithIndex((SPR_RIVER_RAPIDS_RAPIDS_WHIRLPOOL_FRAME_0 + frameNum));
imageId = session.TrackColours.WithIndex((SPR_RIVER_RAPIDS_RAPIDS_WHIRLPOOL_FRAME_0 + frameNum));
PaintAddImageAsChild(session, imageId, { 0, 0, height }, bb);
bb.offset = { 10, 10, height };
bb.length = { 1, 2, 5 };
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
imageId = session.TrackColours.WithIndex(
(direction == 0 ? SPR_RIVER_RAPIDS_FLAT_FRONT_SW_NE : SPR_RIVER_RAPIDS_FLAT_FRONT_NE_SW));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, bb);
}
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours);
if (direction & 1)
{

View File

@ -478,14 +478,14 @@ static void PaintSplashBoatsTrack25DegUp(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SplashBoats25DegUpImageId[direction]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(SplashBoats25DegUpFrontImageId[direction]);
auto imageId = session.TrackColours.WithIndex(SplashBoats25DegUpImageId[direction]);
auto frontImageId = session.TrackColours.WithIndex(SplashBoats25DegUpFrontImageId[direction]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 50 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_SUPPORTS],
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours,
WoodenSupportTransitionType::Up25Deg);
if (direction == 0 || direction == 3)
@ -504,15 +504,15 @@ static void PaintSplashBoatsTrack60DegUp(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SplashBoats60DegUpImageId[direction]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(SplashBoats60DegUpFrontImageId[direction]);
auto imageId = session.TrackColours.WithIndex(SplashBoats60DegUpImageId[direction]);
auto frontImageId = session.TrackColours.WithIndex(SplashBoats60DegUpFrontImageId[direction]);
session.WoodenSupportsPrependTo = PaintAddImageAsParentRotated(
session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 98 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_SUPPORTS],
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours,
WoodenSupportTransitionType::Up60Deg);
if (direction == 0 || direction == 3)
@ -531,14 +531,14 @@ static void PaintSplashBoatsTrackFlatTo25DegUp(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SplashBoatsFlatTo25DegUpImageId[direction]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(SplashBoatsFlatTo25DegUpFrontImageId[direction]);
auto imageId = session.TrackColours.WithIndex(SplashBoatsFlatTo25DegUpImageId[direction]);
auto frontImageId = session.TrackColours.WithIndex(SplashBoatsFlatTo25DegUpFrontImageId[direction]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 42 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_SUPPORTS],
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours,
WoodenSupportTransitionType::FlatToUp25Deg);
if (direction == 0 || direction == 3)
@ -557,14 +557,14 @@ static void PaintSplashBoatsTrack25DegUpToFlat(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SplashBoats25DegUpToFlatImageId[direction]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(SplashBoats25DegUpToFlatFrontImageId[direction]);
auto imageId = session.TrackColours.WithIndex(SplashBoats25DegUpToFlatImageId[direction]);
auto frontImageId = session.TrackColours.WithIndex(SplashBoats25DegUpToFlatFrontImageId[direction]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 34 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_SUPPORTS],
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours,
WoodenSupportTransitionType::Up25DegToFlat);
if (direction == 0 || direction == 3)
@ -583,15 +583,15 @@ static void PaintSplashBoatsTrack25DegUpTo60DegUp(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SplashBoats25DegUpTo60DegUpImageId[direction]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(SplashBoats25DegUpTo60DegUpFrontImageId[direction]);
auto imageId = session.TrackColours.WithIndex(SplashBoats25DegUpTo60DegUpImageId[direction]);
auto frontImageId = session.TrackColours.WithIndex(SplashBoats25DegUpTo60DegUpFrontImageId[direction]);
session.WoodenSupportsPrependTo = PaintAddImageAsParentRotated(
session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 66 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_SUPPORTS],
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours,
WoodenSupportTransitionType::Up25DegToUp60Deg);
if (direction == 0 || direction == 3)
@ -610,15 +610,15 @@ static void PaintSplashBoatsTrack60DegUpTo25DegUp(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SplashBoats60DegUpTo25DegUpImageId[direction]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(SplashBoats60DegUpTo25DegUpFrontImageId[direction]);
auto imageId = session.TrackColours.WithIndex(SplashBoats60DegUpTo25DegUpImageId[direction]);
auto frontImageId = session.TrackColours.WithIndex(SplashBoats60DegUpTo25DegUpFrontImageId[direction]);
session.WoodenSupportsPrependTo = PaintAddImageAsParentRotated(
session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 66 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.TrackColours[SCHEME_SUPPORTS],
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours,
WoodenSupportTransitionType::Up60DegToUp25Deg);
if (direction == 0 || direction == 3)
@ -637,15 +637,15 @@ static void PaintSplashBoatsTrack25DegDown(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SplashBoats25DegDownImageId[direction]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(SplashBoats25DegDownFrontImageId[direction]);
auto imageId = session.TrackColours.WithIndex(SplashBoats25DegDownImageId[direction]);
auto frontImageId = session.TrackColours.WithIndex(SplashBoats25DegDownFrontImageId[direction]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 50 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, (direction + 2) % NumOrthogonalDirections, height,
session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::Up25Deg);
session.SupportColours, WoodenSupportTransitionType::Up25Deg);
if (direction == 0 || direction == 3)
{
@ -670,15 +670,15 @@ static void PaintSplashBoatsTrackFlatTo25DegDown(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SplashBoatsFlatTo25DegDownImageId[direction]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(SplashBoatsFlatTo25DegDownFrontImageId[direction]);
auto imageId = session.TrackColours.WithIndex(SplashBoatsFlatTo25DegDownImageId[direction]);
auto frontImageId = session.TrackColours.WithIndex(SplashBoatsFlatTo25DegDownFrontImageId[direction]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 34 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, (direction + 2) % NumOrthogonalDirections, height,
session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::Up25DegToFlat);
session.SupportColours, WoodenSupportTransitionType::Up25DegToFlat);
if (direction == 0 || direction == 3)
{
@ -710,15 +710,15 @@ static void PaintSplashBoatsTrack25DegDownToFlat(
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
const TrackElement& trackElement)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SplashBoats25DegDownToFlatImageId[direction]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(SplashBoats25DegDownToFlatFrontImageId[direction]);
auto imageId = session.TrackColours.WithIndex(SplashBoats25DegDownToFlatImageId[direction]);
auto frontImageId = session.TrackColours.WithIndex(SplashBoats25DegDownToFlatFrontImageId[direction]);
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
PaintAddImageAsParentRotated(session, direction, frontImageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 42 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, (direction + 2) % NumOrthogonalDirections, height,
session.TrackColours[SCHEME_SUPPORTS], WoodenSupportTransitionType::FlatToUp25Deg);
session.SupportColours, WoodenSupportTransitionType::FlatToUp25Deg);
if (direction == 0 || direction == 3)
{
@ -742,28 +742,27 @@ static void PaintSplashBoatsTrackFlat(
if (direction & 1)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
imageId = session.TrackColours.WithIndex(
(direction == 1 ? SPR_SPLASH_BOATS_FLAT_TOP_NW_SE : SPR_SPLASH_BOATS_FLAT_TOP_SE_NW));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 6, 0, height }, { 20, 32, 2 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
imageId = session.TrackColours.WithIndex(
(direction == 1 ? SPR_SPLASH_BOATS_FLAT_SIDE_NW_SE : SPR_SPLASH_BOATS_FLAT_SIDE_SE_NW));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 27, 0, height }, { 1, 32, 26 } });
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
imageId = session.TrackColours.WithIndex(
(direction == 0 ? SPR_SPLASH_BOATS_FLAT_TOP_SW_NE : SPR_SPLASH_BOATS_FLAT_TOP_NE_SW));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
imageId = session.TrackColours.WithIndex(
(direction == 0 ? SPR_SPLASH_BOATS_FLAT_SIDE_SW_NE : SPR_SPLASH_BOATS_FLAT_SIDE_NE_SW));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 26 } });
}
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours);
if (direction & 1)
{
@ -785,7 +784,7 @@ static void PaintSplashBoatsStation(
{
if (direction & 1)
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
auto imageId = session.TrackColours.WithIndex(
(direction == 1 ? SPR_SPLASH_BOATS_FLAT_TOP_NW_SE : SPR_SPLASH_BOATS_FLAT_TOP_SE_NW));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 6, 0, height + 3 }, { 20, 32, 1 } });
@ -794,7 +793,7 @@ static void PaintSplashBoatsStation(
}
else
{
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(
auto imageId = session.TrackColours.WithIndex(
(direction == 0 ? SPR_SPLASH_BOATS_FLAT_TOP_SW_NE : SPR_SPLASH_BOATS_FLAT_TOP_NE_SW));
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { { 0, 6, height + 3 }, { 32, 20, 1 } });
@ -803,8 +802,7 @@ static void PaintSplashBoatsStation(
}
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours);
TrackPaintUtilDrawNarrowStationPlatform(session, ride, direction, height, 7, trackElement);
@ -820,9 +818,9 @@ static void PaintSplashBoatsTrackLeftQuarterTurn5Tiles(
const TrackElement& trackElement)
{
TrackPaintUtilRightQuarterTurn5TilesPaint2(
session, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], RiverRaftsLeftQuarterTurn5_Top);
session, height, direction, trackSequence, session.TrackColours, RiverRaftsLeftQuarterTurn5_Top);
TrackPaintUtilRightQuarterTurn5TilesPaint2(
session, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], RiverRaftsLeftQuarterTurn5_Side);
session, height, direction, trackSequence, session.TrackColours, RiverRaftsLeftQuarterTurn5_Side);
if (trackSequence != 1 && trackSequence != 4)
{
@ -866,8 +864,7 @@ static void PaintSplashBoatsTrackLeftQuarterTurn5Tiles(
};
WoodenASupportsPaintSetup(
session, WoodenSupportType::Truss, supportTypes[direction][trackSequence], height,
session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, supportTypes[direction][trackSequence], height, session.SupportColours);
}
switch (trackSequence)
@ -933,9 +930,9 @@ static void PaintSplashBoatsTrackRightQuarterTurn5Tiles(
const TrackElement& trackElement)
{
TrackPaintUtilRightQuarterTurn5TilesPaint2(
session, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], RiverRaftsRightQuarterTurn5_Top);
session, height, direction, trackSequence, session.TrackColours, RiverRaftsRightQuarterTurn5_Top);
TrackPaintUtilRightQuarterTurn5TilesPaint2(
session, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], RiverRaftsRightQuarterTurn5_Side);
session, height, direction, trackSequence, session.TrackColours, RiverRaftsRightQuarterTurn5_Side);
if (trackSequence != 1 && trackSequence != 4)
{
@ -979,8 +976,7 @@ static void PaintSplashBoatsTrackRightQuarterTurn5Tiles(
};
WoodenASupportsPaintSetup(
session, WoodenSupportType::Truss, supportTypes[direction][trackSequence], height,
session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, supportTypes[direction][trackSequence], height, session.SupportColours);
}
switch (trackSequence)
@ -1072,8 +1068,8 @@ static void PaintSplashBoatsTrackSBendLeft(
},
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][0]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][1]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][trackSequence][0]);
auto frontImageId = session.TrackColours.WithIndex(imageIds[direction][trackSequence][1]);
int16_t bboy;
switch (trackSequence)
@ -1083,8 +1079,7 @@ static void PaintSplashBoatsTrackSBendLeft(
PaintAddImageAsParentRotated(
session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
break;
case 1:
@ -1094,8 +1089,7 @@ static void PaintSplashBoatsTrackSBendLeft(
session, direction, frontImageId, { 0, 0, height }, { { 0, bboy, height + 27 }, { 32, 26, 0 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner3, direction, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner3, direction, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session,
@ -1109,8 +1103,7 @@ static void PaintSplashBoatsTrackSBendLeft(
session, direction, frontImageId, { 0, 0, height }, { { 0, bboy, height + 27 }, { 32, 26, 0 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner1, direction, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner1, direction, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session,
@ -1122,8 +1115,7 @@ static void PaintSplashBoatsTrackSBendLeft(
PaintAddImageAsParentRotated(
session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
break;
}
@ -1178,8 +1170,8 @@ static void PaintSplashBoatsTrackSBendRight(
},
};
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][0]);
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][1]);
auto imageId = session.TrackColours.WithIndex(imageIds[direction][trackSequence][0]);
auto frontImageId = session.TrackColours.WithIndex(imageIds[direction][trackSequence][1]);
int16_t bboy;
switch (trackSequence)
@ -1189,8 +1181,7 @@ static void PaintSplashBoatsTrackSBendRight(
PaintAddImageAsParentRotated(
session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
break;
case 1:
@ -1200,8 +1191,7 @@ static void PaintSplashBoatsTrackSBendRight(
session, direction, frontImageId, { 0, 0, height }, { { 0, bboy, height + 27 }, { 32, 26, 0 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner2, direction, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner2, direction, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session,
@ -1215,8 +1205,7 @@ static void PaintSplashBoatsTrackSBendRight(
session, direction, frontImageId, { 0, 0, height }, { { 0, bboy, height + 27 }, { 32, 26, 0 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, WoodenSupportSubType::Corner0, direction, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session,
@ -1228,8 +1217,7 @@ static void PaintSplashBoatsTrackSBendRight(
PaintAddImageAsParentRotated(
session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } });
WoodenASupportsPaintSetupRotated(
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height,
session.TrackColours[SCHEME_SUPPORTS]);
session, WoodenSupportType::Truss, WoodenSupportSubType::NeSw, direction, height, session.SupportColours);
PaintUtilSetSegmentSupportHeight(session, SEGMENTS_ALL, 0xFFFF, 0);
break;
}

View File

@ -74,7 +74,7 @@ static void SubmarineRidePaintTrackStation(
if (direction & 1)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_SE_NW);
imageId = session.TrackColours.WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_SE_NW);
PaintAddImageAsParent(session, imageId, { 0, 0, heightLower }, { { 6, 0, heightLower }, { 20, 32, 3 } });
PaintUtilPushTunnelRight(session, height, TUNNEL_SQUARE_FLAT);
@ -83,7 +83,7 @@ static void SubmarineRidePaintTrackStation(
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_NE_SW);
imageId = session.TrackColours.WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_NE_SW);
PaintAddImageAsParent(session, imageId, { 0, 0, heightLower }, { { 0, 6, heightLower }, { 32, 20, 3 } });
PaintUtilPushTunnelLeft(session, height, TUNNEL_SQUARE_FLAT);
@ -104,13 +104,13 @@ static void SubmarineRidePaintTrackFlat(
if (direction & 1)
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_SE_NW);
imageId = session.TrackColours.WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_SE_NW);
PaintAddImageAsParent(session, imageId, { 0, 0, heightLower }, { { 6, 0, heightLower }, { 20, 32, 3 } });
PaintUtilPushTunnelRight(session, heightLower, TUNNEL_0);
}
else
{
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_NE_SW);
imageId = session.TrackColours.WithIndex(SPR_TRACK_SUBMARINE_RIDE_MINI_HELICOPTERS_FLAT_NE_SW);
PaintAddImageAsParent(session, imageId, { 0, 0, heightLower }, { { 0, 6, heightLower }, { 32, 20, 3 } });
PaintUtilPushTunnelLeft(session, heightLower, TUNNEL_0);
}
@ -119,7 +119,7 @@ static void SubmarineRidePaintTrackFlat(
{
MetalASupportsPaintSetup(
session, (direction & 1) ? MetalSupportType::StickAlt : MetalSupportType::Stick, MetalSupportPlace::Centre, -1,
heightLower, session.TrackColours[SCHEME_SUPPORTS]);
heightLower, session.SupportColours);
}
PaintUtilSetSegmentSupportHeight(
@ -132,7 +132,7 @@ static void SubmarineRidePaintTrackLeftQuarterTurn3Tiles(
const TrackElement& trackElement)
{
TrackPaintUtilLeftQuarterTurn3TilesPaint(
session, 3, height - 16, direction, trackSequence, session.TrackColours[SCHEME_TRACK],
session, 3, height - 16, direction, trackSequence, session.TrackColours,
trackSpritesSubmarineRideMiniHelicoptersQuarterTurn3Tiles);
TrackPaintUtilLeftQuarterTurn3TilesTunnel(session, height - 16, TUNNEL_0, direction, trackSequence);
@ -140,8 +140,7 @@ static void SubmarineRidePaintTrackLeftQuarterTurn3Tiles(
{
case 0:
MetalASupportsPaintSetup(
session, MetalSupportType::Stick, MetalSupportPlace::Centre, -1, height - 16,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Stick, MetalSupportPlace::Centre, -1, height - 16, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_B4, direction), 0xFFFF, 0);
break;
@ -151,8 +150,7 @@ static void SubmarineRidePaintTrackLeftQuarterTurn3Tiles(
break;
case 3:
MetalASupportsPaintSetup(
session, MetalSupportType::Stick, MetalSupportPlace::Centre, -1, height - 16,
session.TrackColours[SCHEME_SUPPORTS]);
session, MetalSupportType::Stick, MetalSupportPlace::Centre, -1, height - 16, session.SupportColours);
PaintUtilSetSegmentSupportHeight(
session, PaintUtilRotateSegments(SEGMENT_C8 | SEGMENT_C4 | SEGMENT_D4 | SEGMENT_C0, direction), 0xFFFF, 0);
break;
@ -180,8 +178,7 @@ static void SubmarineRidePaintTrackLeftQuarterTurn1Tile(
const TrackElement& trackElement)
{
TrackPaintUtilLeftQuarterTurn1TilePaint(
session, 1, height - 16, 0, direction, session.TrackColours[SCHEME_TRACK],
trackSpritesSubmarineRideMiniHelicoptersQuarterTurn1Tile);
session, 1, height - 16, 0, direction, session.TrackColours, trackSpritesSubmarineRideMiniHelicoptersQuarterTurn1Tile);
TrackPaintUtilLeftQuarterTurn1TileTunnel(session, direction, height - 16, 0, TUNNEL_0, 0, TUNNEL_0);
PaintUtilSetSegmentSupportHeight(