diff options
| author | Pistonight <pistonknight@outlook.com> | 2026-05-31 10:39:49 -0700 |
|---|---|---|
| committer | Pistonight <pistonknight@outlook.com> | 2026-05-31 14:20:38 -0700 |
| commit | 3183601b597bff191f7805f0af18495554ede9e6 (patch) | |
| tree | 6327a04d99d525904d6dbf9f38674aa4201146c0 /src/KingSystem | |
| parent | d10aef2b4fe55fa281572b24576f4cef8fef4c3e (diff) | |
fix new viking and update mismatches
Diffstat (limited to 'src/KingSystem')
| -rw-r--r-- | src/KingSystem/ActorSystem/Awareness/actAwareness.cpp | 4 | ||||
| -rw-r--r-- | src/KingSystem/ActorSystem/Awareness/actAwareness.h | 2 | ||||
| -rw-r--r-- | src/KingSystem/ActorSystem/Awareness/actAwarenessDefs.cpp | 5 | ||||
| -rw-r--r-- | src/KingSystem/ActorSystem/actAiActionBase.h | 56 | ||||
| -rw-r--r-- | src/KingSystem/ActorSystem/actAiParam.h | 4 | ||||
| -rw-r--r-- | src/KingSystem/Map/mapObject.cpp | 2 | ||||
| -rw-r--r-- | src/KingSystem/Quest/qstQuest.cpp | 2 |
7 files changed, 58 insertions, 17 deletions
diff --git a/src/KingSystem/ActorSystem/Awareness/actAwareness.cpp b/src/KingSystem/ActorSystem/Awareness/actAwareness.cpp index 4d4e8d67..a06e3e67 100644 --- a/src/KingSystem/ActorSystem/Awareness/actAwareness.cpp +++ b/src/KingSystem/ActorSystem/Awareness/actAwareness.cpp @@ -231,6 +231,10 @@ void Awareness::calc() { resetFlag(Flag::_0); } +u32 Awareness::calcHash(const sead::SafeString& key) { + return agl::utl::ParameterBase::calcHash(key); +} + void Awareness::Links2::calc() { count = 0; } diff --git a/src/KingSystem/ActorSystem/Awareness/actAwareness.h b/src/KingSystem/ActorSystem/Awareness/actAwareness.h index 970ec635..5b13c5ef 100644 --- a/src/KingSystem/ActorSystem/Awareness/actAwareness.h +++ b/src/KingSystem/ActorSystem/Awareness/actAwareness.h @@ -35,6 +35,8 @@ public: void setEventActive(bool active); void calc(); + static u32 calcHash(const sead::SafeString& key); + private: friend class AwarenessInstance; diff --git a/src/KingSystem/ActorSystem/Awareness/actAwarenessDefs.cpp b/src/KingSystem/ActorSystem/Awareness/actAwarenessDefs.cpp index a6f3b30d..8c13c6fc 100644 --- a/src/KingSystem/ActorSystem/Awareness/actAwarenessDefs.cpp +++ b/src/KingSystem/ActorSystem/Awareness/actAwarenessDefs.cpp @@ -1,6 +1,7 @@ #include "KingSystem/ActorSystem/Awareness/actAwarenessDefs.h" #include <container/seadSafeArray.h> #include <utility/aglParameter.h> +#include "KingSystem/ActorSystem/Awareness/actAwareness.h" namespace ksys::act { @@ -28,7 +29,7 @@ sead::SafeArray<const char*, 23> sAwarenessSensorTypes = sead::toArray({ u32 getAwarenessTerrorFlags(u32 hash) { for (u32 i = 0; i < u32(sAwarenessTerrorTypes.size()); ++i) { - if (agl::utl::ParameterBase::calcHash(sAwarenessTerrorTypes(i)) == hash) + if (Awareness::calcHash(sAwarenessTerrorTypes(i)) == hash) return 1 << i; } @@ -38,7 +39,7 @@ u32 getAwarenessTerrorFlags(u32 hash) { u32 getAwarenessSensorFlags(u32 hash) { for (u32 i = 0; i < u32(sAwarenessSensorTypes.size()); ++i) { - if (agl::utl::ParameterBase::calcHash(sAwarenessSensorTypes(i)) == hash) + if (Awareness::calcHash(sAwarenessSensorTypes(i)) == hash) return 1 << i; } return 0xffffffff; diff --git a/src/KingSystem/ActorSystem/actAiActionBase.h b/src/KingSystem/ActorSystem/actAiActionBase.h index 88dd364f..e20cf06f 100644 --- a/src/KingSystem/ActorSystem/actAiActionBase.h +++ b/src/KingSystem/ActorSystem/actAiActionBase.h @@ -197,6 +197,35 @@ protected: return false; } + // likely duplicated by compiler? + template <typename T> + bool getDynamicParamImpl_2(T* value, const sead::SafeString& key, + bool (ParamPack::*getter)(T* value, const sead::SafeString& key) + const, + T* default_value) const { + auto* action = this; + while (action && action->mFlags.isOff(Flag::_80)) { + if ((action->mParams.*getter)(value, key)) + return true; + if (action->mFlags.isOff(Flag::DynamicParamChild)) + goto fail; + action = action->getCurrentChild(); + if (!action) + goto fail; + } + + for (s32 i = 0, n = action->getNumChildren(); i < n; ++i) { + auto* child = action->getChild(i); + if (child->getDynamicParamImpl_2<T>(value, key, getter, default_value)) + return true; + } + + fail: + logMissingParam(key); + *value = *default_value; + return false; + } + template <AIDefParamType Type, typename T> bool getDynamicParamPtrImpl(T** value, const sead::SafeString& key, T* default_value) const { return getDynamicParamImpl(value, key, &ParamPack::getPtrGeneric<T, Type>, &default_value); @@ -246,26 +275,31 @@ protected: value, key, static_cast<sead::SafeString*>(getDefaultString32())); } - // TODO: rename -- why do these exist? + // likely duplicated by compiler? template <AIDefParamType Type, typename T> - bool getDynamicParamPtrImpl2(T** value, const sead::SafeString& key, T* default_value) const { - return getDynamicParamImpl(value, key, &ParamPack::getPtrGeneric2<T, Type>, &default_value); + bool getDynamicParamPtrImpl_2(T** value, const sead::SafeString& key, T* default_value) const { + return getDynamicParamImpl_2(value, key, &ParamPack::getPtrGeneric_2<T, Type>, + &default_value); } - bool getDynamicParam2(int** value, const sead::SafeString& key) const { - return getDynamicParamPtrImpl2<AIDefParamType::Int>(value, key, getDefaultInt()); + // likely duplicated by compiler? + bool getDynamicParam_2(int** value, const sead::SafeString& key) const { + return getDynamicParamPtrImpl_2<AIDefParamType::Int>(value, key, getDefaultInt()); } - bool getDynamicParam2(float** value, const sead::SafeString& key) const { - return getDynamicParamPtrImpl2<AIDefParamType::Float>(value, key, getDefaultFloat()); + // likely duplicated by compiler? + bool getDynamicParam_2(float** value, const sead::SafeString& key) const { + return getDynamicParamPtrImpl_2<AIDefParamType::Float>(value, key, getDefaultFloat()); } - bool getDynamicParam2(sead::Vector3f** value, const sead::SafeString& key) const { - return getDynamicParamPtrImpl2<AIDefParamType::Vec3>(value, key, getDefaultVec3()); + // likely duplicated by compiler? + bool getDynamicParam_2(sead::Vector3f** value, const sead::SafeString& key) const { + return getDynamicParamPtrImpl_2<AIDefParamType::Vec3>(value, key, getDefaultVec3()); } - bool getDynamicParam2(bool** value, const sead::SafeString& key) const { - return getDynamicParamPtrImpl2<AIDefParamType::Bool>(value, key, getDefaultBool()); + // likely duplicated by compiler? + bool getDynamicParam_2(bool** value, const sead::SafeString& key) const { + return getDynamicParamPtrImpl_2<AIDefParamType::Bool>(value, key, getDefaultBool()); } Actor* mActor; diff --git a/src/KingSystem/ActorSystem/actAiParam.h b/src/KingSystem/ActorSystem/actAiParam.h index e775f7fd..a39e30eb 100644 --- a/src/KingSystem/ActorSystem/actAiParam.h +++ b/src/KingSystem/ActorSystem/actAiParam.h @@ -104,9 +104,9 @@ public: return ptr != nullptr; } - // TODO: rename this -- why does this exist? + // likely duplicated by compiler? template <typename T, AIDefParamType Type> - bool getPtrGeneric2(T** value, const sead::SafeString& key) const { + bool getPtrGeneric_2(T** value, const sead::SafeString& key) const { auto* ptr = static_cast<T*>(getAITreeVariablePointer(key, Type)); *value = ptr; return ptr != nullptr; diff --git a/src/KingSystem/Map/mapObject.cpp b/src/KingSystem/Map/mapObject.cpp index 6775a577..f2173ac5 100644 --- a/src/KingSystem/Map/mapObject.cpp +++ b/src/KingSystem/Map/mapObject.cpp @@ -401,7 +401,7 @@ void Object::setRevivalFlagValueIf(ActorData::Flag bit, bool value) { } void Object::setRevivalFlagValue(bool value) { - gdt::Manager::instance()->setBool(value, mRevivalGameDataFlagHash); + gdt::Manager::instance()->setBoolNoCheck(value, mRevivalGameDataFlagHash); } // NON_MATCHING diff --git a/src/KingSystem/Quest/qstQuest.cpp b/src/KingSystem/Quest/qstQuest.cpp index dffa196f..a06c3623 100644 --- a/src/KingSystem/Quest/qstQuest.cpp +++ b/src/KingSystem/Quest/qstQuest.cpp @@ -73,7 +73,7 @@ void Quest::x_3() { auto* gdm = gdt::Manager::instance(); if (gdm != nullptr) { if (gdm->getBool(handle, &result, true); !result) - gdm->setBool(true, handle); + gdm->setBoolNoCheck(true, handle); } } _8 = _c; |
