summaryrefslogtreecommitdiff
path: root/src/KingSystem
diff options
context:
space:
mode:
authorPistonight <pistonknight@outlook.com>2026-05-31 10:39:49 -0700
committerPistonight <pistonknight@outlook.com>2026-05-31 14:20:38 -0700
commit3183601b597bff191f7805f0af18495554ede9e6 (patch)
tree6327a04d99d525904d6dbf9f38674aa4201146c0 /src/KingSystem
parentd10aef2b4fe55fa281572b24576f4cef8fef4c3e (diff)
fix new viking and update mismatches
Diffstat (limited to 'src/KingSystem')
-rw-r--r--src/KingSystem/ActorSystem/Awareness/actAwareness.cpp4
-rw-r--r--src/KingSystem/ActorSystem/Awareness/actAwareness.h2
-rw-r--r--src/KingSystem/ActorSystem/Awareness/actAwarenessDefs.cpp5
-rw-r--r--src/KingSystem/ActorSystem/actAiActionBase.h56
-rw-r--r--src/KingSystem/ActorSystem/actAiParam.h4
-rw-r--r--src/KingSystem/Map/mapObject.cpp2
-rw-r--r--src/KingSystem/Quest/qstQuest.cpp2
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;