From 8682a8677e387e3e530e2c40e67b0c602e0b2ae9 Mon Sep 17 00:00:00 2001 From: Bas Date: Fri, 15 Oct 2021 21:39:58 +0200 Subject: [PATCH] Fix unable to read litter information in plugin api --- distribution/changelog.txt | 1 + distribution/openrct2.d.ts | 2 +- src/openrct2/scripting/ScriptEngine.cpp | 1 + src/openrct2/scripting/ScriptEngine.h | 2 +- src/openrct2/scripting/bindings/entity/ScLitter.cpp | 13 +++++++++---- src/openrct2/scripting/bindings/world/ScMap.cpp | 2 +- 6 files changed, 14 insertions(+), 7 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 5417294eaf..dc6858e87d 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -40,6 +40,7 @@ - Fix: [#15514] Two different “quit to menu” menu items are available in track designer and track design manager. - Fix: [#15560] Memory leak due to OpenGL Renderer not releasing a texture. - Fix: [#15567] Litter not being counted correctly during Park rating calculation (original bug). +- Fix: [#15582] [Plugin] Litter properties return incorrect values. - Improved: [#3417] Crash dumps are now placed in their own folder. - Improved: [#13524] macOS arm64 native (universal) app - Improved: [#15538] Software rendering can now draw in parallel when Multithreading is enabled. diff --git a/distribution/openrct2.d.ts b/distribution/openrct2.d.ts index 1bd55ee09c..da94ea7000 100644 --- a/distribution/openrct2.d.ts +++ b/distribution/openrct2.d.ts @@ -1504,7 +1504,7 @@ declare global { /** * The tick number this entity was created. */ - creationTime: number; + creationTick: number; } type LitterType = "vomit" | diff --git a/src/openrct2/scripting/ScriptEngine.cpp b/src/openrct2/scripting/ScriptEngine.cpp index c90c4583e7..1e20e96a58 100644 --- a/src/openrct2/scripting/ScriptEngine.cpp +++ b/src/openrct2/scripting/ScriptEngine.cpp @@ -409,6 +409,7 @@ void ScriptEngine::Initialise() ScTile::Register(ctx); ScTileElement::Register(ctx); ScEntity::Register(ctx); + ScLitter::Register(ctx); ScVehicle::Register(ctx); ScPeep::Register(ctx); ScGuest::Register(ctx); diff --git a/src/openrct2/scripting/ScriptEngine.h b/src/openrct2/scripting/ScriptEngine.h index 1e0c0db23b..f954aff12c 100644 --- a/src/openrct2/scripting/ScriptEngine.h +++ b/src/openrct2/scripting/ScriptEngine.h @@ -46,7 +46,7 @@ namespace OpenRCT2 namespace OpenRCT2::Scripting { - static constexpr int32_t OPENRCT2_PLUGIN_API_VERSION = 37; + static constexpr int32_t OPENRCT2_PLUGIN_API_VERSION = 38; // Versions marking breaking changes. static constexpr int32_t API_VERSION_33_PEEP_DEPRECATION = 33; diff --git a/src/openrct2/scripting/bindings/entity/ScLitter.cpp b/src/openrct2/scripting/bindings/entity/ScLitter.cpp index df59a9b7fe..0483f7d205 100644 --- a/src/openrct2/scripting/bindings/entity/ScLitter.cpp +++ b/src/openrct2/scripting/bindings/entity/ScLitter.cpp @@ -48,10 +48,15 @@ namespace OpenRCT2::Scripting std::string ScLitter::litterType_get() const { auto* litter = GetLitter(); - auto it = LitterTypeMap.find(litter->SubType); - if (it == LitterTypeMap.end()) - return ""; - return std::string{ it->first }; + if (litter != nullptr) + { + auto it = LitterTypeMap.find(litter->SubType); + if (it != LitterTypeMap.end()) + { + return std::string{ it->first }; + } + } + return ""; } void ScLitter::litterType_set(const std::string& litterType) diff --git a/src/openrct2/scripting/bindings/world/ScMap.cpp b/src/openrct2/scripting/bindings/world/ScMap.cpp index ade039e148..4276a190f2 100644 --- a/src/openrct2/scripting/bindings/world/ScMap.cpp +++ b/src/openrct2/scripting/bindings/world/ScMap.cpp @@ -122,7 +122,7 @@ namespace OpenRCT2::Scripting { for (auto sprite : EntityList()) { - result.push_back(GetObjectAsDukValue(_context, std::make_shared(sprite->sprite_index))); + result.push_back(GetObjectAsDukValue(_context, std::make_shared(sprite->sprite_index))); } } else if (type == "duck")