summaryrefslogtreecommitdiff
path: root/src/KingSystem
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/KingSystem
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/KingSystem')
-rw-r--r--src/KingSystem/Map/CMakeLists.txt6
-rw-r--r--src/KingSystem/Map/mapAutoPlacement.cpp335
-rw-r--r--src/KingSystem/Map/mapAutoPlacement.h178
-rw-r--r--src/KingSystem/Map/mapAutoPlacementFlowMgr.cpp61
-rw-r--r--src/KingSystem/Map/mapAutoPlacementFlowMgr.h41
-rw-r--r--src/KingSystem/Map/mapAutoPlacementMgr.cpp7
-rw-r--r--src/KingSystem/Map/mapAutoPlacementMgr.h41
7 files changed, 0 insertions, 669 deletions
diff --git a/src/KingSystem/Map/CMakeLists.txt b/src/KingSystem/Map/CMakeLists.txt
index 87d13eee..b201b701 100644
--- a/src/KingSystem/Map/CMakeLists.txt
+++ b/src/KingSystem/Map/CMakeLists.txt
@@ -1,11 +1,5 @@
target_sources(uking PRIVATE
mapTypes.h
- mapAutoPlacement.cpp
- mapAutoPlacement.h
- mapAutoPlacementFlowMgr.cpp
- mapAutoPlacementFlowMgr.h
- mapAutoPlacementMgr.cpp
- mapAutoPlacementMgr.h
mapDebug.cpp
mapDebug.h
mapLazyTraverseList.cpp
diff --git a/src/KingSystem/Map/mapAutoPlacement.cpp b/src/KingSystem/Map/mapAutoPlacement.cpp
deleted file mode 100644
index b47494c8..00000000
--- a/src/KingSystem/Map/mapAutoPlacement.cpp
+++ /dev/null
@@ -1,335 +0,0 @@
-#include "KingSystem/Map/mapAutoPlacement.h"
-#include "KingSystem/ActorSystem/actActor.h"
-#include "KingSystem/ActorSystem/actActorUtil.h"
-#include "KingSystem/ActorSystem/actInfoData.h"
-#include "KingSystem/ActorSystem/actPhysicsUserTag.h"
-#include "KingSystem/Ecosystem/ecoSystem.h"
-#include "KingSystem/Map/mapAutoPlacementFlowMgr.h"
-#include "KingSystem/Map/mapAutoPlacementMgr.h"
-#include "KingSystem/Physics/RigidBody/physRigidBody.h"
-#include "KingSystem/Physics/System/physRayCastForRequest.h"
-#include "KingSystem/Utils/Byaml/Byaml.h"
-#include "KingSystem/World/worldWeatherMgr.h"
-
-namespace ksys::map {
-
-AutoPlacement::AutoPlacement() = default;
-AutoPlacement::~AutoPlacement() = default;
-
-bool AutoPlacement::sub_710064CBFC(sead::Heap* heap, u8 flag, s32 num_spawn, s32 num_obj) {
- mNearFlag = flag;
-
- if (!mSpawnInfo.tryAllocBuffer(num_spawn, heap))
- return false;
-
- if (num_obj > 0 && !mObjectRefs.tryAllocBuffer(num_obj, heap))
- return false;
- return true;
-}
-
-u32 AutoPlacement::sub_710064CD80(u32 a, u32 b) {
- auto calc = [](u32 x, u32 y, u32 a, u32 b) { return (1 - a + x < 3) & (1 - b + y < 3); };
- return calc(_4, _5, a, b);
-}
-
-void ActorSpawnInfo::calcSpawnLocations() {
- auto* mgr = act::InfoData::instance();
- al::ByamlIter iter;
-
- using namespace act::tags;
-
- spawn_location.makeAllZero();
- if (mgr == nullptr || !mgr->getActorIter(&iter, name.cstr()))
- return;
-
- if (mgr->hasTag(iter, CheckBirdSafetyArea))
- spawn_location.set(SpawnLocation::CheckBirdSafetyArea);
- if (mgr->hasTag(iter, IsSnowBall))
- spawn_location.set(SpawnLocation::IsSnowBall);
-
- if (mgr->hasTag(iter, CreateFromTrunkOrGlowStoneLocator))
- spawn_location.set(SpawnLocation::TrunkOrGlowStoneLocator);
- else if (mgr->hasTag(iter, 0x923A4962))
- spawn_location.set(SpawnLocation::_4);
- else if (mgr->hasTag(iter, CreateFromTrunkLocatorRandom))
- spawn_location.set(SpawnLocation::TrunkLocatorRandom);
- else if (mgr->hasTag(iter, 0x7881F260))
- spawn_location.set(SpawnLocation::_10);
- else if (mgr->hasTag(iter, CreateFromBranchLocatorRandom))
- spawn_location.set(SpawnLocation::BranchLocatorRandom);
- else if (mgr->hasTag(iter, CreateFromOnTreeLocator))
- spawn_location.set(SpawnLocation::OnTreeLocator);
- else if (mgr->hasTag(iter, CreateFromOnTreeLocatorRandom))
- spawn_location.set(SpawnLocation::OnTreeLocatorRandom);
-}
-
-void AutoPlacement::setSpawnInfo(const sead::SafeString& name, s32 count) {
- sub_710064CF60(false);
- ActorSpawnInfo* info = &mSpawnInfo[0];
- auto* flow = AutoPlacementFlowMgr::instance()->getFlow(name, mNearFlag == 0xff);
- if (flow != nullptr) {
- info->name = name;
- info->flow = flow;
- info->_19 = 0;
- s32 value = std::min(count, 255);
- info->_18 = value;
- info->_1c = value * 30;
- info->_1e = 0;
- info->calcSpawnLocations();
- _d = true;
- _8 = 0;
- } else {
- _d = false;
- }
-}
-
-void AutoPlacement::sub_710064DA54() {
- sub_710064CF60(false);
- _8 = 2;
-}
-
-eco::AreaItemType sPlacementItemTypesData[] = {
- eco::AreaItemType::Enemy, eco::AreaItemType::Animal, eco::AreaItemType::Insect,
- eco::AreaItemType::Fish, eco::AreaItemType::Bird, eco::AreaItemType::AutoPlacementMaterial,
-};
-sead::Buffer<eco::AreaItemType> sPlacementItemTypes{sPlacementItemTypesData};
-
-// NON_MATCHING: stack
-bool AutoPlacement::sub_710064E178(const sead::SafeString& name, u32 placement_type,
- const sead::Vector3f& pos) {
- if (mNearFlag == 0xFE)
- return true;
-
- auto* eco = eco::Ecosystem::instance();
- if (eco == nullptr)
- return false;
-
- s32 area = eco->getFieldMapArea(pos.x, pos.z);
- if (area < 0)
- return false;
-
- eco::AreaItemSet item_set;
- eco->getAreaItems(area, sPlacementItemTypes[placement_type], &item_set);
-
- for (int i = 0; i < item_set.count; ++i) {
- const auto& item = item_set.items[i];
- if (item.num > 0.0f && name == item.name)
- return true;
- }
- return false;
-}
-
-// NON_MATCHING: blocked by raycast
-bool PlacementThing::invoke() {
- auto lock = sead::makeScopedLock(mCS);
-
- if (AutoPlacementMgr::instance()->auto9())
- return true;
-
- if (mRaycast == nullptr || mState != State::Initialized)
- return false;
-
- mRaycast->enableLayer(phys::ContactLayer::EntityGround);
- mRaycast->enableLayer(phys::ContactLayer::EntityGroundRough);
- mRaycast->enableLayer(phys::ContactLayer::EntityGroundSmooth);
- mRaycast->enableLayer(phys::ContactLayer::EntityAirWall);
- mRaycast->enableLayer(phys::ContactLayer::EntityGroundObject);
- mRaycast->enableLayer(phys::ContactLayer::EntityTree);
-
- if (_8944) {
- sead::Vector3f v1 = mVec1 + sead::Vector3f{0, 4, 30};
- sead::Vector3f v2 = mVec1 - sead::Vector3f{0, 4, 30};
- mRaycast->setStartAndEnd(v1, v2);
- } else {
- sead::Vector3f v1{mVec1.x, 2000.0f, mVec1.z};
- sead::Vector3f v2{mVec1.x, -100.0f, mVec1.z};
- mRaycast->setStartAndEnd(v1, v2);
- mRaycast->setCallback(&mDelegate);
- }
-
- mState = State::LayersDone;
- return true;
-}
-
-bool AutoPlacement::sub_7100650144(PlacementGroup* grp, bool check_exposure) {
- if (grp->_1d == 0xFF)
- return false;
- if (grp->_20 == -1)
- return false;
-
- auto* object = mObjectRefs[grp->_20].obj;
- if (object == nullptr)
- return false;
-
- if (object->shouldSkipSpawn()) {
- return true;
- }
-
- if (object->getProc() == nullptr && object->getFlags0().isOn(Object::Flag0::_80))
- return true;
-
- if (grp->_1d != 2)
- return false;
-
- if (check_exposure && !world::WeatherMgr::isExposureZero())
- return true;
- return false;
-}
-
-bool AutoPlacement::sub_710064EF24(ActorSpawnInfo* info, const sead::Vector3f& pos) {
- auto* mgr = AutoPlacementMgr::instance();
- u32 placement_type = info->flow->placement_type;
- if (mgr->auto0(pos, placement_type)) {
- if (mNearFlag != 0xFF) {
- return false;
- }
- if (info->name.findIndex("Enemy_Dragon") == -1) {
- return false;
- }
- }
-
- if ((mNearFlag != 0xFF && mgr->auto11(pos)) ||
- (!sub_710064E178(info->name, placement_type, pos))) {
- return false;
- }
-
- if (mNearFlag != 0xFE && mNearFlag != 0xFF) {
- if (AutoPlacementMgr::instance()->auto2(info->name, pos))
- return false;
- }
- return true;
-}
-
-void AutoPlacement::sub_710064F744(u8 a1, u8 a2) {
- if (mNearFlag != 0xFF)
- return;
- if (mGroupIdx < 0)
- return;
-
- auto& grp = mGroups[mGroupIdx];
- if (!grp._80) {
- grp._1a = a1;
- grp._1b = a2;
- }
-}
-
-void AutoPlacement::incrementGroup() {
- if (mGroupIdx < 0)
- return;
- mGroupIdx++;
-}
-
-s32 AutoPlacement::placeGroup(AutoPlacementFlowRes* res) {
- if (mGroupIdx < 0) {
- return -1;
- }
-
- mThing2.mRaycast = mThing1.mRaycast;
- _6 = 0;
- _b = 0xFF;
-
- auto& grp = mGroups[mGroupIdx];
- if (grp.b.isEmpty()) {
- return -1;
- }
-
- _8868 = sead::SafeString::cEmptyString;
- int tmp = 0;
- res->start(this, grp.a, &tmp);
- if (!_9)
- return -1;
- _9 = 0;
-
- return mGroupIdx;
-}
-
-s32 AutoPlacement::sub_7100650908() {
- if (mGroupIdx < 0) {
- return -1;
- }
- return mGroups[mGroupIdx]._1c;
-}
-
-void AutoPlacement::stepAllRaycasts() {
- mThing1.stepRaycast();
- mThing2.stepRaycast();
- mThing3.stepRaycast();
-}
-
-void PlacementThing::stepRaycast() {
- auto lock = sead::makeScopedLock(mCS);
-
- if (AutoPlacementMgr::instance()->auto9()) {
- if (mRaycast != nullptr) {
- mRaycast->release();
- mRaycast = nullptr;
- }
- mState = State::Invalid;
- _8880 = _8944;
- return;
- }
-
- State next;
-
- switch (mState) {
- case State::Uninitialized:
- mRaycast = phys::RayCastForRequest::allocRequest(nullptr, phys::GroundHit::Animal);
- next = mRaycast != nullptr ? State::Initialized : State::Invalid;
- break;
- case State::LayersDone:
- mRaycast->submitRequest(phys::ContactLayerType::Entity);
- next = State::RaycastDone;
- break;
- case State::PlacementDone:
- if (mRaycast != nullptr) {
- mRaycast->release();
- next = State::Invalid;
- mRaycast = nullptr;
- } else {
- next = State::Invalid;
- }
- break;
- default:
- return;
- }
- mState = next;
-}
-
-void AutoPlacement::sub_7100650C28(phys::RigidBody* rb) {
- if (rb == nullptr)
- return;
-
- if (rb->getContactLayer() == phys::ContactLayer::EntityTree)
- mNearFlag.setDirect(1);
-
- auto* tag = sead::DynamicCast<act::PhysicsUserTag>(rb->getUserTag());
- if (tag == nullptr)
- return;
-
- auto* actor = tag->getActor();
- if (actor == nullptr)
- return;
-
- mNearFlag.set(act::hasTag(actor, act::tags::Tree) ||
- act::hasTag(actor, act::tags::AutoPlacementForbidCreate));
-
- _b.set(actor->getName() == "AirWallHorse");
-}
-
-const char* PlacementThing::getCurrentGroundMat() const {
- if (mWaterQuery > 0.0f) {
- return mMask2.getMaterialName();
- } else {
- return mMask1.getMaterialName();
- }
-}
-
-const char* PlacementThing::getCurrentWaterSubMat() const {
- if (mWaterQuery > 0.0f) {
- return mMask2.getSubMaterialName();
- } else {
- return mMask1.getSubMaterialName();
- }
-}
-
-} // namespace ksys::map
diff --git a/src/KingSystem/Map/mapAutoPlacement.h b/src/KingSystem/Map/mapAutoPlacement.h
deleted file mode 100644
index 5624fddb..00000000
--- a/src/KingSystem/Map/mapAutoPlacement.h
+++ /dev/null
@@ -1,178 +0,0 @@
-#pragma once
-
-#include <math/seadVector.h>
-#include <prim/seadDelegate.h>
-#include <prim/seadSafeString.h>
-#include <prim/seadTypedBitFlag.h>
-#include <thread/seadCriticalSection.h>
-#include "KingSystem/Map/mapObject.h"
-#include "KingSystem/Map/mapObjectLink.h"
-#include "KingSystem/Physics/physMaterialMask.h"
-#include "KingSystem/Utils/Types.h"
-
-namespace ksys::phys {
-class RayCastForRequest;
-class RigidBody;
-} // namespace ksys::phys
-
-namespace ksys::map {
-
-class AutoPlacement;
-struct AutoPlacementFlowRes;
-class PlacementThing;
-
-struct PlacementGroup {
- sead::SafeString a;
- u32 _10;
- u32 _14;
- u8 _18;
- u8 _19;
- u8 _1a;
- u8 _1b;
- u8 _1c;
- u8 _1d;
- u8 _1e;
- u8 _1f{};
- s16 _20;
- u16 _22{};
- u8 _24;
- u8 _25{};
- void* _28;
- void* _30;
- void* _38;
- void* _40;
- void* _48;
- void* _50;
- void* _58;
- void* _60;
- void* _68;
- sead::SafeString b;
- u32 _80{};
-};
-KSYS_CHECK_SIZE_NX150(PlacementGroup, 0x88);
-
-class PlacementThing {
-public:
- enum class State : u32 {
- Invalid,
- Uninitialized,
- Initialized,
- LayersDone,
- RaycastDone,
- PlacementDone,
- };
-
- explicit PlacementThing(bool set)
- : mDelegate{this, &PlacementThing::sub_7100650C28}, _8944(set) {}
-
- bool invoke();
- void stepRaycast();
- void sub_7100650C28(phys::RigidBody*);
- const char* getCurrentGroundMat() const;
- const char* getCurrentWaterSubMat() const;
-
-private:
- friend class AutoPlacement;
-
- phys::RayCastForRequest* mRaycast{};
- u8 _8880{};
- u8 mUnderwater{};
- sead::Vector3f mVec1{};
- sead::Vector3f mQueryVec{};
- u32 _889c{};
- f32 _88a0 = 1.0f;
- phys::MaterialMask mMask1;
- phys::MaterialMask mMask2;
- f32 mWaterQuery = -1.0f;
- sead::Delegate1<PlacementThing, phys::RigidBody*> mDelegate;
- sead::CriticalSection mCS{};
- State mState;
- u8 _8944{};
- u8 _8945{};
-};
-
-struct ActorSpawnInfo {
- enum class SpawnLocation : u16 {
- CheckBirdSafetyArea = 1,
-
- // exclusive
- TrunkOrGlowStoneLocator = 2,
- _4 = 4,
- TrunkLocatorRandom = 8,
- _10 = 0x10,
- BranchLocatorRandom = 0x20,
- OnTreeLocator = 0x40,
- OnTreeLocatorRandom = 0x80,
-
- IsSnowBall = 0x100,
- };
-
- void calcSpawnLocations();
-
- sead::SafeString name{};
- AutoPlacementFlowRes* flow;
- u8 _18;
- u8 _19;
- sead::TypedBitFlag<SpawnLocation> spawn_location{};
- u16 _1c;
- u16 _1e;
-};
-
-class AutoPlacement {
-public:
- AutoPlacement();
- ~AutoPlacement();
-
- bool sub_710064CBFC(sead::Heap* heap, u8 flag, s32 num_spawn, s32 num_obj);
- u32 sub_710064CD80(u32, u32);
- void sub_710064CF60(bool force);
-
- bool sub_710064ED60(const sead::SafeString& name, const sead::Vector3f& distance);
-
- void setSpawnInfo(const sead::SafeString& name, s32 count);
- void sub_710064DA54();
-
- bool sub_710064E178(const sead::SafeString& name, u32 placement_type,
- const sead::Vector3f& pos);
- bool sub_710064EF24(ActorSpawnInfo* info, const sead::Vector3f& pos);
- void sub_710064F744(u8 a1, u8 a2);
- void incrementGroup();
- bool sub_7100650144(PlacementGroup* grp, bool check_exposure);
- s32 placeGroup(AutoPlacementFlowRes* res);
- s32 sub_7100650908();
- void stepAllRaycasts();
- void sub_7100650C28(phys::RigidBody* rb);
-
-private:
- struct ObjectRef {
- Object* obj;
- void* _8;
- };
-
- s16 _0 = 0;
- s16 mGroupIdx = -1;
- u8 _4 = 0xFF;
- u8 _5 = 0xFF;
- s16 _6 = 0;
- u8 _8 = 0;
- u8 _9 = 2;
- sead::BitFlag<u8> mNearFlag{};
- sead::BitFlag<u8> _b{};
- u8 _c = 0;
- u8 _d = 0;
- u8 _e = 0;
- u8 _f = 0;
- u8 _10 = 0;
- s32 _14 = 0;
- sead::Buffer<ActorSpawnInfo> mSpawnInfo;
- sead::CriticalSection mCS{};
- sead::SafeArray<PlacementGroup, 0x100> mGroups{};
- sead::SafeString _8868{};
- PlacementThing mThing1{false};
- PlacementThing mThing2{false};
- PlacementThing mThing3{true};
- void* mX;
- sead::Buffer<ObjectRef> mObjectRefs;
-};
-
-} // namespace ksys::map
diff --git a/src/KingSystem/Map/mapAutoPlacementFlowMgr.cpp b/src/KingSystem/Map/mapAutoPlacementFlowMgr.cpp
deleted file mode 100644
index 3bef06c4..00000000
--- a/src/KingSystem/Map/mapAutoPlacementFlowMgr.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-#include "KingSystem/Map/mapAutoPlacementFlowMgr.h"
-#include <container/seadBuffer.h>
-#include <evfl/ResActor.h>
-#include "KingSystem/Resource/resLoadRequest.h"
-
-namespace ksys::map {
-
-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());
- 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());
- res::LoadRequest req;
- req.mRequester = "AutoPlacementFlow";
-
- flow.handle.requestLoad(path, &req);
- }
-}
-
-} // namespace ksys::map
diff --git a/src/KingSystem/Map/mapAutoPlacementFlowMgr.h b/src/KingSystem/Map/mapAutoPlacementFlowMgr.h
deleted file mode 100644
index df3b6648..00000000
--- a/src/KingSystem/Map/mapAutoPlacementFlowMgr.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#pragma once
-
-#include <container/seadSafeArray.h>
-#include <evfl/Flowchart.h>
-#include <heap/seadDisposer.h>
-#include <prim/seadSafeString.h>
-#include "KingSystem/Resource/resHandle.h"
-
-namespace ksys::map {
-
-class AutoPlacement;
-
-struct AutoPlacementFlowRes {
- void start(AutoPlacement* placement, const sead::SafeString& unit_name, int*);
-
- res::Handle handle;
- sead::SafeString evfl_name;
- evfl::FlowchartContext flowchart_ctx;
- AutoPlacement* placement;
- sead::SafeString unit_name;
- u8 idx;
- s8 placement_type;
-};
-
-class AutoPlacementFlowMgr {
- SEAD_SINGLETON_DISPOSER(AutoPlacementFlowMgr)
-public:
- AutoPlacementFlowMgr();
- virtual ~AutoPlacementFlowMgr();
-
- void loadEventFlows();
-
- AutoPlacementFlowRes* getFlow(const sead::SafeString& actor_name, bool near_flow);
-
-private:
- sead::Heap* mHeap;
- sead::SafeArray<AutoPlacementFlowRes, 10> mFlowArray;
- sead::SafeArray<AutoPlacementFlowRes, 7> mFlowNearArray;
-};
-
-} // namespace ksys::map
diff --git a/src/KingSystem/Map/mapAutoPlacementMgr.cpp b/src/KingSystem/Map/mapAutoPlacementMgr.cpp
deleted file mode 100644
index 8a3c4983..00000000
--- a/src/KingSystem/Map/mapAutoPlacementMgr.cpp
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "KingSystem/Map/mapAutoPlacementMgr.h"
-
-namespace ksys::map {
-
-SEAD_SINGLETON_DISPOSER_IMPL(AutoPlacementMgr)
-
-} // namespace ksys::map
diff --git a/src/KingSystem/Map/mapAutoPlacementMgr.h b/src/KingSystem/Map/mapAutoPlacementMgr.h
deleted file mode 100644
index dc918b32..00000000
--- a/src/KingSystem/Map/mapAutoPlacementMgr.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#pragma once
-
-#include <heap/seadDisposer.h>
-#include <math/seadVector.h>
-#include <prim/seadDelegate.h>
-#include <prim/seadSafeString.h>
-
-#include "KingSystem/Utils/Types.h"
-
-namespace ksys::act {
-class Actor;
-} // namespace ksys::act
-
-namespace ksys::map {
-
-class AutoPlacementMgr {
- SEAD_SINGLETON_DISPOSER(AutoPlacementMgr)
-public:
- AutoPlacementMgr();
- virtual ~AutoPlacementMgr();
-
- bool sub_7100659E40(act::Actor* actor, const sead::SafeString& actor_name, int count,
- bool is_box);
- void sub_7100659F94(act::Actor* actor);
-
- // 0x0000007100654e44
- bool threadFn();
- // 0x0000007100656030
- bool auto9();
- // 0x0000007100656d24
- bool auto2(const sead::SafeString& name, const sead::Vector3f& pos);
- // 0x0000007100659188
- bool auto0(const sead::Vector3f& pos, u32 placement_type);
- // 0x0000007100659350
- bool auto11(const sead::Vector3f& pos);
-
- sead::DelegateR<AutoPlacementMgr, bool> mDelegate;
-};
-// KSYS_CHECK_SIZE_NX150(AutoPlacementMgr, 0x189E38);
-
-} // namespace ksys::map