1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-06 06:32:56 +01:00

Call WoodenA/B functions directly in MiniatureRailway.cpp

This commit is contained in:
Gymnasiast
2023-11-12 19:16:52 +01:00
parent f47cfa79c0
commit 7f458f5b46

View File

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