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:
@@ -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
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user