1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2025-12-21 14:53:02 +01:00

Add owner property to tile elements for scripting

This commit is contained in:
ζeh Matt
2023-10-08 02:30:43 +03:00
parent 9b7ce95c05
commit b4376ab590
3 changed files with 19 additions and 0 deletions

View File

@@ -1472,6 +1472,7 @@ declare global {
occupiedQuadrants: number; occupiedQuadrants: number;
isGhost: boolean; isGhost: boolean;
isHidden: boolean; /** Take caution when changing this field, it may invalidate TileElements you have stored in your script. */ isHidden: boolean; /** Take caution when changing this field, it may invalidate TileElements you have stored in your script. */
owner: number;
} }
interface SurfaceElement extends BaseTileElement { interface SurfaceElement extends BaseTileElement {

View File

@@ -2033,6 +2033,20 @@ namespace OpenRCT2::Scripting
} }
} }
DukValue ScTileElement::owner_get() const
{
auto& scriptEngine = GetContext()->GetScriptEngine();
auto* ctx = scriptEngine.GetContext();
duk_push_uint(ctx, _element->GetOwner());
return DukValue::take_from_stack(ctx);
}
void ScTileElement::owner_set(uint8_t value)
{
ThrowIfGameStateNotMutable();
_element->SetOwner(value);
}
void ScTileElement::Invalidate() void ScTileElement::Invalidate()
{ {
MapInvalidateTileFull(_coords); MapInvalidateTileFull(_coords);
@@ -2051,6 +2065,7 @@ namespace OpenRCT2::Scripting
ctx, &ScTileElement::occupiedQuadrants_get, &ScTileElement::occupiedQuadrants_set, "occupiedQuadrants"); ctx, &ScTileElement::occupiedQuadrants_get, &ScTileElement::occupiedQuadrants_set, "occupiedQuadrants");
dukglue_register_property(ctx, &ScTileElement::isGhost_get, &ScTileElement::isGhost_set, "isGhost"); dukglue_register_property(ctx, &ScTileElement::isGhost_get, &ScTileElement::isGhost_set, "isGhost");
dukglue_register_property(ctx, &ScTileElement::isHidden_get, &ScTileElement::isHidden_set, "isHidden"); dukglue_register_property(ctx, &ScTileElement::isHidden_get, &ScTileElement::isHidden_set, "isHidden");
dukglue_register_property(ctx, &ScTileElement::owner_get, &ScTileElement::owner_set, "owner");
// Track | Small Scenery | Wall | Entrance | Large Scenery | Banner // Track | Small Scenery | Wall | Entrance | Large Scenery | Banner
dukglue_register_property(ctx, &ScTileElement::direction_get, &ScTileElement::direction_set, "direction"); dukglue_register_property(ctx, &ScTileElement::direction_get, &ScTileElement::direction_set, "direction");

View File

@@ -202,6 +202,9 @@ namespace OpenRCT2::Scripting
DukValue direction_get() const; DukValue direction_get() const;
void direction_set(uint8_t value); void direction_set(uint8_t value);
DukValue owner_get() const;
void owner_set(uint8_t value);
void Invalidate(); void Invalidate();
public: public: