summaryrefslogtreecommitdiff
path: root/src/Game/AutoPlacement/AutoPlacementFlowMgr.cpp
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-06 03:19:38 +0200
commit38905c8c075ec4ed8f8fcf858aef46bc5e05f8e2 (patch)
treec1c1378ec76107a6e93bdaabe27cc80ded4d943b /src/Game/AutoPlacement/AutoPlacementFlowMgr.cpp
parent4a6239bbbf5b5ab78c8d7eebb7afeeb79601ff43 (diff)
AutoPlacement is game code: move it to Game/
It is created only from game code, no engine code calls it, and it hardcodes game actor names. (AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
Diffstat (limited to 'src/Game/AutoPlacement/AutoPlacementFlowMgr.cpp')
-rw-r--r--src/Game/AutoPlacement/AutoPlacementFlowMgr.cpp61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/Game/AutoPlacement/AutoPlacementFlowMgr.cpp b/src/Game/AutoPlacement/AutoPlacementFlowMgr.cpp
new file mode 100644
index 00000000..10742efa
--- /dev/null
+++ b/src/Game/AutoPlacement/AutoPlacementFlowMgr.cpp
@@ -0,0 +1,61 @@
+#include "Game/AutoPlacement/AutoPlacementFlowMgr.h"
+#include <container/seadBuffer.h>
+#include <evfl/ResActor.h>
+#include "KingSystem/Resource/resLoadRequest.h"
+
+namespace uking {
+
+const char* sFlowResNamesData[] = {
+ "AutoPlacement_Animal.bfevfl",
+ "AutoPlacement_Bird.bfevfl",
+ "AutoPlacement_Enemy_Golem_Little.bfevfl",
+ "AutoPlacement_Enemy_Keese.bfevfl",
+ "AutoPlacement_Enemy_Lizalfos.bfevfl",
+ "AutoPlacement_Enemy_Octarock.bfevfl",
+ "AutoPlacement_Enemy_Wizzrobe.bfevfl",
+ "AutoPlacement_Enemy_Fish.bfevfl",
+ "AutoPlacement_Enemy_Insect.bfevfl",
+ "AutoPlacement_Enemy_Material.bfevfl",
+};
+sead::Buffer<const char*> sFlowResNames{sFlowResNamesData};
+
+const char* sFlowNearResNamesData[] = {
+ "AutoPlacementNear_Enemy_Assassin_Middle.bfevfl",
+ "AutoPlacementNear_Enemy_Assassin_Shooter_Junior.bfevfl",
+ "AutoPlacementNear_Enemy_Chuchu.bfevfl",
+ "AutoPlacementNear_Enemy_Dragon.bfevfl",
+ "AutoPlacementNear_Enemy_Lizalfos.bfevfl",
+ "AutoPlacementNear_Enemy_Octarock.bfevfl",
+ "AutoPlacementNear_Enemy_Stal.bfevfl",
+};
+sead::Buffer<const char*> sFlowNearResNames{sFlowNearResNamesData};
+
+void AutoPlacementFlowMgr::loadEventFlows() {
+ for (int i = 0; i < mFlowArray.size(); i++) {
+ auto& flow = mFlowArray[i];
+ flow.evfl_name = sFlowResNames[i];
+ flow.idx = 0xFF;
+
+ sead::FixedSafeString<128> path;
+ path.format("EventFlow/%s", flow.evfl_name.cstr());
+ ksys::res::LoadRequest req;
+ req.mRequester = "AutoPlacementFlow";
+
+ flow.handle.requestLoad(path, &req);
+ }
+
+ for (int i = 0; i < mFlowNearArray.size(); i++) {
+ auto& flow = mFlowNearArray[i];
+ flow.evfl_name = sFlowResNames[i];
+ flow.idx = 0xFF;
+
+ sead::FixedSafeString<128> path;
+ path.format("EventFlow/%s", flow.evfl_name.cstr());
+ ksys::res::LoadRequest req;
+ req.mRequester = "AutoPlacementFlow";
+
+ flow.handle.requestLoad(path, &req);
+ }
+}
+
+} // namespace uking