1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-15 11:03:00 +01:00

Introduce normalised Wooden A supports functions

This commit is contained in:
Gymnasiast
2023-04-16 17:06:14 +02:00
parent 809e172a84
commit 33bd5c494f
3 changed files with 1645 additions and 565 deletions

View File

@@ -446,6 +446,45 @@ static constexpr const uint16_t word_97B3C4[] = {
// clang-format on
static WoodenSupportSubType rotatedWoodenSupportSubTypes[6][NumOrthogonalDirections] = {
{
WoodenSupportSubType::NeSw,
WoodenSupportSubType::NwSe,
WoodenSupportSubType::NeSw,
WoodenSupportSubType::NwSe,
},
{
WoodenSupportSubType::NwSe,
WoodenSupportSubType::NeSw,
WoodenSupportSubType::NwSe,
WoodenSupportSubType::NeSw,
},
{
WoodenSupportSubType::Corner0,
WoodenSupportSubType::Corner1,
WoodenSupportSubType::Corner2,
WoodenSupportSubType::Corner3,
},
{
WoodenSupportSubType::Corner1,
WoodenSupportSubType::Corner2,
WoodenSupportSubType::Corner3,
WoodenSupportSubType::Corner0,
},
{
WoodenSupportSubType::Corner2,
WoodenSupportSubType::Corner3,
WoodenSupportSubType::Corner0,
WoodenSupportSubType::Corner1,
},
{
WoodenSupportSubType::Corner3,
WoodenSupportSubType::Corner0,
WoodenSupportSubType::Corner1,
WoodenSupportSubType::Corner2,
},
};
/**
* Draw repeated supports for left over space
*
@@ -641,6 +680,28 @@ bool WoodenASupportsPaintSetup(
return hasSupports;
}
bool WoodenASupportsPaintSetup(
PaintSession& session, WoodenSupportType supportType, WoodenSupportSubType subType, int32_t height, ImageId imageTemplate,
WoodenSupportTransitionType transitionType, Direction direction)
{
int32_t oldSupportType = (EnumValue(supportType) * 6) + EnumValue(subType);
int32_t special = 0;
if (transitionType != WoodenSupportTransitionType::None)
{
special = (EnumValue(transitionType) * NumOrthogonalDirections) + direction + 1;
}
return WoodenASupportsPaintSetup(session, oldSupportType, special, height, imageTemplate);
}
bool WoodenASupportsPaintSetupRotated(
PaintSession& session, WoodenSupportType supportType, WoodenSupportSubType subType, Direction direction, int32_t height,
ImageId imageTemplate, WoodenSupportTransitionType transitionType)
{
subType = rotatedWoodenSupportSubTypes[EnumValue(subType)][direction];
return WoodenASupportsPaintSetup(session, supportType, subType, height, imageTemplate, transitionType, direction);
}
/**
* Wooden supports
* rct2: 0x00662D5C

View File

@@ -17,8 +17,41 @@ struct FootpathPaintInfo;
constexpr const uint8_t NumVanillaWoodenSupportTypes = 49;
enum class WoodenSupportType : uint8_t
{
Truss = 0,
Mine = 1,
};
enum class WoodenSupportSubType : uint8_t
{
NeSw = 0,
NwSe = 1,
Corner0 = 2,
Corner1 = 3,
Corner2 = 4,
Corner3 = 5,
};
enum class WoodenSupportTransitionType : uint8_t
{
None = 255,
FlatToUp25Deg = 0,
Up25DegToFlat = 1,
Up25Deg = 2,
Up25DegToUp60Deg = 3,
Up60DegToUp25Deg = 4,
Up60Deg = 5,
};
bool WoodenASupportsPaintSetup(
PaintSession& session, int32_t supportType, int32_t special, int32_t height, ImageId imageTemplate);
bool WoodenASupportsPaintSetup(
PaintSession& session, WoodenSupportType supportType, WoodenSupportSubType subType, int32_t height, ImageId imageTemplate,
WoodenSupportTransitionType transitionType = WoodenSupportTransitionType::None, Direction direction = 0);
bool WoodenASupportsPaintSetupRotated(
PaintSession& session, WoodenSupportType supportType, WoodenSupportSubType subType, Direction direction, int32_t height,
ImageId imageTemplate, WoodenSupportTransitionType transitionType = WoodenSupportTransitionType::None);
bool WoodenBSupportsPaintSetup(
PaintSession& session, int32_t supportType, int32_t special, int32_t height, ImageId imageTemplate);
bool MetalASupportsPaintSetup(

File diff suppressed because it is too large Load Diff