From 63b10166ac366d631ce0f0f72cfc94ab04cbae4b Mon Sep 17 00:00:00 2001 From: Ted John Date: Sat, 29 Feb 2020 21:31:22 +0000 Subject: [PATCH] Add more surface element APIs --- src/openrct2/scripting/ScTile.hpp | 88 ++++++++++++++++++++++++++++++- 1 file changed, 86 insertions(+), 2 deletions(-) diff --git a/src/openrct2/scripting/ScTile.hpp b/src/openrct2/scripting/ScTile.hpp index 1b56d4dca7..96db468a8d 100644 --- a/src/openrct2/scripting/ScTile.hpp +++ b/src/openrct2/scripting/ScTile.hpp @@ -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"); }