From 00fb8668360174a0911b15bf49ed2faade2fc47c Mon Sep 17 00:00:00 2001 From: Narr the Reg <5944268+german77@users.noreply.github.com> Date: Sun, 12 Apr 2026 09:01:38 -0600 Subject: [PATCH] Library/Yaml: Simplify `ParameterBase` (#1012) --- lib/al/Library/Light/DirectionParam.cpp | 2 +- lib/al/Library/Screen/ScreenPointKeeper.cpp | 2 +- lib/al/Library/Yaml/ParameterBase.h | 59 ++++++++++----------- 3 files changed, 29 insertions(+), 34 deletions(-) diff --git a/lib/al/Library/Light/DirectionParam.cpp b/lib/al/Library/Light/DirectionParam.cpp index 41fb7a46..4e79f925 100644 --- a/lib/al/Library/Light/DirectionParam.cpp +++ b/lib/al/Library/Light/DirectionParam.cpp @@ -151,7 +151,7 @@ void PlaneParam::initialize(const sead::Vector3f& direction, ParameterObj* param StringTmp<256> distance = {"%sDistance", planeName}; initializeDir(direction, parameterObj, normal.cstr(), "平面法線"); - mDistanceFromOrigin = new ParameterF32(distance.cstr(), "原点からの距離", + mDistanceFromOrigin = new ParameterF32(0.0f, distance.cstr(), "原点からの距離", "Min=-100000, Max=100000", parameterObj, true); } } // namespace al diff --git a/lib/al/Library/Screen/ScreenPointKeeper.cpp b/lib/al/Library/Screen/ScreenPointKeeper.cpp index aaa707a4..f6999420 100644 --- a/lib/al/Library/Screen/ScreenPointKeeper.cpp +++ b/lib/al/Library/Screen/ScreenPointKeeper.cpp @@ -24,7 +24,7 @@ ScreenPointKeeper::ScreenPointKeeper() { mOptions = new ParameterObj(); mAddTargetNum = - new ParameterS32("AddTargetNum", "AddTargetNum", "Min=0, Max=10", mOptions, true); + new ParameterS32(0, "AddTargetNum", "AddTargetNum", "Min=0, Max=10", mOptions, true); mParameterIo->addObj(mOptions, "Options"); mParameterIo->addArray(mTargets, "Targets"); diff --git a/lib/al/Library/Yaml/ParameterBase.h b/lib/al/Library/Yaml/ParameterBase.h index 8c2e5fc0..a4229a6e 100644 --- a/lib/al/Library/Yaml/ParameterBase.h +++ b/lib/al/Library/Yaml/ParameterBase.h @@ -40,19 +40,11 @@ SEAD_ENUM(YamlParamType, #define PARAM_TYPE_DEF(Name, Type) \ class Parameter##Name : public Parameter { \ public: \ - Parameter##Name(const sead::SafeString& name, const sead::SafeString& label, \ - const sead::SafeString& meta, ParameterObj* obj, bool e) \ - : Parameter(name, label, meta, obj, e) {} \ - \ Parameter##Name(Type const& value, const sead::SafeString& name, \ const sead::SafeString& label, const sead::SafeString& meta, \ ParameterObj* obj, bool e) \ : Parameter(value, name, label, meta, obj, e) {} \ \ - Parameter##Name(const sead::SafeString& name, const sead::SafeString& label, \ - const sead::SafeString& meta, ParameterList* list, bool e) \ - : Parameter(name, label, meta, list, e) {} \ - \ Parameter##Name(Type const& value, const sead::SafeString& name, \ const sead::SafeString& label, const sead::SafeString& meta, \ ParameterList* list, bool e) \ @@ -71,9 +63,9 @@ class ParameterBase { public: static u32 calcHash(const sead::SafeString& key); - // TODO: rename parameter bool e in all functions - ParameterBase(bool e) { initialize("default", "parameter", "", e); } + ParameterBase() { initialize("default", "parameter", "", true); } + // TODO: rename parameter bool e in all functions ParameterBase(const sead::SafeString& name, const sead::SafeString& label, const sead::SafeString& meta, ParameterObj* obj, bool e); @@ -139,39 +131,42 @@ template class Parameter : public ParameterBase { public: // TODO: rename parameter bool e in constructor - Parameter(const sead::SafeString& name, const sead::SafeString& label, - const sead::SafeString& meta, ParameterObj* obj, bool e) - : ParameterBase(e) { + Parameter(const T& value, const sead::SafeString& name, const sead::SafeString& label, + const sead::SafeString& meta, ParameterObj* obj, bool e) { initializeListNode(name, label, meta, obj, e); - mValue = T(); + setValue(value); } Parameter(const T& value, const sead::SafeString& name, const sead::SafeString& label, - const sead::SafeString& meta, ParameterObj* obj, bool e) - : ParameterBase(e) { - initializeListNode(name, label, meta, obj, e); - mValue = value; - } - - Parameter(const sead::SafeString& name, const sead::SafeString& label, - const sead::SafeString& meta, ParameterList* list, bool e) - : ParameterBase(e) { + const sead::SafeString& meta, ParameterList* list, bool e) { initializeListNode(name, label, meta, list, e); - mValue = T(); - } - - Parameter(const T& value, const sead::SafeString& name, const sead::SafeString& label, - const sead::SafeString& meta, ParameterList* list, bool e) - : ParameterBase(e) { - initializeListNode(name, label, meta, list, e); - mValue = value; + setValue(value); } const void* ptr() const override { return &mValue; }; void* ptr() override { return &mValue; }; - s32 size() const override { return sizeof(T); } + s32 size() const override { + // BUG: sead::FixedSafeString<128> is excluded from this list + if constexpr (std::is_same>()) + return 32; + else if constexpr (std::is_same>()) + return 64; + else if constexpr (std::is_same>()) + return 256; + // NOTE: from 512 onwards, no examples exist in the binary + else if constexpr (std::is_same>()) + return 512; + else if constexpr (std::is_same>()) + return 1024; + else if constexpr (std::is_same>()) + return 2048; + else if constexpr (std::is_same>()) + return 4096; + else + return sizeof(T); + } const char* getParamTypeStr() const override { return YamlParamType::text(YamlParamType::Invalid);