diff options
| author | Michael Zhao <44533763+Pistonight@users.noreply.github.com> | 2026-05-31 14:26:22 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-05-31 14:26:22 -0700 |
| commit | 77d70466690bf252d642dbdfa3fa689c00484ae0 (patch) | |
| tree | 6327a04d99d525904d6dbf9f38674aa4201146c0 /src | |
| parent | d10aef2b4fe55fa281572b24576f4cef8fef4c3e (diff) | |
| parent | 3183601b597bff191f7805f0af18495554ede9e6 (diff) | |
Merge pull request #170 from Pistonight/fix/new_viking_mismatches
take new viking and update mismatches
Diffstat (limited to 'src')
21 files changed, 90 insertions, 40 deletions
diff --git a/src/Game/AI/AI/aiRideHorseAI.cpp b/src/Game/AI/AI/aiRideHorseAI.cpp index 6f45b1b7..3bc177b2 100644 --- a/src/Game/AI/AI/aiRideHorseAI.cpp +++ b/src/Game/AI/AI/aiRideHorseAI.cpp @@ -19,7 +19,7 @@ void RideHorseAI::leave_() { } void RideHorseAI::loadParams_() { - getDynamicParam2(&mHasToPlayRidingOnAS_d, "HasToPlayRidingOnAS"); + getDynamicParam_2(&mHasToPlayRidingOnAS_d, "HasToPlayRidingOnAS"); } } // namespace uking::ai diff --git a/src/Game/AI/Action/actionCameraEventFocusDistSetting.cpp b/src/Game/AI/Action/actionCameraEventFocusDistSetting.cpp index ec064acc..fa1a208a 100644 --- a/src/Game/AI/Action/actionCameraEventFocusDistSetting.cpp +++ b/src/Game/AI/Action/actionCameraEventFocusDistSetting.cpp @@ -8,9 +8,9 @@ CameraEventFocusDistSetting::CameraEventFocusDistSetting(const InitArg& arg) CameraEventFocusDistSetting::~CameraEventFocusDistSetting() = default; void CameraEventFocusDistSetting::loadParams_() { - getDynamicParam2(&mClipIndex_d, "ClipIndex"); - getDynamicParam2(&mFocusDistStart_d, "FocusDistStart"); - getDynamicParam2(&mFocusDistEnd_d, "FocusDistEnd"); + getDynamicParam_2(&mClipIndex_d, "ClipIndex"); + getDynamicParam_2(&mFocusDistStart_d, "FocusDistStart"); + getDynamicParam_2(&mFocusDistEnd_d, "FocusDistEnd"); } void CameraEventFocusDistSetting::calc_() { diff --git a/src/Game/AI/Action/actionCameraEventOverwriteFar.cpp b/src/Game/AI/Action/actionCameraEventOverwriteFar.cpp index 6526526d..17a1a4f2 100644 --- a/src/Game/AI/Action/actionCameraEventOverwriteFar.cpp +++ b/src/Game/AI/Action/actionCameraEventOverwriteFar.cpp @@ -15,7 +15,7 @@ void CameraEventOverwriteFar::leave_() { } void CameraEventOverwriteFar::loadParams_() { - getDynamicParam2(&mFar_d, "Far"); + getDynamicParam_2(&mFar_d, "Far"); } } // namespace uking::action diff --git a/src/Game/AI/Action/actionCameraEventOverwriteNear.cpp b/src/Game/AI/Action/actionCameraEventOverwriteNear.cpp index a78cd1cb..aa89a0d8 100644 --- a/src/Game/AI/Action/actionCameraEventOverwriteNear.cpp +++ b/src/Game/AI/Action/actionCameraEventOverwriteNear.cpp @@ -16,7 +16,7 @@ void CameraEventOverwriteNear::leave_() { } void CameraEventOverwriteNear::loadParams_() { - getDynamicParam2(&mNear_d, "Near"); + getDynamicParam_2(&mNear_d, "Near"); } } // namespace uking::action diff --git a/src/Game/AI/Action/actionCameraEventReserveConnectTime.cpp b/src/Game/AI/Action/actionCameraEventReserveConnectTime.cpp index 403ca399..e44920e8 100644 --- a/src/Game/AI/Action/actionCameraEventReserveConnectTime.cpp +++ b/src/Game/AI/Action/actionCameraEventReserveConnectTime.cpp @@ -8,7 +8,7 @@ CameraEventReserveConnectTime::CameraEventReserveConnectTime(const InitArg& arg) CameraEventReserveConnectTime::~CameraEventReserveConnectTime() = default; void CameraEventReserveConnectTime::loadParams_() { - getDynamicParam2(&mInterpolateTime_d, "InterpolateTime"); + getDynamicParam_2(&mInterpolateTime_d, "InterpolateTime"); } } // namespace uking::action diff --git a/src/Game/AI/Action/actionCameraRotRumble.cpp b/src/Game/AI/Action/actionCameraRotRumble.cpp index 95cf7c16..b0d62205 100644 --- a/src/Game/AI/Action/actionCameraRotRumble.cpp +++ b/src/Game/AI/Action/actionCameraRotRumble.cpp @@ -5,9 +5,9 @@ namespace uking::action { CameraRotRumble::CameraRotRumble(const InitArg& arg) : ksys::act::ai::Action(arg) {} void CameraRotRumble::loadParams_() { - getDynamicParam2(&mPattern_d, "Pattern"); - getDynamicParam2(&mCount_d, "Count"); - getDynamicParam2(&mPower_d, "Power"); + getDynamicParam_2(&mPattern_d, "Pattern"); + getDynamicParam_2(&mCount_d, "Count"); + getDynamicParam_2(&mPower_d, "Power"); } } // namespace uking::action diff --git a/src/Game/AI/Action/actionCameraRumble.cpp b/src/Game/AI/Action/actionCameraRumble.cpp index 95f58351..9774faab 100644 --- a/src/Game/AI/Action/actionCameraRumble.cpp +++ b/src/Game/AI/Action/actionCameraRumble.cpp @@ -5,10 +5,10 @@ namespace uking::action { CameraRumble::CameraRumble(const InitArg& arg) : ksys::act::ai::Action(arg) {} void CameraRumble::loadParams_() { - getDynamicParam2(&mPattern_d, "Pattern"); - getDynamicParam2(&mCount_d, "Count"); - getDynamicParam2(&mPower_d, "Power"); - getDynamicParam2(&mSideways_d, "Sideways"); + getDynamicParam_2(&mPattern_d, "Pattern"); + getDynamicParam_2(&mCount_d, "Count"); + getDynamicParam_2(&mPower_d, "Power"); + getDynamicParam_2(&mSideways_d, "Sideways"); } } // namespace uking::action diff --git a/src/Game/AI/Action/actionCameraRumbleLoop.cpp b/src/Game/AI/Action/actionCameraRumbleLoop.cpp index 6214e899..d7dc582d 100644 --- a/src/Game/AI/Action/actionCameraRumbleLoop.cpp +++ b/src/Game/AI/Action/actionCameraRumbleLoop.cpp @@ -9,9 +9,9 @@ void CameraRumbleLoop::enter_(ksys::act::ai::InlineParamPack* params) { } void CameraRumbleLoop::loadParams_() { - getDynamicParam2(&mPattern_d, "Pattern"); - getDynamicParam2(&mPower_d, "Power"); - getDynamicParam2(&mSideways_d, "Sideways"); + getDynamicParam_2(&mPattern_d, "Pattern"); + getDynamicParam_2(&mPower_d, "Power"); + getDynamicParam_2(&mSideways_d, "Sideways"); getAITreeVariable(&mCamVibId_a, "CamVibId"); } diff --git a/src/Game/AI/Action/actionCameraRumbleStopWithDamping.cpp b/src/Game/AI/Action/actionCameraRumbleStopWithDamping.cpp index bb2ab469..a5a62770 100644 --- a/src/Game/AI/Action/actionCameraRumbleStopWithDamping.cpp +++ b/src/Game/AI/Action/actionCameraRumbleStopWithDamping.cpp @@ -6,7 +6,7 @@ CameraRumbleStopWithDamping::CameraRumbleStopWithDamping(const InitArg& arg) : ksys::act::ai::Action(arg) {} void CameraRumbleStopWithDamping::loadParams_() { - getDynamicParam2(&mDampingTime_d, "DampingTime"); + getDynamicParam_2(&mDampingTime_d, "DampingTime"); getAITreeVariable(&mCamVibId_a, "CamVibId"); } diff --git a/src/Game/AI/Action/actionControllerRumble.cpp b/src/Game/AI/Action/actionControllerRumble.cpp index 4a85b15d..e9e77e01 100644 --- a/src/Game/AI/Action/actionControllerRumble.cpp +++ b/src/Game/AI/Action/actionControllerRumble.cpp @@ -10,7 +10,7 @@ void ControllerRumble::enter_(ksys::act::ai::InlineParamPack* params) { void ControllerRumble::loadParams_() { getStaticParam(&mPattern_s, "Pattern"); - getDynamicParam2(&mCount_d, "Count"); + getDynamicParam_2(&mCount_d, "Count"); } } // namespace uking::action diff --git a/src/Game/AI/Action/actionGiantDoubleGroundPunch.cpp b/src/Game/AI/Action/actionGiantDoubleGroundPunch.cpp index 2fcb26ef..a083e14b 100644 --- a/src/Game/AI/Action/actionGiantDoubleGroundPunch.cpp +++ b/src/Game/AI/Action/actionGiantDoubleGroundPunch.cpp @@ -89,7 +89,7 @@ void GiantDoubleGroundPunch::loadParams_() { // FIXME: CALL _ZN4sead14PrintFormatter20proceedToFormatMark_EPc @ 0x7100b0bde0 // FIXME: CALL _ZN4sead14PrintFormatter5flushEv @ 0x7100b0bd94 // FIXME: CALL sead__PrintFormatter__x @ 0x7100b0c528 - getDynamicParam2(&mTargetPos_d, "TargetPos"); + getDynamicParam_2(&mTargetPos_d, "TargetPos"); } void GiantDoubleGroundPunch::calc_() { diff --git a/src/Game/AI/Action/actionMsg2CameraResetInterpolate.cpp b/src/Game/AI/Action/actionMsg2CameraResetInterpolate.cpp index 9e483112..c48aef0c 100644 --- a/src/Game/AI/Action/actionMsg2CameraResetInterpolate.cpp +++ b/src/Game/AI/Action/actionMsg2CameraResetInterpolate.cpp @@ -6,7 +6,7 @@ Msg2CameraResetInterpolate::Msg2CameraResetInterpolate(const InitArg& arg) : ksys::act::ai::Action(arg) {} void Msg2CameraResetInterpolate::loadParams_() { - getDynamicParam2(&mInterpolateParam_d, "InterpolateParam"); + getDynamicParam_2(&mInterpolateParam_d, "InterpolateParam"); } } // namespace uking::action diff --git a/src/Game/AI/Query/queryIsCurrentMainFieldStage.cpp b/src/Game/AI/Query/queryIsCurrentMainFieldStage.cpp index ddd0aa88..879bfced 100644 --- a/src/Game/AI/Query/queryIsCurrentMainFieldStage.cpp +++ b/src/Game/AI/Query/queryIsCurrentMainFieldStage.cpp @@ -1,6 +1,6 @@ #include "Game/AI/Query/queryIsCurrentMainFieldStage.h" #include <evfl/Query.h> -#include "KingSystem/System/StageInfo.h" +#include "Game/gameScene.h" namespace uking::query { @@ -9,7 +9,7 @@ IsCurrentMainFieldStage::IsCurrentMainFieldStage(const InitArg& arg) : ksys::act IsCurrentMainFieldStage::~IsCurrentMainFieldStage() = default; int IsCurrentMainFieldStage::doQuery() { - return ksys::StageInfo::getCurrentMapType() == "MainField"; + return GameScene::getCurrentMapType() == "MainField"; } void IsCurrentMainFieldStage::loadParams(const evfl::QueryArg& arg) {} diff --git a/src/Game/gameScene.cpp b/src/Game/gameScene.cpp index 2f5a4344..96c5a936 100644 --- a/src/Game/gameScene.cpp +++ b/src/Game/gameScene.cpp @@ -1,7 +1,16 @@ #include "Game/gameScene.h" +#include "KingSystem/System/StageInfo.h" namespace uking { bool GameScene::sIsOpenWorldDemo{}; +const sead::SafeString& GameScene::getCurrentMapType() { + return ksys::StageInfo::getCurrentMapType(); +} + +const sead::SafeString& GameScene::getCurrentMapName() { + return ksys::StageInfo::getCurrentMapName(); +} + } // namespace uking 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; |
