summaryrefslogtreecommitdiff
path: root/src/KingSystem/Sound/Actor/AI
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2026-09-28 03:39:30 +0200
committerLéo Lam <leo@leolam.fr>2026-10-06 03:19:38 +0200
commita168b93bbcf603816bf718962fc4d706b5fc772d (patch)
treead3af063d67313243431beef39f4f58b6e6ce2b3 /src/KingSystem/Sound/Actor/AI
parent7bc225838a580adea925fd56421f520db4c5d393 (diff)
snd: move sound actions and AIs to KingSystem/Sound
They link with KingSystem/Sound (0x7100fe8b54-0x7101060ed4) as sorted Action/AI passes of their own. The three area tag actions keep their game base AreaTagAction, which links in the Game/Actor/Area block. (AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
Diffstat (limited to 'src/KingSystem/Sound/Actor/AI')
-rw-r--r--src/KingSystem/Sound/Actor/AI/CMakeLists.txt8
-rw-r--r--src/KingSystem/Sound/Actor/AI/aiEnvSeEmitPointRootAI.cpp26
-rw-r--r--src/KingSystem/Sound/Actor/AI/aiEnvSeEmitPointRootAI.h25
-rw-r--r--src/KingSystem/Sound/Actor/AI/aiSignaledSpotBgmTrigger.cpp26
-rw-r--r--src/KingSystem/Sound/Actor/AI/aiSignaledSpotBgmTrigger.h25
-rw-r--r--src/KingSystem/Sound/Actor/AI/aiSpotBgmTrigger.cpp26
-rw-r--r--src/KingSystem/Sound/Actor/AI/aiSpotBgmTrigger.h25
7 files changed, 161 insertions, 0 deletions
diff --git a/src/KingSystem/Sound/Actor/AI/CMakeLists.txt b/src/KingSystem/Sound/Actor/AI/CMakeLists.txt
new file mode 100644
index 00000000..726297a4
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/AI/CMakeLists.txt
@@ -0,0 +1,8 @@
+target_sources(uking PRIVATE
+ aiEnvSeEmitPointRootAI.cpp
+ aiEnvSeEmitPointRootAI.h
+ aiSignaledSpotBgmTrigger.cpp
+ aiSignaledSpotBgmTrigger.h
+ aiSpotBgmTrigger.cpp
+ aiSpotBgmTrigger.h
+)
diff --git a/src/KingSystem/Sound/Actor/AI/aiEnvSeEmitPointRootAI.cpp b/src/KingSystem/Sound/Actor/AI/aiEnvSeEmitPointRootAI.cpp
new file mode 100644
index 00000000..f63f9e15
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/AI/aiEnvSeEmitPointRootAI.cpp
@@ -0,0 +1,26 @@
+#include "KingSystem/Sound/Actor/AI/aiEnvSeEmitPointRootAI.h"
+
+namespace ksys::snd {
+
+EnvSeEmitPointRootAI::EnvSeEmitPointRootAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {}
+
+EnvSeEmitPointRootAI::~EnvSeEmitPointRootAI() = default;
+
+bool EnvSeEmitPointRootAI::init_(sead::Heap* heap) {
+ return ksys::act::ai::Ai::init_(heap);
+}
+
+void EnvSeEmitPointRootAI::enter_(ksys::act::ai::InlineParamPack* params) {
+ ksys::act::ai::Ai::enter_(params);
+}
+
+void EnvSeEmitPointRootAI::leave_() {
+ ksys::act::ai::Ai::leave_();
+}
+
+void EnvSeEmitPointRootAI::loadParams_() {
+ getStaticParam(&mInvalidatePlayDistance_s, "InvalidatePlayDistance");
+ getStaticParam(&mPlayDistance_s, "PlayDistance");
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/AI/aiEnvSeEmitPointRootAI.h b/src/KingSystem/Sound/Actor/AI/aiEnvSeEmitPointRootAI.h
new file mode 100644
index 00000000..dfbe0aba
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/AI/aiEnvSeEmitPointRootAI.h
@@ -0,0 +1,25 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAi.h"
+
+namespace ksys::snd {
+
+class EnvSeEmitPointRootAI : public ksys::act::ai::Ai {
+ SEAD_RTTI_OVERRIDE(EnvSeEmitPointRootAI, ksys::act::ai::Ai)
+public:
+ explicit EnvSeEmitPointRootAI(const InitArg& arg);
+ ~EnvSeEmitPointRootAI() override;
+
+ bool init_(sead::Heap* heap) override;
+ void enter_(ksys::act::ai::InlineParamPack* params) override;
+ void leave_() override;
+ void loadParams_() override;
+
+protected:
+ // static_param at offset 0x38
+ const float* mInvalidatePlayDistance_s{};
+ // static_param at offset 0x40
+ const float* mPlayDistance_s{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/AI/aiSignaledSpotBgmTrigger.cpp b/src/KingSystem/Sound/Actor/AI/aiSignaledSpotBgmTrigger.cpp
new file mode 100644
index 00000000..d9540710
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/AI/aiSignaledSpotBgmTrigger.cpp
@@ -0,0 +1,26 @@
+#include "KingSystem/Sound/Actor/AI/aiSignaledSpotBgmTrigger.h"
+
+namespace ksys::snd {
+
+SignaledSpotBgmTrigger::SignaledSpotBgmTrigger(const InitArg& arg) : ksys::act::ai::Ai(arg) {}
+
+SignaledSpotBgmTrigger::~SignaledSpotBgmTrigger() = default;
+
+bool SignaledSpotBgmTrigger::init_(sead::Heap* heap) {
+ return ksys::act::ai::Ai::init_(heap);
+}
+
+void SignaledSpotBgmTrigger::enter_(ksys::act::ai::InlineParamPack* params) {
+ ksys::act::ai::Ai::enter_(params);
+}
+
+void SignaledSpotBgmTrigger::leave_() {
+ ksys::act::ai::Ai::leave_();
+}
+
+void SignaledSpotBgmTrigger::loadParams_() {
+ getMapUnitParam(&mIsStopWithoutReductionY_m, "IsStopWithoutReductionY");
+ getMapUnitParam(&mSound_m, "Sound");
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/AI/aiSignaledSpotBgmTrigger.h b/src/KingSystem/Sound/Actor/AI/aiSignaledSpotBgmTrigger.h
new file mode 100644
index 00000000..aafdb05b
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/AI/aiSignaledSpotBgmTrigger.h
@@ -0,0 +1,25 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAi.h"
+
+namespace ksys::snd {
+
+class SignaledSpotBgmTrigger : public ksys::act::ai::Ai {
+ SEAD_RTTI_OVERRIDE(SignaledSpotBgmTrigger, ksys::act::ai::Ai)
+public:
+ explicit SignaledSpotBgmTrigger(const InitArg& arg);
+ ~SignaledSpotBgmTrigger() override;
+
+ bool init_(sead::Heap* heap) override;
+ void enter_(ksys::act::ai::InlineParamPack* params) override;
+ void leave_() override;
+ void loadParams_() override;
+
+protected:
+ // map_unit_param at offset 0x38
+ const bool* mIsStopWithoutReductionY_m{};
+ // map_unit_param at offset 0x40
+ sead::SafeString mSound_m{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/AI/aiSpotBgmTrigger.cpp b/src/KingSystem/Sound/Actor/AI/aiSpotBgmTrigger.cpp
new file mode 100644
index 00000000..78e730c8
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/AI/aiSpotBgmTrigger.cpp
@@ -0,0 +1,26 @@
+#include "KingSystem/Sound/Actor/AI/aiSpotBgmTrigger.h"
+
+namespace ksys::snd {
+
+SpotBgmTrigger::SpotBgmTrigger(const InitArg& arg) : ksys::act::ai::Ai(arg) {}
+
+SpotBgmTrigger::~SpotBgmTrigger() = default;
+
+bool SpotBgmTrigger::init_(sead::Heap* heap) {
+ return ksys::act::ai::Ai::init_(heap);
+}
+
+void SpotBgmTrigger::enter_(ksys::act::ai::InlineParamPack* params) {
+ ksys::act::ai::Ai::enter_(params);
+}
+
+void SpotBgmTrigger::leave_() {
+ ksys::act::ai::Ai::leave_();
+}
+
+void SpotBgmTrigger::loadParams_() {
+ getMapUnitParam(&mIsStopWithoutReductionY_m, "IsStopWithoutReductionY");
+ getMapUnitParam(&mSound_m, "Sound");
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/AI/aiSpotBgmTrigger.h b/src/KingSystem/Sound/Actor/AI/aiSpotBgmTrigger.h
new file mode 100644
index 00000000..4727c6c7
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/AI/aiSpotBgmTrigger.h
@@ -0,0 +1,25 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAi.h"
+
+namespace ksys::snd {
+
+class SpotBgmTrigger : public ksys::act::ai::Ai {
+ SEAD_RTTI_OVERRIDE(SpotBgmTrigger, ksys::act::ai::Ai)
+public:
+ explicit SpotBgmTrigger(const InitArg& arg);
+ ~SpotBgmTrigger() override;
+
+ bool init_(sead::Heap* heap) override;
+ void enter_(ksys::act::ai::InlineParamPack* params) override;
+ void leave_() override;
+ void loadParams_() override;
+
+protected:
+ // map_unit_param at offset 0x38
+ const bool* mIsStopWithoutReductionY_m{};
+ // map_unit_param at offset 0x40
+ sead::SafeString mSound_m{};
+};
+
+} // namespace ksys::snd