summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2026-09-28 03:39:31 +0200
committerLéo Lam <leo@leolam.fr>2026-10-13 03:33:27 +0200
commitea13bac74ad136aeb3dde81f07ccd62622be94ad (patch)
tree6ce7dd47659a2513c0f25236d49aa7953e354e0f /src
parente400fe702540b886b718b18e622be450008293a6 (diff)
ksys: move AS setting, RootAi and three others to match link order
Each file moves to where its code is linked, and namespaces follow the new paths. ASSettingMgr is an unofficial name. | Old | New | |---|---| | act::ASSetting (ActorSystem/actASSetting) | res::ASSettingMgr (Resource/Actor/resResourceASSettingMgr) | | Resource/resResourceASSetting, Resource/Actor/resResourceASResourceExtension | Resource/Actor/resResourceASSetting | | ksys::DebugFinder (System/DebugFinder) | ksys::act::DebugFinder (ActorSystem/actDebugFinder) | | ActorSystem/LOD/actLodState | ActorSystem/actLodState | | ActorSystem/actAiRoot | ActorSystem/aiRootAi | | Map/mapStagePreActorCache | System/StagePreActorCache (ksys) | (AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
Diffstat (limited to 'src')
-rw-r--r--src/Game/Actor/Query/queryIsSuccessEndLastDemoAction.cpp2
-rw-r--r--src/KingSystem/ActorSystem/CMakeLists.txt13
-rw-r--r--src/KingSystem/ActorSystem/actASSetting.cpp31
-rw-r--r--src/KingSystem/ActorSystem/actASSetting.h26
-rw-r--r--src/KingSystem/ActorSystem/actActor.cpp2
-rw-r--r--src/KingSystem/ActorSystem/actActorEditorNode.cpp2
-rw-r--r--src/KingSystem/ActorSystem/actActorLinkConstDataAccess.cpp2
-rw-r--r--src/KingSystem/ActorSystem/actActorParamMgr.cpp8
-rw-r--r--src/KingSystem/ActorSystem/actAiAction.cpp2
-rw-r--r--src/KingSystem/ActorSystem/actAiActionBase.cpp2
-rw-r--r--src/KingSystem/ActorSystem/actAiAi.cpp2
-rw-r--r--src/KingSystem/ActorSystem/actAiBehavior.cpp2
-rw-r--r--src/KingSystem/ActorSystem/actAiQuery.cpp2
-rw-r--r--src/KingSystem/ActorSystem/actDebugFinder.cpp (renamed from src/KingSystem/System/DebugFinder.cpp)6
-rw-r--r--src/KingSystem/ActorSystem/actDebugFinder.h (renamed from src/KingSystem/System/DebugFinder.h)4
-rw-r--r--src/KingSystem/ActorSystem/actLodState.cpp (renamed from src/KingSystem/ActorSystem/LOD/actLodState.cpp)2
-rw-r--r--src/KingSystem/ActorSystem/actLodState.h (renamed from src/KingSystem/ActorSystem/LOD/actLodState.h)0
-rw-r--r--src/KingSystem/ActorSystem/aiForkAI.cpp2
-rw-r--r--src/KingSystem/ActorSystem/aiRootAi.cpp (renamed from src/KingSystem/ActorSystem/actAiRoot.cpp)2
-rw-r--r--src/KingSystem/ActorSystem/aiRootAi.h (renamed from src/KingSystem/ActorSystem/actAiRoot.h)0
-rw-r--r--src/KingSystem/Map/CMakeLists.txt2
-rw-r--r--src/KingSystem/Map/mapObject.cpp2
-rw-r--r--src/KingSystem/Map/mapPlacementAreaMgr.h2
-rw-r--r--src/KingSystem/Map/mapPlacementMapMgr.h7
-rw-r--r--src/KingSystem/Map/mapStagePreActorCache.cpp7
-rw-r--r--src/KingSystem/Resource/Actor/resResourceASSetting.cpp (renamed from src/KingSystem/Resource/Actor/resResourceASResourceExtension.cpp)174
-rw-r--r--src/KingSystem/Resource/Actor/resResourceASSetting.h (renamed from src/KingSystem/Resource/resResourceASSetting.h)2
-rw-r--r--src/KingSystem/Resource/Actor/resResourceASSettingMgr.h26
-rw-r--r--src/KingSystem/Resource/CMakeLists.txt6
-rw-r--r--src/KingSystem/Resource/resResourceASSetting.cpp113
-rw-r--r--src/KingSystem/System/CMakeLists.txt4
-rw-r--r--src/KingSystem/System/StagePreActorCache.cpp7
-rw-r--r--src/KingSystem/System/StagePreActorCache.h (renamed from src/KingSystem/Map/mapStagePreActorCache.h)10
33 files changed, 233 insertions, 241 deletions
diff --git a/src/Game/Actor/Query/queryIsSuccessEndLastDemoAction.cpp b/src/Game/Actor/Query/queryIsSuccessEndLastDemoAction.cpp
index 6c79cdc9..6d9dda5c 100644
--- a/src/Game/Actor/Query/queryIsSuccessEndLastDemoAction.cpp
+++ b/src/Game/Actor/Query/queryIsSuccessEndLastDemoAction.cpp
@@ -1,7 +1,7 @@
#include "Game/Actor/Query/queryIsSuccessEndLastDemoAction.h"
#include <evfl/Query.h>
#include "KingSystem/ActorSystem/actActor.h"
-#include "KingSystem/ActorSystem/actAiRoot.h"
+#include "KingSystem/ActorSystem/aiRootAi.h"
namespace uking::query {
diff --git a/src/KingSystem/ActorSystem/CMakeLists.txt b/src/KingSystem/ActorSystem/CMakeLists.txt
index c83f97de..e0b70bfd 100644
--- a/src/KingSystem/ActorSystem/CMakeLists.txt
+++ b/src/KingSystem/ActorSystem/CMakeLists.txt
@@ -13,9 +13,6 @@ target_sources(uking PRIVATE
Awareness/actAwarenessInstance.h
- LOD/actLodState.cpp
- LOD/actLodState.h
-
Profiles/actRopeBase.cpp
Profiles/actRopeBase.h
Profiles/actWeaponBase.cpp
@@ -62,10 +59,6 @@ target_sources(uking PRIVATE
actAiQuery.h
actAiQueries.cpp
actAiQueries.h
- actAiRoot.cpp
- actAiRoot.h
- actASSetting.cpp
- actASSetting.h
actBaseProc.cpp
actBaseProc.h
actBaseProcAccessor.cpp
@@ -99,6 +92,8 @@ target_sources(uking PRIVATE
actClusteredRenderer.h
actDebug.cpp
actDebug.h
+ actDebugFinder.cpp
+ actDebugFinder.h
actGlobalParameter.cpp
actGlobalParameter.h
actIDamageManager.cpp
@@ -110,6 +105,8 @@ target_sources(uking PRIVATE
actInstParamPack.cpp
actInstParamPack.h
actLifeRecoveryInfo.h
+ actLodState.cpp
+ actLodState.h
actPhysicsConstraints.cpp
actPhysicsConstraints.h
actPhysicsUserTag.cpp
@@ -134,6 +131,8 @@ target_sources(uking PRIVATE
aiFork6AI.h
aiForkAI.cpp
aiForkAI.h
+ aiRootAi.cpp
+ aiRootAi.h
behaviorDummyBehavior.cpp
behaviorDummyBehavior.h
diff --git a/src/KingSystem/ActorSystem/actASSetting.cpp b/src/KingSystem/ActorSystem/actASSetting.cpp
deleted file mode 100644
index 2b020cfe..00000000
--- a/src/KingSystem/ActorSystem/actASSetting.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-#include "KingSystem/ActorSystem/actASSetting.h"
-#include "KingSystem/Resource/resLoadRequest.h"
-#include "KingSystem/Resource/resResourceASSetting.h"
-
-namespace ksys::act {
-
-SEAD_SINGLETON_DISPOSER_IMPL(ASSetting)
-
-ASSetting::~ASSetting() = default;
-
-void ASSetting::init(const sead::SafeString& config_path, sead::Heap* heap) {
- res::LoadRequest req;
- req.mRequester = "ASSetting";
- req._22 = true;
- mHandle.load(config_path, &req);
-}
-
-// NON_MATCHING: sead::DirectResource to res::ASSetting cast nullptr check; branching for the return
-res::ASParamParser* ASSetting::getBoneParams(const sead::SafeString& key) const {
- auto* res = sead::DynamicCast<res::ASSetting>(mHandle.getResource());
- if (!res)
- return nullptr;
-
- for (auto& bones : res->getBlenderBones()) {
- if (key == bones.mKeyName.ref())
- return &bones.mBoneParams;
- }
- return nullptr;
-}
-
-} // namespace ksys::act
diff --git a/src/KingSystem/ActorSystem/actASSetting.h b/src/KingSystem/ActorSystem/actASSetting.h
deleted file mode 100644
index 8c97c85a..00000000
--- a/src/KingSystem/ActorSystem/actASSetting.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#pragma once
-
-#include <heap/seadDisposer.h>
-#include <prim/seadSafeString.h>
-#include "KingSystem/Resource/resHandle.h"
-#include "KingSystem/Resource/resResourceASSetting.h"
-#include "KingSystem/Utils/Types.h"
-
-namespace ksys::act {
-
-// FIXME: very incomplete
-class ASSetting {
- SEAD_SINGLETON_DISPOSER(ASSetting)
- ASSetting() = default;
- virtual ~ASSetting();
-
-public:
- void init(const sead::SafeString& config_path, sead::Heap* heap);
- res::ASParamParser* getBoneParams(const sead::SafeString& key) const;
-
-private:
- res::Handle mHandle;
-};
-KSYS_CHECK_SIZE_NX150(ASSetting, 0x78);
-
-} // namespace ksys::act
diff --git a/src/KingSystem/ActorSystem/actActor.cpp b/src/KingSystem/ActorSystem/actActor.cpp
index ec7f3ea1..40432678 100644
--- a/src/KingSystem/ActorSystem/actActor.cpp
+++ b/src/KingSystem/ActorSystem/actActor.cpp
@@ -1,8 +1,8 @@
#include "KingSystem/ActorSystem/actActor.h"
#include "KingSystem/ActorSystem/actActorParam.h"
-#include "KingSystem/ActorSystem/actAiRoot.h"
#include "KingSystem/ActorSystem/actBaseProcLink.h"
#include "KingSystem/ActorSystem/actBaseProcMgr.h"
+#include "KingSystem/ActorSystem/aiRootAi.h"
#include "KingSystem/Physics/System/physInstanceSet.h"
namespace ksys::act {
diff --git a/src/KingSystem/ActorSystem/actActorEditorNode.cpp b/src/KingSystem/ActorSystem/actActorEditorNode.cpp
index 47b6621e..ecb1bf00 100644
--- a/src/KingSystem/ActorSystem/actActorEditorNode.cpp
+++ b/src/KingSystem/ActorSystem/actActorEditorNode.cpp
@@ -1,5 +1,5 @@
#include "KingSystem/ActorSystem/actActorEditorNode.h"
-#include "KingSystem/ActorSystem/actAiRoot.h"
+#include "KingSystem/ActorSystem/aiRootAi.h"
#include "KingSystem/System/KingEditor.h"
namespace ksys::act {
diff --git a/src/KingSystem/ActorSystem/actActorLinkConstDataAccess.cpp b/src/KingSystem/ActorSystem/actActorLinkConstDataAccess.cpp
index 591df49e..e7ce2c15 100644
--- a/src/KingSystem/ActorSystem/actActorLinkConstDataAccess.cpp
+++ b/src/KingSystem/ActorSystem/actActorLinkConstDataAccess.cpp
@@ -3,8 +3,8 @@
#include "KingSystem/ActorSystem/actActor.h"
#include "KingSystem/ActorSystem/actActorParam.h"
#include "KingSystem/ActorSystem/actActorUtil.h"
-#include "KingSystem/ActorSystem/actAiRoot.h"
#include "KingSystem/ActorSystem/actBaseProc.h"
+#include "KingSystem/ActorSystem/aiRootAi.h"
#include "KingSystem/Map/mapObject.h"
#include "KingSystem/Resource/Actor/resResourceGParamList.h"
#include "KingSystem/Resource/GeneralParamList/resGParamListObjectAttack.h"
diff --git a/src/KingSystem/ActorSystem/actActorParamMgr.cpp b/src/KingSystem/ActorSystem/actActorParamMgr.cpp
index fdf9c870..2ff51d04 100644
--- a/src/KingSystem/ActorSystem/actActorParamMgr.cpp
+++ b/src/KingSystem/ActorSystem/actActorParamMgr.cpp
@@ -1,11 +1,11 @@
#include "KingSystem/ActorSystem/actActorParamMgr.h"
#include <prim/seadScopedLock.h>
-#include "KingSystem/ActorSystem/actASSetting.h"
#include "KingSystem/ActorSystem/actActorParam.h"
#include "KingSystem/Resource/Actor/resResourceAIProgram.h"
#include "KingSystem/Resource/Actor/resResourceAISchedule.h"
#include "KingSystem/Resource/Actor/resResourceAS.h"
#include "KingSystem/Resource/Actor/resResourceASList.h"
+#include "KingSystem/Resource/Actor/resResourceASSettingMgr.h"
#include "KingSystem/Resource/Actor/resResourceActorLink.h"
#include "KingSystem/Resource/Actor/resResourceAnimInfo.h"
#include "KingSystem/Resource/Actor/resResourceAttClient.h"
@@ -140,13 +140,13 @@ void ActorParamMgr::init(sead::Heap* heap, sead::Heap* debug_heap) {
res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::ASSetting>(0.0, 0x80000),
"bassetting");
- ASSetting::createInstance(mTempHeap);
- ASSetting::instance()->init("Actor/ASSetting.bassetting", mTempHeap);
+ res::ASSettingMgr::createInstance(mTempHeap);
+ res::ASSettingMgr::instance()->init("Actor/ASSetting.bassetting", mTempHeap);
ActorParam::resetDummyResources();
}
ActorParamMgr::~ActorParamMgr() {
- ASSetting::deleteInstance();
+ res::ASSettingMgr::deleteInstance();
}
bool ActorParamMgr::checkPath(const sead::SafeString& path) const {
diff --git a/src/KingSystem/ActorSystem/actAiAction.cpp b/src/KingSystem/ActorSystem/actAiAction.cpp
index 4c57a5e6..721afb09 100644
--- a/src/KingSystem/ActorSystem/actAiAction.cpp
+++ b/src/KingSystem/ActorSystem/actAiAction.cpp
@@ -2,8 +2,8 @@
#include <codec/seadHashCRC32.h>
#include "KingSystem/ActorSystem/actActor.h"
#include "KingSystem/ActorSystem/actActorParam.h"
-#include "KingSystem/ActorSystem/actAiRoot.h"
#include "KingSystem/ActorSystem/actionDummyAction.h"
+#include "KingSystem/ActorSystem/aiRootAi.h"
#include "KingSystem/Resource/Actor/resResourceAIProgram.h"
namespace ksys::act::ai {
diff --git a/src/KingSystem/ActorSystem/actAiActionBase.cpp b/src/KingSystem/ActorSystem/actAiActionBase.cpp
index 81320ef1..794ec395 100644
--- a/src/KingSystem/ActorSystem/actAiActionBase.cpp
+++ b/src/KingSystem/ActorSystem/actAiActionBase.cpp
@@ -3,7 +3,7 @@
#include "KingSystem/ActorSystem/actActorParam.h"
#include "KingSystem/ActorSystem/actAiAction.h"
#include "KingSystem/ActorSystem/actAiInlineParam.h"
-#include "KingSystem/ActorSystem/actAiRoot.h"
+#include "KingSystem/ActorSystem/aiRootAi.h"
#include "KingSystem/Resource/Actor/resResourceAIProgram.h"
#include "KingSystem/Utils/InitTimeInfo.h"
#include "KingSystem/Utils/Thread/MessageTransceiverId.h"
diff --git a/src/KingSystem/ActorSystem/actAiAi.cpp b/src/KingSystem/ActorSystem/actAiAi.cpp
index 26949474..7602eb47 100644
--- a/src/KingSystem/ActorSystem/actAiAi.cpp
+++ b/src/KingSystem/ActorSystem/actAiAi.cpp
@@ -5,8 +5,8 @@
#include "KingSystem/ActorSystem/actAiAction.h"
#include "KingSystem/ActorSystem/actAiClassDef.h"
#include "KingSystem/ActorSystem/actAiInlineParam.h"
-#include "KingSystem/ActorSystem/actAiRoot.h"
#include "KingSystem/ActorSystem/aiDummyAi.h"
+#include "KingSystem/ActorSystem/aiRootAi.h"
#include "KingSystem/Resource/Actor/resResourceAIProgram.h"
namespace ksys::act::ai {
diff --git a/src/KingSystem/ActorSystem/actAiBehavior.cpp b/src/KingSystem/ActorSystem/actAiBehavior.cpp
index 2f868984..d6e31cd4 100644
--- a/src/KingSystem/ActorSystem/actAiBehavior.cpp
+++ b/src/KingSystem/ActorSystem/actAiBehavior.cpp
@@ -1,7 +1,7 @@
#include "KingSystem/ActorSystem/actAiBehavior.h"
#include "KingSystem/ActorSystem/actActor.h"
#include "KingSystem/ActorSystem/actActorParam.h"
-#include "KingSystem/ActorSystem/actAiRoot.h"
+#include "KingSystem/ActorSystem/aiRootAi.h"
#include "KingSystem/ActorSystem/behaviorDummyBehavior.h"
#include "KingSystem/Resource/Actor/resResourceAIProgram.h"
diff --git a/src/KingSystem/ActorSystem/actAiQuery.cpp b/src/KingSystem/ActorSystem/actAiQuery.cpp
index 97f9ac33..cbfef6c0 100644
--- a/src/KingSystem/ActorSystem/actAiQuery.cpp
+++ b/src/KingSystem/ActorSystem/actAiQuery.cpp
@@ -3,7 +3,7 @@
#include "KingSystem/ActorSystem/actActor.h"
#include "KingSystem/ActorSystem/actActorParam.h"
#include "KingSystem/ActorSystem/actAiClassDef.h"
-#include "KingSystem/ActorSystem/actAiRoot.h"
+#include "KingSystem/ActorSystem/aiRootAi.h"
#include "KingSystem/Resource/Actor/resResourceAIProgram.h"
namespace ksys::act::ai {
diff --git a/src/KingSystem/System/DebugFinder.cpp b/src/KingSystem/ActorSystem/actDebugFinder.cpp
index 7e5a1d82..54b4e1f8 100644
--- a/src/KingSystem/System/DebugFinder.cpp
+++ b/src/KingSystem/ActorSystem/actDebugFinder.cpp
@@ -1,6 +1,6 @@
-#include "KingSystem/System/DebugFinder.h"
+#include "KingSystem/ActorSystem/actDebugFinder.h"
-namespace ksys {
+namespace ksys::act {
SEAD_SINGLETON_DISPOSER_IMPL(DebugFinder)
@@ -8,4 +8,4 @@ DebugFinder::DebugFinder() = default;
DebugFinder::~DebugFinder() = default;
-} // namespace ksys
+} // namespace ksys::act
diff --git a/src/KingSystem/System/DebugFinder.h b/src/KingSystem/ActorSystem/actDebugFinder.h
index 16eb4e4c..3ca020ca 100644
--- a/src/KingSystem/System/DebugFinder.h
+++ b/src/KingSystem/ActorSystem/actDebugFinder.h
@@ -3,7 +3,7 @@
#include <heap/seadDisposer.h>
#include <prim/seadSafeString.h>
-namespace ksys {
+namespace ksys::act {
class DebugFinder {
SEAD_SINGLETON_DISPOSER(DebugFinder)
@@ -16,4 +16,4 @@ private:
u32 unused_3 = 0;
};
-} // namespace ksys
+} // namespace ksys::act
diff --git a/src/KingSystem/ActorSystem/LOD/actLodState.cpp b/src/KingSystem/ActorSystem/actLodState.cpp
index 3b11296b..8625ab45 100644
--- a/src/KingSystem/ActorSystem/LOD/actLodState.cpp
+++ b/src/KingSystem/ActorSystem/actLodState.cpp
@@ -1,4 +1,4 @@
-#include "KingSystem/ActorSystem/LOD/actLodState.h"
+#include "KingSystem/ActorSystem/actLodState.h"
#include "KingSystem/ActorSystem/actActor.h"
#include "KingSystem/ActorSystem/actActorParam.h"
#include "KingSystem/ActorSystem/actActorUtil.h"
diff --git a/src/KingSystem/ActorSystem/LOD/actLodState.h b/src/KingSystem/ActorSystem/actLodState.h
index 817e1a82..817e1a82 100644
--- a/src/KingSystem/ActorSystem/LOD/actLodState.h
+++ b/src/KingSystem/ActorSystem/actLodState.h
diff --git a/src/KingSystem/ActorSystem/aiForkAI.cpp b/src/KingSystem/ActorSystem/aiForkAI.cpp
index d8cd4249..5989bdba 100644
--- a/src/KingSystem/ActorSystem/aiForkAI.cpp
+++ b/src/KingSystem/ActorSystem/aiForkAI.cpp
@@ -1,5 +1,5 @@
#include "KingSystem/ActorSystem/aiForkAI.h"
-#include "KingSystem/ActorSystem/actAiRoot.h"
+#include "KingSystem/ActorSystem/aiRootAi.h"
namespace ksys::act::ai {
diff --git a/src/KingSystem/ActorSystem/actAiRoot.cpp b/src/KingSystem/ActorSystem/aiRootAi.cpp
index 0aa8f4ac..2706a208 100644
--- a/src/KingSystem/ActorSystem/actAiRoot.cpp
+++ b/src/KingSystem/ActorSystem/aiRootAi.cpp
@@ -1,4 +1,4 @@
-#include "KingSystem/ActorSystem/actAiRoot.h"
+#include "KingSystem/ActorSystem/aiRootAi.h"
#include "KingSystem/ActorSystem/actActor.h"
#include "KingSystem/ActorSystem/actAiClassDef.h"
#include "KingSystem/Utils/InitTimeInfo.h"
diff --git a/src/KingSystem/ActorSystem/actAiRoot.h b/src/KingSystem/ActorSystem/aiRootAi.h
index c9b61df6..c9b61df6 100644
--- a/src/KingSystem/ActorSystem/actAiRoot.h
+++ b/src/KingSystem/ActorSystem/aiRootAi.h
diff --git a/src/KingSystem/Map/CMakeLists.txt b/src/KingSystem/Map/CMakeLists.txt
index b201b701..52a8c659 100644
--- a/src/KingSystem/Map/CMakeLists.txt
+++ b/src/KingSystem/Map/CMakeLists.txt
@@ -26,6 +26,4 @@ target_sources(uking PRIVATE
mapPlacementTree.h
mapRail.cpp
mapRail.h
- mapStagePreActorCache.cpp
- mapStagePreActorCache.h
)
diff --git a/src/KingSystem/Map/mapObject.cpp b/src/KingSystem/Map/mapObject.cpp
index a22274f2..c5e838a7 100644
--- a/src/KingSystem/Map/mapObject.cpp
+++ b/src/KingSystem/Map/mapObject.cpp
@@ -6,7 +6,7 @@
#include "KingSystem/Graphics/gfxForestRenderer.h"
#include "KingSystem/Map/mapObjectLink.h"
#include "KingSystem/Map/mapPlacementMgr.h"
-#include "KingSystem/Map/mapStagePreActorCache.h"
+#include "KingSystem/System/StagePreActorCache.h"
#include "KingSystem/Terrain/teraSystem.h"
#include "KingSystem/Utils/Debug.h"
diff --git a/src/KingSystem/Map/mapPlacementAreaMgr.h b/src/KingSystem/Map/mapPlacementAreaMgr.h
index dee435f5..e040c417 100644
--- a/src/KingSystem/Map/mapPlacementAreaMgr.h
+++ b/src/KingSystem/Map/mapPlacementAreaMgr.h
@@ -6,8 +6,8 @@
#include <prim/seadSafeString.h>
#include <prim/seadTypedBitFlag.h>
-#include "KingSystem/Map/mapStagePreActorCache.h"
#include "KingSystem/Map/mapTypes.h"
+#include "KingSystem/System/StagePreActorCache.h"
#include "KingSystem/Utils/Types.h"
namespace ksys::gdt {
diff --git a/src/KingSystem/Map/mapPlacementMapMgr.h b/src/KingSystem/Map/mapPlacementMapMgr.h
index 913c419a..6fb6d848 100644
--- a/src/KingSystem/Map/mapPlacementMapMgr.h
+++ b/src/KingSystem/Map/mapPlacementMapMgr.h
@@ -8,11 +8,14 @@
#include "KingSystem/Resource/resHandle.h"
#include "KingSystem/Utils/Types.h"
+namespace ksys::act {
+class FarActorMerge;
+} // namespace ksys::act
+
namespace ksys::map {
class MapProperties;
class Placement18;
-class FarActorMerge;
class PlacementActors;
class PlacementMap;
@@ -49,7 +52,7 @@ private:
s32 _18;
s32 _1c;
PlacementMapArray mMapArray;
- FarActorMerge* mFarActorMerge;
+ act::FarActorMerge* mFarActorMerge;
s32 mNeedLoadDynMap;
s32 mNeedLoadDynMapPhysics;
bool mIsShrineOrDivineBeast;
diff --git a/src/KingSystem/Map/mapStagePreActorCache.cpp b/src/KingSystem/Map/mapStagePreActorCache.cpp
deleted file mode 100644
index cc853e2a..00000000
--- a/src/KingSystem/Map/mapStagePreActorCache.cpp
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "KingSystem/Map/mapStagePreActorCache.h"
-
-namespace ksys::map {
-
-SEAD_SINGLETON_DISPOSER_IMPL(StagePreActorCache)
-
-} // namespace ksys::map
diff --git a/src/KingSystem/Resource/Actor/resResourceASResourceExtension.cpp b/src/KingSystem/Resource/Actor/resResourceASSetting.cpp
index c44948f1..915bd1c4 100644
--- a/src/KingSystem/Resource/Actor/resResourceASResourceExtension.cpp
+++ b/src/KingSystem/Resource/Actor/resResourceASSetting.cpp
@@ -1,9 +1,10 @@
-#include "KingSystem/Resource/Actor/resResourceASResourceExtension.h"
+#include "KingSystem/Resource/Actor/resResourceASSetting.h"
#include <container/seadSafeArray.h>
#include <optional>
#include <prim/seadSafeString.h>
-#include "KingSystem/ActorSystem/actASSetting.h"
-#include "KingSystem/Resource/resResourceASSetting.h"
+#include "KingSystem/Resource/Actor/resResourceASResourceExtension.h"
+#include "KingSystem/Resource/Actor/resResourceASSettingMgr.h"
+#include "KingSystem/Resource/resLoadRequest.h"
namespace ksys::res {
@@ -211,13 +212,41 @@ bool ASBitIndexParser::parse(const ASParamParser::ParseArgs& args) {
return true;
}
-template <typename T>
-static ASParamParser* factoryImpl_(sead::Heap* heap) {
- return new (heap) T;
+bool ASSetting::BoneParams::parse(const ASParamParser::ParseArgs& args) {
+ const auto num_objects = args.res_list.getResParameterObjNum();
+ if (num_objects == 0)
+ return true;
+
+ if (!mBuffer.tryAllocBuffer(num_objects, args.heap))
+ return false;
+
+ auto it = mBuffer.begin();
+ const auto end = mBuffer.end();
+
+ sead::FixedSafeString<32> obj_name{"BoneParam"};
+ const auto obj_name_base_len = obj_name.calcLength();
+
+ auto res_it = args.res_list.objBegin();
+ const auto res_end = args.res_list.objEnd();
+
+ for (; it != end && res_it != res_end; ++it, ++res_it) {
+ it->mBone.init("", "Bone", "ボーン名", "", &it->mObj);
+ it->mWeight.init(0.0, "Weight", "ウェイト値", "Min=0.f,Max=1.f", &it->mObj);
+
+ obj_name.trim(obj_name_base_len);
+ obj_name.appendWithFormat("%d", res_it.getIndex());
+ mList.addObj(&it->mObj, obj_name);
+ }
+
+ return true;
}
-static ASParamParser* dummyASParserFactoryImpl_(sead::Heap*) {
- return nullptr;
+f32 ASSetting::BoneParams::getBoneWeight(const sead::SafeString& name) const {
+ for (const auto& param : mBuffer) {
+ if (name == *param.mBone)
+ return *param.mWeight;
+ }
+ return 1.0;
}
namespace {
@@ -226,17 +255,7 @@ struct Factory {
ASParamParser* (*make)(sead::Heap* heap);
};
-sead::SafeArray<Factory, ASParamParser::NumTypes> sASFactories{{
- {"FrameCtrl", factoryImpl_<ASFrameCtrlParser>},
- {"TriggerEvents", factoryImpl_<ASTriggerEventsParser>},
- {"HoldEvents", factoryImpl_<ASHoldEventsParser>},
- {"StringArray", factoryImpl_<ASStringArrayParser>},
- {"Ranges", factoryImpl_<ASRangesParser>},
- {"FloatArray", factoryImpl_<ASFloatArrayParser>},
- {"IntArray", factoryImpl_<ASIntArrayParser>},
- {"BitIndex", factoryImpl_<ASBitIndexParser>},
- {"BlenderBone", dummyASParserFactoryImpl_},
-}};
+extern sead::SafeArray<Factory, ASParamParser::NumTypes> sASFactories;
} // namespace
ASExtensions::~ASExtensions() {
@@ -304,7 +323,7 @@ ASParamParser* ASExtensions::makeParser(const ASParamParser::ParseArgs& args) co
const auto obj = args.res_list.getResParameterObj(0);
if (obj.getNum() > 0) {
const sead::SafeString name = obj.getResParameter(0).getData<const char>();
- return act::ASSetting::instance()->getBoneParams(name);
+ return ASSettingMgr::instance()->getBoneParams(name);
}
}
@@ -326,6 +345,19 @@ ASParamParser* ASExtensions::makeParser(const ASParamParser::ParseArgs& args) co
return parser;
}
+// NON_MATCHING: sead::DirectResource to res::ASSetting cast nullptr check; branching for the return
+ASParamParser* ASSettingMgr::getBoneParams(const sead::SafeString& key) const {
+ auto* res = sead::DynamicCast<ASSetting>(mHandle.getResource());
+ if (!res)
+ return nullptr;
+
+ for (auto& bones : res->getBlenderBones()) {
+ if (key == bones.mKeyName.ref())
+ return &bones.mBoneParams;
+ }
+ return nullptr;
+}
+
ASParamParser* ASExtensions::getParser(ASParamParser::Type type) const {
for (int i = 0, n = mParsers.size(); i < n; ++i) {
auto* parser = mParsers[i];
@@ -335,4 +367,106 @@ ASParamParser* ASExtensions::getParser(ASParamParser::Type type) const {
return nullptr;
}
+ASSetting::ASSetting() {
+ mType = "assetting";
+ mVersion = 0;
+}
+
+ASSetting::~ASSetting() {
+ mBlenderBones.freeBuffer();
+}
+
+void ASSetting::doCreate_(u8* buffer, u32 buffer_size, sead::Heap* heap) {}
+
+bool allocBlenderBones(sead::Buffer<ASSetting::BlenderBone>& buffer, int size, sead::Heap* heap,
+ int align = sizeof(void*));
+
+bool ASSetting::parse_(u8* data, size_t size, sead::Heap* heap) {
+ if (!data)
+ return true;
+
+ agl::utl::ResParameterArchive archive{data};
+ const auto root = archive.getRootList();
+
+ addList(&mBlenderBoneList, "BlenderBone");
+
+ const auto lists = agl::utl::getResParameterList(root, "BlenderBone");
+ if (!lists.ptr())
+ return true;
+
+ const auto num_blender_bones = lists.getResParameterListNum();
+ if (num_blender_bones == 0)
+ return true;
+
+ if (!allocBlenderBones(mBlenderBones, num_blender_bones, heap))
+ return false;
+
+ auto res_it = lists.listBegin();
+ const auto res_it_end = lists.listEnd();
+ sead::FixedSafeString<32> list_name{"BlenderBone"};
+ const auto list_name_base_len = list_name.calcLength();
+
+ ASParamParser::ParseArgs args;
+ args.res_list = {};
+ args.heap = heap;
+
+ auto it = mBlenderBones.begin();
+ const auto end = mBlenderBones.end();
+ for (; it != end && res_it != res_it_end; ++it, ++res_it) {
+ list_name.trim(list_name_base_len);
+ list_name.appendWithFormat("%d", it.getIndex());
+ mBlenderBoneList.addList(&it->mList, list_name);
+
+ it->mKeyName.init("", "KeyName", "キー名", "", &it->mNameParamObj);
+ it->mList.addObj(&it->mNameParamObj, "NameParam");
+ it->mList.addList(&it->mBoneParams.getList(), "BoneParam");
+
+ const auto list = *res_it;
+ args.list = &it->mList;
+ args.res_list = agl::utl::getResParameterList(list, "BoneParam");
+ if (!it->mBoneParams.parse(args))
+ return false;
+ }
+
+ applyResParameterArchive(archive);
+ return true;
+}
+
+bool allocBlenderBones(sead::Buffer<ASSetting::BlenderBone>& buffer, int size, sead::Heap* heap,
+ int align) {
+ return buffer.tryAllocBuffer(size, heap, align);
+}
+
+SEAD_SINGLETON_DISPOSER_IMPL(ASSettingMgr)
+
+void ASSettingMgr::init(const sead::SafeString& config_path, sead::Heap* heap) {
+ LoadRequest req;
+ req.mRequester = "ASSetting";
+ req._22 = true;
+ mHandle.load(config_path, &req);
+}
+
+template <typename T>
+static ASParamParser* factoryImpl_(sead::Heap* heap) {
+ return new (heap) T;
+}
+
+static ASParamParser* dummyASParserFactoryImpl_(sead::Heap*) {
+ return nullptr;
+}
+
+namespace {
+sead::SafeArray<Factory, ASParamParser::NumTypes> sASFactories{{
+ {"FrameCtrl", factoryImpl_<ASFrameCtrlParser>},
+ {"TriggerEvents", factoryImpl_<ASTriggerEventsParser>},
+ {"HoldEvents", factoryImpl_<ASHoldEventsParser>},
+ {"StringArray", factoryImpl_<ASStringArrayParser>},
+ {"Ranges", factoryImpl_<ASRangesParser>},
+ {"FloatArray", factoryImpl_<ASFloatArrayParser>},
+ {"IntArray", factoryImpl_<ASIntArrayParser>},
+ {"BitIndex", factoryImpl_<ASBitIndexParser>},
+ {"BlenderBone", dummyASParserFactoryImpl_},
+}};
+} // namespace
+
} // namespace ksys::res
diff --git a/src/KingSystem/Resource/resResourceASSetting.h b/src/KingSystem/Resource/Actor/resResourceASSetting.h
index c9462199..84575fc4 100644
--- a/src/KingSystem/Resource/resResourceASSetting.h
+++ b/src/KingSystem/Resource/Actor/resResourceASSetting.h
@@ -29,7 +29,7 @@ public:
SEAD_RTTI_OVERRIDE(BoneParams, ASParamParser)
public:
BoneParams() : ASParamParser(Type::BlenderBone) {}
- ~BoneParams() override;
+ ~BoneParams() override { mBuffer.freeBuffer(); }
bool parse(const ParseArgs& args) override;
f32 getBoneWeight(const sead::SafeString& name) const;
diff --git a/src/KingSystem/Resource/Actor/resResourceASSettingMgr.h b/src/KingSystem/Resource/Actor/resResourceASSettingMgr.h
new file mode 100644
index 00000000..e4d16984
--- /dev/null
+++ b/src/KingSystem/Resource/Actor/resResourceASSettingMgr.h
@@ -0,0 +1,26 @@
+#pragma once
+
+#include <heap/seadDisposer.h>
+#include <prim/seadSafeString.h>
+#include "KingSystem/Resource/Actor/resResourceASSetting.h"
+#include "KingSystem/Resource/resHandle.h"
+#include "KingSystem/Utils/Types.h"
+
+namespace ksys::res {
+
+// FIXME: very incomplete
+class ASSettingMgr {
+ SEAD_SINGLETON_DISPOSER(ASSettingMgr)
+ ASSettingMgr() = default;
+ virtual ~ASSettingMgr() = default;
+
+public:
+ void init(const sead::SafeString& config_path, sead::Heap* heap);
+ ASParamParser* getBoneParams(const sead::SafeString& key) const;
+
+private:
+ Handle mHandle;
+};
+KSYS_CHECK_SIZE_NX150(ASSettingMgr, 0x78);
+
+} // namespace ksys::res
diff --git a/src/KingSystem/Resource/CMakeLists.txt b/src/KingSystem/Resource/CMakeLists.txt
index 1a9e5b28..825fe47a 100644
--- a/src/KingSystem/Resource/CMakeLists.txt
+++ b/src/KingSystem/Resource/CMakeLists.txt
@@ -128,8 +128,6 @@ target_sources(uking PRIVATE
resResource.cpp
resResource.h
- resResourceASSetting.cpp
- resResourceASSetting.h
resResourceArchive.cpp
resResourceArchive.h
resResourceGameData.cpp
@@ -153,8 +151,10 @@ target_sources(uking PRIVATE
Actor/resResourceASList.h
Actor/resResourceASResource.cpp
Actor/resResourceASResource.h
- Actor/resResourceASResourceExtension.cpp
Actor/resResourceASResourceExtension.h
+ Actor/resResourceASSetting.cpp
+ Actor/resResourceASSetting.h
+ Actor/resResourceASSettingMgr.h
Actor/resResourceAttCheck.cpp
Actor/resResourceAttCheck.h
Actor/resResourceAttClient.cpp
diff --git a/src/KingSystem/Resource/resResourceASSetting.cpp b/src/KingSystem/Resource/resResourceASSetting.cpp
deleted file mode 100644
index be0a3865..00000000
--- a/src/KingSystem/Resource/resResourceASSetting.cpp
+++ /dev/null
@@ -1,113 +0,0 @@
-#include "KingSystem/Resource/resResourceASSetting.h"
-
-namespace ksys::res {
-
-ASSetting::ASSetting() {
- mType = "assetting";
- mVersion = 0;
-}
-
-ASSetting::~ASSetting() {
- mBlenderBones.freeBuffer();
-}
-
-void ASSetting::doCreate_(u8* buffer, u32 buffer_size, sead::Heap* heap) {}
-
-bool allocBlenderBones(sead::Buffer<ASSetting::BlenderBone>& buffer, int size, sead::Heap* heap,
- int align = sizeof(void*)) {
- return buffer.tryAllocBuffer(size, heap, align);
-}
-
-bool ASSetting::parse_(u8* data, size_t size, sead::Heap* heap) {
- if (!data)
- return true;
-
- agl::utl::ResParameterArchive archive{data};
- const auto root = archive.getRootList();
-
- addList(&mBlenderBoneList, "BlenderBone");
-
- const auto lists = agl::utl::getResParameterList(root, "BlenderBone");
- if (!lists.ptr())
- return true;
-
- const auto num_blender_bones = lists.getResParameterListNum();
- if (num_blender_bones == 0)
- return true;
-
- if (!allocBlenderBones(mBlenderBones, num_blender_bones, heap))
- return false;
-
- auto res_it = lists.listBegin();
- const auto res_it_end = lists.listEnd();
- sead::FixedSafeString<32> list_name{"BlenderBone"};
- const auto list_name_base_len = list_name.calcLength();
-
- ASParamParser::ParseArgs args;
- args.res_list = {};
- args.heap = heap;
-
- auto it = mBlenderBones.begin();
- const auto end = mBlenderBones.end();
- for (; it != end && res_it != res_it_end; ++it, ++res_it) {
- list_name.trim(list_name_base_len);
- list_name.appendWithFormat("%d", it.getIndex());
- mBlenderBoneList.addList(&it->mList, list_name);
-
- it->mKeyName.init("", "KeyName", "キー名", "", &it->mNameParamObj);
- it->mList.addObj(&it->mNameParamObj, "NameParam");
- it->mList.addList(&it->mBoneParams.getList(), "BoneParam");
-
- const auto list = *res_it;
- args.list = &it->mList;
- args.res_list = agl::utl::getResParameterList(list, "BoneParam");
- if (!it->mBoneParams.parse(args))
- return false;
- }
-
- applyResParameterArchive(archive);
- return true;
-}
-
-ASSetting::BoneParams::~BoneParams() {
- mBuffer.freeBuffer();
-}
-
-bool ASSetting::BoneParams::parse(const ASParamParser::ParseArgs& args) {
- const auto num_objects = args.res_list.getResParameterObjNum();
- if (num_objects == 0)
- return true;
-
- if (!mBuffer.tryAllocBuffer(num_objects, args.heap))
- return false;
-
- auto it = mBuffer.begin();
- const auto end = mBuffer.end();
-
- sead::FixedSafeString<32> obj_name{"BoneParam"};
- const auto obj_name_base_len = obj_name.calcLength();
-
- auto res_it = args.res_list.objBegin();
- const auto res_end = args.res_list.objEnd();
-
- for (; it != end && res_it != res_end; ++it, ++res_it) {
- it->mBone.init("", "Bone", "ボーン名", "", &it->mObj);
- it->mWeight.init(0.0, "Weight", "ウェイト値", "Min=0.f,Max=1.f", &it->mObj);
-
- obj_name.trim(obj_name_base_len);
- obj_name.appendWithFormat("%d", res_it.getIndex());
- mList.addObj(&it->mObj, obj_name);
- }
-
- return true;
-}
-
-f32 ASSetting::BoneParams::getBoneWeight(const sead::SafeString& name) const {
- for (const auto& param : mBuffer) {
- if (name == *param.mBone)
- return *param.mWeight;
- }
- return 1.0;
-}
-
-} // namespace ksys::res
diff --git a/src/KingSystem/System/CMakeLists.txt b/src/KingSystem/System/CMakeLists.txt
index 333d110d..81b08666 100644
--- a/src/KingSystem/System/CMakeLists.txt
+++ b/src/KingSystem/System/CMakeLists.txt
@@ -15,8 +15,6 @@ target_sources(uking PRIVATE
CoreInfo.h
CurrentResNameMgr.cpp
CurrentResNameMgr.h
- DebugFinder.cpp
- DebugFinder.h
DebugMessage.h
GameConfig.h
HavokWorkerMgr.cpp
@@ -48,6 +46,8 @@ target_sources(uking PRIVATE
Revision.h
StageInfo.cpp
StageInfo.h
+ StagePreActorCache.cpp
+ StagePreActorCache.h
StarterPackMgr.cpp
StarterPackMgr.h
StringBoard.h
diff --git a/src/KingSystem/System/StagePreActorCache.cpp b/src/KingSystem/System/StagePreActorCache.cpp
new file mode 100644
index 00000000..0b4a6484
--- /dev/null
+++ b/src/KingSystem/System/StagePreActorCache.cpp
@@ -0,0 +1,7 @@
+#include "KingSystem/System/StagePreActorCache.h"
+
+namespace ksys {
+
+SEAD_SINGLETON_DISPOSER_IMPL(StagePreActorCache)
+
+} // namespace ksys
diff --git a/src/KingSystem/Map/mapStagePreActorCache.h b/src/KingSystem/System/StagePreActorCache.h
index 666779e8..2b9927ff 100644
--- a/src/KingSystem/Map/mapStagePreActorCache.h
+++ b/src/KingSystem/System/StagePreActorCache.h
@@ -8,8 +8,10 @@ class ForestRenderer;
}
namespace ksys::map {
-
class LazyTraverseList;
+}
+
+namespace ksys {
// TODO
class StagePreActorCache {
@@ -17,13 +19,13 @@ class StagePreActorCache {
StagePreActorCache();
public:
- LazyTraverseList* getObjects() const { return mObjects; }
+ map::LazyTraverseList* getObjects() const { return mObjects; }
auto* getForestRenderer() { return mForestRenderer; }
private:
char _0[0x20];
- LazyTraverseList* mObjects;
+ map::LazyTraverseList* mObjects;
gfx::ForestRenderer* mForestRenderer;
};
-} // namespace ksys::map
+} // namespace ksys