mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-30 02:05:13 +01:00
Create slope and colour functions for WallElement
This commit is contained in:
@@ -54,11 +54,6 @@ bool TileElementBase::IsGhost() const
|
||||
return (this->flags & TILE_ELEMENT_FLAG_GHOST) != 0;
|
||||
}
|
||||
|
||||
uint8_t WallElement::GetSlope() const
|
||||
{
|
||||
return (this->type & TILE_ELEMENT_QUADRANT_MASK) >> 6;
|
||||
}
|
||||
|
||||
bool tile_element_is_underground(rct_tile_element* tileElement)
|
||||
{
|
||||
do
|
||||
|
||||
@@ -297,10 +297,26 @@ assert_struct_size(LargeSceneryElement, 8);
|
||||
|
||||
struct WallElement : TileElementBase
|
||||
{
|
||||
rct_tile_element_wall_properties temp;
|
||||
//private:
|
||||
uint8_t entryIndex; // 4
|
||||
union
|
||||
{
|
||||
uint8_t colour_3; // 5
|
||||
BannerIndex banner_index; // 5
|
||||
};
|
||||
uint8_t colour_1; // 6 0b_2221_1111 2 = colour_2 (uses flags for rest of colour2), 1 = colour_1
|
||||
uint8_t animation; // 7 0b_dfff_ft00 d = direction, f = frame num, t = across track flag (not used)
|
||||
|
||||
public:
|
||||
uint8_t GetSlope() const;
|
||||
void SetSlope(uint8_t newslope);
|
||||
|
||||
colour_t GetPrimaryColour() const;
|
||||
void SetPrimaryColour(colour_t newColour);
|
||||
colour_t GetSecondaryColour() const;
|
||||
void SetSecondaryColour(colour_t newColour);
|
||||
colour_t GetTertiaryColour() const;
|
||||
void SetTertiaryColour(colour_t newColour);
|
||||
};
|
||||
assert_struct_size(WallElement, 8);
|
||||
|
||||
|
||||
@@ -749,3 +749,53 @@ void game_command_set_wall_colour(
|
||||
*eax & 0xFFFF, *ecx & 0xFFFF, (*edx >> 8) & 0xFF, *edx & 0xFF, (*ebx >> 8) & 0xFF, *ebp & 0xFF, (*ebp >> 8) & 0xFF,
|
||||
*ebx & 0xFF);
|
||||
}
|
||||
|
||||
uint8_t WallElement::GetSlope() const
|
||||
{
|
||||
return (type & TILE_ELEMENT_QUADRANT_MASK) >> 6;
|
||||
}
|
||||
|
||||
void WallElement::SetSlope(uint8_t newSlope)
|
||||
{
|
||||
type &= ~TILE_ELEMENT_QUADRANT_MASK;
|
||||
type |= (newSlope << 6);
|
||||
}
|
||||
|
||||
colour_t WallElement::GetPrimaryColour() const
|
||||
{
|
||||
return colour_1 & TILE_ELEMENT_COLOUR_MASK;
|
||||
}
|
||||
|
||||
colour_t WallElement::GetSecondaryColour() const
|
||||
{
|
||||
uint8_t secondaryColour = (colour_1 & ~TILE_ELEMENT_COLOUR_MASK) >> 5;
|
||||
secondaryColour |= (flags & 0x60) >> 2;
|
||||
return secondaryColour;
|
||||
}
|
||||
|
||||
colour_t WallElement::GetTertiaryColour() const
|
||||
{
|
||||
return colour_3 & TILE_ELEMENT_COLOUR_MASK;
|
||||
}
|
||||
|
||||
void WallElement::SetPrimaryColour(colour_t newColour)
|
||||
{
|
||||
assert(newColour <= 31);
|
||||
colour_1 &= ~TILE_ELEMENT_COLOUR_MASK;
|
||||
colour_1 |= newColour;
|
||||
}
|
||||
|
||||
void WallElement::SetSecondaryColour(colour_t newColour)
|
||||
{
|
||||
colour_1 &= TILE_ELEMENT_COLOUR_MASK;
|
||||
colour_1 |= (newColour & 0x7) << 5;
|
||||
flags &= ~0x60;
|
||||
flags |= (newColour & 0x18) << 2;
|
||||
}
|
||||
|
||||
void WallElement::SetTertiaryColour(colour_t newColour)
|
||||
{
|
||||
assert(newColour <= 31);
|
||||
colour_3 &= ~TILE_ELEMENT_COLOUR_MASK;
|
||||
colour_3 |= newColour;
|
||||
}
|
||||
Reference in New Issue
Block a user