From 2b52df87ceb68155f0745e8997dedff96772c67d Mon Sep 17 00:00:00 2001 From: Hielke Morsink Date: Mon, 20 Jun 2022 21:08:37 +0200 Subject: [PATCH] Move scripting command names to command classes This way, new commands are required to have this field, or a compiler error will occur. --- src/openrct2-ui/scripting/ScTitleSequence.hpp | 29 +++++++------------ src/openrct2/scripting/ScriptEngine.h | 2 +- src/openrct2/title/Command/End.h | 1 + src/openrct2/title/Command/FollowEntity.h | 1 + src/openrct2/title/Command/LoadPark.h | 1 + src/openrct2/title/Command/LoadScenario.h | 1 + src/openrct2/title/Command/Restart.h | 1 + src/openrct2/title/Command/RotateView.h | 1 + src/openrct2/title/Command/SetLocation.h | 1 + src/openrct2/title/Command/SetSpeed.h | 1 + src/openrct2/title/Command/SetZoom.h | 1 + src/openrct2/title/Command/Wait.h | 1 + 12 files changed, 22 insertions(+), 19 deletions(-) diff --git a/src/openrct2-ui/scripting/ScTitleSequence.hpp b/src/openrct2-ui/scripting/ScTitleSequence.hpp index 4a6b24addd..566cc8ad99 100644 --- a/src/openrct2-ui/scripting/ScTitleSequence.hpp +++ b/src/openrct2-ui/scripting/ScTitleSequence.hpp @@ -47,16 +47,16 @@ namespace OpenRCT2::Scripting }; static const DukEnumMap TitleScriptMap({ - { "load", TitleScript::Load }, - { "location", TitleScript::Location }, - { "rotate", TitleScript::Rotate }, - { "zoom", TitleScript::Zoom }, - { "follow", TitleScript::Follow }, - { "speed", TitleScript::Speed }, - { "wait", TitleScript::Wait }, - { "loadsc", TitleScript::LoadSc }, - { "restart", TitleScript::Restart }, - { "end", TitleScript::End }, + { OpenRCT2::Title::LoadParkCommand::ScriptingName, TitleScript::Load }, + { OpenRCT2::Title::SetLocationCommand::ScriptingName, TitleScript::Location }, + { OpenRCT2::Title::RotateViewCommand::ScriptingName, TitleScript::Rotate }, + { OpenRCT2::Title::SetZoomCommand::ScriptingName, TitleScript::Zoom }, + { OpenRCT2::Title::FollowEntityCommand::ScriptingName, TitleScript::Follow }, + { OpenRCT2::Title::SetSpeedCommand::ScriptingName, TitleScript::Speed }, + { OpenRCT2::Title::WaitCommand::ScriptingName, TitleScript::Wait }, + { OpenRCT2::Title::LoadScenarioCommand::ScriptingName, TitleScript::LoadSc }, + { OpenRCT2::Title::RestartCommand::ScriptingName, TitleScript::Restart }, + { OpenRCT2::Title::EndCommand::ScriptingName, TitleScript::End }, }); template<> DukValue ToDuk(duk_context* ctx, const TitleScript& value) @@ -71,30 +71,26 @@ namespace OpenRCT2::Scripting std::visit( [&obj](auto&& value) { using T = std::decay::type; + obj.Set("type", T::ScriptingName); if constexpr (std::is_same_v) { - obj.Set("type", TitleScriptMap[TitleScript::Load]); obj.Set("index", value.SaveIndex); } else if constexpr (std::is_same_v) { - obj.Set("type", TitleScriptMap[TitleScript::Location]); obj.Set("x", value.Location.X); obj.Set("y", value.Location.Y); } else if constexpr (std::is_same_v) { - obj.Set("type", TitleScriptMap[TitleScript::Rotate]); obj.Set("rotations", value.Rotations); } else if constexpr (std::is_same_v) { - obj.Set("type", TitleScriptMap[TitleScript::Zoom]); obj.Set("zoom", value.Zoom); } else if constexpr (std::is_same_v) { - obj.Set("type", TitleScriptMap[TitleScript::Follow]); if (value.Follow.SpriteIndex.IsNull()) obj.Set("id", nullptr); else @@ -102,17 +98,14 @@ namespace OpenRCT2::Scripting } else if constexpr (std::is_same_v) { - obj.Set("type", TitleScriptMap[TitleScript::Speed]); obj.Set("speed", value.Speed); } else if constexpr (std::is_same_v) { - obj.Set("type", TitleScriptMap[TitleScript::Wait]); obj.Set("duration", value.Milliseconds); } else if constexpr (std::is_same_v) { - obj.Set("type", TitleScriptMap[TitleScript::LoadSc]); obj.Set("scenario", String::ToStringView(value.Scenario, sizeof(value.Scenario))); } }, diff --git a/src/openrct2/scripting/ScriptEngine.h b/src/openrct2/scripting/ScriptEngine.h index 4ea7c497cd..7e162cbc28 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 = 56; + static constexpr int32_t OPENRCT2_PLUGIN_API_VERSION = 57; // Versions marking breaking changes. static constexpr int32_t API_VERSION_33_PEEP_DEPRECATION = 33; diff --git a/src/openrct2/title/Command/End.h b/src/openrct2/title/Command/End.h index f6bda4a516..9f40acefe3 100644 --- a/src/openrct2/title/Command/End.h +++ b/src/openrct2/title/Command/End.h @@ -16,6 +16,7 @@ namespace OpenRCT2::Title struct EndCommand { static constexpr const char* Name = "End Command"; + static constexpr const char* ScriptingName = "end"; int16_t operator()(int16_t timer); }; diff --git a/src/openrct2/title/Command/FollowEntity.h b/src/openrct2/title/Command/FollowEntity.h index 9224eb3a90..e76b6c7eff 100644 --- a/src/openrct2/title/Command/FollowEntity.h +++ b/src/openrct2/title/Command/FollowEntity.h @@ -20,6 +20,7 @@ namespace OpenRCT2::Title struct FollowEntityCommand { static constexpr const char* Name = "Follow Entity Command"; + static constexpr const char* ScriptingName = "follow"; struct { diff --git a/src/openrct2/title/Command/LoadPark.h b/src/openrct2/title/Command/LoadPark.h index e2569a0c2b..c2c2986aec 100644 --- a/src/openrct2/title/Command/LoadPark.h +++ b/src/openrct2/title/Command/LoadPark.h @@ -16,6 +16,7 @@ namespace OpenRCT2::Title struct LoadParkCommand { static constexpr const char* Name = "Load Park Command"; + static constexpr const char* ScriptingName = "load"; uint8_t SaveIndex; diff --git a/src/openrct2/title/Command/LoadScenario.h b/src/openrct2/title/Command/LoadScenario.h index b27bbbafe5..27fa347481 100644 --- a/src/openrct2/title/Command/LoadScenario.h +++ b/src/openrct2/title/Command/LoadScenario.h @@ -20,6 +20,7 @@ namespace OpenRCT2::Title struct LoadScenarioCommand { static constexpr const char* Name = "Load Scenario Command"; + static constexpr const char* ScriptingName = "loadsc"; utf8 Scenario[TITLE_COMMAND_SCENARIO_LENGTH]; diff --git a/src/openrct2/title/Command/Restart.h b/src/openrct2/title/Command/Restart.h index 95e2494c6d..45c76af956 100644 --- a/src/openrct2/title/Command/Restart.h +++ b/src/openrct2/title/Command/Restart.h @@ -16,6 +16,7 @@ namespace OpenRCT2::Title struct RestartCommand { static constexpr const char* Name = "Restart Command"; + static constexpr const char* ScriptingName = "restart"; int16_t operator()(int16_t timer); }; diff --git a/src/openrct2/title/Command/RotateView.h b/src/openrct2/title/Command/RotateView.h index 91c52f46e2..87253c03bd 100644 --- a/src/openrct2/title/Command/RotateView.h +++ b/src/openrct2/title/Command/RotateView.h @@ -16,6 +16,7 @@ namespace OpenRCT2::Title struct RotateViewCommand { static constexpr const char* Name = "Rotate View Command"; + static constexpr const char* ScriptingName = "rotate"; uint8_t Rotations; diff --git a/src/openrct2/title/Command/SetLocation.h b/src/openrct2/title/Command/SetLocation.h index fef8b52db2..639e47e043 100644 --- a/src/openrct2/title/Command/SetLocation.h +++ b/src/openrct2/title/Command/SetLocation.h @@ -16,6 +16,7 @@ namespace OpenRCT2::Title struct SetLocationCommand { static constexpr const char* Name = "Set Location Command"; + static constexpr const char* ScriptingName = "location"; // TODO: Use TileCoordsXY instead struct diff --git a/src/openrct2/title/Command/SetSpeed.h b/src/openrct2/title/Command/SetSpeed.h index 96c97a32b1..01297cbba9 100644 --- a/src/openrct2/title/Command/SetSpeed.h +++ b/src/openrct2/title/Command/SetSpeed.h @@ -16,6 +16,7 @@ namespace OpenRCT2::Title struct SetSpeedCommand { static constexpr const char* Name = "Set Speed Command"; + static constexpr const char* ScriptingName = "speed"; uint8_t Speed; diff --git a/src/openrct2/title/Command/SetZoom.h b/src/openrct2/title/Command/SetZoom.h index 8c78f3fdde..e0347c39b9 100644 --- a/src/openrct2/title/Command/SetZoom.h +++ b/src/openrct2/title/Command/SetZoom.h @@ -16,6 +16,7 @@ namespace OpenRCT2::Title struct SetZoomCommand { static constexpr const char* Name = "Set Zoom Command"; + static constexpr const char* ScriptingName = "zoom"; // TODO: Use ZoomLevel instead uint8_t Zoom; diff --git a/src/openrct2/title/Command/Wait.h b/src/openrct2/title/Command/Wait.h index c14317c9d3..1da57e5b48 100644 --- a/src/openrct2/title/Command/Wait.h +++ b/src/openrct2/title/Command/Wait.h @@ -16,6 +16,7 @@ namespace OpenRCT2::Title struct WaitCommand { static constexpr const char* Name = "Wait Command"; + static constexpr const char* ScriptingName = "wait"; uint16_t Milliseconds;