Add more surface element APIs

This commit is contained in:
Ted John 2020-02-29 21:31:22 +00:00
parent 4d5e7f19ca
commit 63b10166ac
1 changed files with 86 additions and 2 deletions

View File

@ -111,7 +111,7 @@ namespace OpenRCT2::Scripting
}
}
auto baseZ_get() const
uint8_t baseZ_get() const
{
return _element->base_height;
}
@ -121,7 +121,7 @@ namespace OpenRCT2::Scripting
_element->base_height = newBaseHeight;
}
auto clearanceZ_get() const
uint8_t clearanceZ_get() const
{
return _element->clearance_height;
}
@ -131,6 +131,23 @@ namespace OpenRCT2::Scripting
_element->clearance_height = newClearanceHeight;
}
int32_t waterHeight_get() const
{
auto el = _element->AsSurface();
if (el != nullptr)
return el->GetWaterHeight();
return 0;
}
void waterHeight_set(int32_t value)
{
ThrowIfGameStateNotMutable();
auto el = _element->AsSurface();
if (el != nullptr)
{
el->SetWaterHeight(value);
}
}
uint32_t surfaceStyle_get()
{
auto el = _element->AsSurface();
@ -148,6 +165,23 @@ namespace OpenRCT2::Scripting
}
}
uint32_t edgeStyle_get()
{
auto el = _element->AsSurface();
if (el != nullptr)
return el->GetEdgeStyle();
return 0;
}
void edgeStyle_set(uint32_t value)
{
ThrowIfGameStateNotMutable();
auto el = _element->AsSurface();
if (el != nullptr)
{
el->SetEdgeStyle(value);
}
}
uint8_t grassLength_get()
{
auto el = _element->AsSurface();
@ -174,6 +208,51 @@ namespace OpenRCT2::Scripting
return false;
}
bool hasConstructionRights_get()
{
auto el = _element->AsSurface();
if (el != nullptr)
{
auto ownership = el->GetOwnership();
return (ownership & OWNERSHIP_OWNED) || (ownership & OWNERSHIP_CONSTRUCTION_RIGHTS_OWNED);
}
return false;
}
uint8_t ownership_get()
{
auto el = _element->AsSurface();
if (el != nullptr)
return el->GetOwnership();
return 0;
}
void ownership_set(uint8_t value)
{
ThrowIfGameStateNotMutable();
auto el = _element->AsSurface();
if (el != nullptr)
{
el->SetOwnership(value);
}
}
uint8_t parkFences_get()
{
auto el = _element->AsSurface();
if (el != nullptr)
return el->GetParkFences();
return 0;
}
void parkFences_set(uint8_t value)
{
ThrowIfGameStateNotMutable();
auto el = _element->AsSurface();
if (el != nullptr)
{
el->SetParkFences(value);
}
}
public:
static void Register(duk_context* ctx)
{
@ -181,9 +260,14 @@ namespace OpenRCT2::Scripting
dukglue_register_property(ctx, &ScTileElement::baseZ_get, &ScTileElement::baseZ_set, "baseZ");
dukglue_register_property(ctx, &ScTileElement::clearanceZ_get, &ScTileElement::clearanceZ_set, "clearanceZ");
dukglue_register_property(ctx, &ScTileElement::waterHeight_get, &ScTileElement::waterHeight_set, "waterHeight");
dukglue_register_property(ctx, &ScTileElement::surfaceStyle_get, &ScTileElement::surfaceStyle_set, "surfaceStyle");
dukglue_register_property(ctx, &ScTileElement::edgeStyle_get, &ScTileElement::edgeStyle_set, "edgeStyle");
dukglue_register_property(ctx, &ScTileElement::grassLength_get, &ScTileElement::grassLength_set, "grassLength");
dukglue_register_property(ctx, &ScTileElement::hasOwnership_get, nullptr, "hasOwnership");
dukglue_register_property(ctx, &ScTileElement::hasConstructionRights_get, nullptr, "hasConstructionRights");
dukglue_register_property(ctx, &ScTileElement::ownership_get, &ScTileElement::ownership_set, "ownership");
dukglue_register_property(ctx, &ScTileElement::parkFences_get, &ScTileElement::parkFences_set, "parkFences");
dukglue_register_property(ctx, &ScTileElement::broken_get, &ScTileElement::broken_set, "broken");
}