From aa11d8ddfe1aca84529ddc96a14d3b64da5634c6 Mon Sep 17 00:00:00 2001 From: Arnold Zhou Date: Mon, 8 Jul 2024 18:53:14 +1000 Subject: [PATCH] Expose ride satisfaction to plugin api (#22172) --- distribution/changelog.txt | 1 + distribution/openrct2.d.ts | 5 +++++ src/openrct2/scripting/ScriptEngine.h | 2 +- src/openrct2/scripting/bindings/ride/ScRide.cpp | 7 +++++++ src/openrct2/scripting/bindings/ride/ScRide.hpp | 2 ++ 5 files changed, 16 insertions(+), 1 deletion(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 2a945770bb..c5fb56e493 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,5 +1,6 @@ 0.4.13 (in development) ------------------------------------------------------------------------ +- Feature: [#22172] [Plugin] Expose ride satisfaction ratings to the plugin API. 0.4.12 (2024-07-07) ------------------------------------------------------------------------ diff --git a/distribution/openrct2.d.ts b/distribution/openrct2.d.ts index a1a9cfb76e..5c3413e1a5 100644 --- a/distribution/openrct2.d.ts +++ b/distribution/openrct2.d.ts @@ -2115,6 +2115,11 @@ declare global { * The min chain lift speed for this ride in miles per hour. */ readonly minLiftHillSpeed: number; + + /** + * The satisfaction rating of the ride from 0 to 100. + */ + readonly satisfaction: number; } type RideClassification = "ride" | "stall" | "facility"; diff --git a/src/openrct2/scripting/ScriptEngine.h b/src/openrct2/scripting/ScriptEngine.h index 0ccdce54a5..f9d890c48a 100644 --- a/src/openrct2/scripting/ScriptEngine.h +++ b/src/openrct2/scripting/ScriptEngine.h @@ -47,7 +47,7 @@ namespace OpenRCT2 namespace OpenRCT2::Scripting { - static constexpr int32_t OPENRCT2_PLUGIN_API_VERSION = 94; + static constexpr int32_t OPENRCT2_PLUGIN_API_VERSION = 95; // Versions marking breaking changes. static constexpr int32_t API_VERSION_33_PEEP_DEPRECATION = 33; diff --git a/src/openrct2/scripting/bindings/ride/ScRide.cpp b/src/openrct2/scripting/bindings/ride/ScRide.cpp index 748b87a0d6..334c56f88a 100644 --- a/src/openrct2/scripting/bindings/ride/ScRide.cpp +++ b/src/openrct2/scripting/bindings/ride/ScRide.cpp @@ -524,6 +524,12 @@ namespace OpenRCT2::Scripting return ride != nullptr ? ride->GetRideTypeDescriptor().LiftData.minimum_speed : 0; } + uint8_t ScRide::satisfaction_get() const + { + auto ride = GetRide(); + return ride != nullptr ? ride->satisfaction * 5 : 0; + } + void ScRide::Register(duk_context* ctx) { dukglue_register_property(ctx, &ScRide::id_get, nullptr, "id"); @@ -558,6 +564,7 @@ namespace OpenRCT2::Scripting dukglue_register_property(ctx, &ScRide::liftHillSpeed_get, &ScRide::lifthillSpeed_set, "liftHillSpeed"); dukglue_register_property(ctx, &ScRide::maxLiftHillSpeed_get, nullptr, "maxLiftHillSpeed"); dukglue_register_property(ctx, &ScRide::minLiftHillSpeed_get, nullptr, "minLiftHillSpeed"); + dukglue_register_property(ctx, &ScRide::satisfaction_get, nullptr, "satisfaction"); } } // namespace OpenRCT2::Scripting diff --git a/src/openrct2/scripting/bindings/ride/ScRide.hpp b/src/openrct2/scripting/bindings/ride/ScRide.hpp index 396087b2d9..4ee2f3d9bd 100644 --- a/src/openrct2/scripting/bindings/ride/ScRide.hpp +++ b/src/openrct2/scripting/bindings/ride/ScRide.hpp @@ -163,6 +163,8 @@ namespace OpenRCT2::Scripting uint8_t maxLiftHillSpeed_get() const; uint8_t minLiftHillSpeed_get() const; + uint8_t satisfaction_get() const; + Ride* GetRide() const; public: