summaryrefslogtreecommitdiff
path: root/src/KingSystem/ActorSystem/actBaseProcUnit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/KingSystem/ActorSystem/actBaseProcUnit.cpp')
-rw-r--r--src/KingSystem/ActorSystem/actBaseProcUnit.cpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/KingSystem/ActorSystem/actBaseProcUnit.cpp b/src/KingSystem/ActorSystem/actBaseProcUnit.cpp
index e69de29b..8f8b3919 100644
--- a/src/KingSystem/ActorSystem/actBaseProcUnit.cpp
+++ b/src/KingSystem/ActorSystem/actBaseProcUnit.cpp
@@ -0,0 +1,57 @@
+#include "KingSystem/ActorSystem/actBaseProcUnit.h"
+#include <prim/seadSafeString.h>
+#include <prim/seadScopedLock.h>
+#include "KingSystem/ActorSystem/actActorLinkConstDataAccess.h"
+#include "KingSystem/ActorSystem/actBaseProc.h"
+#include "KingSystem/Utils/Debug.h"
+namespace ksys::act {
+
+// NON_MATCHING: Equivalent but branches are off.
+bool BaseProcUnit::setProc(BaseProc* proc) {
+ bool ret;
+ static constexpr const char* sStateNames[] = {"Init", "Calc", "Sleep", "Delete"};
+
+ auto lock = sead::makeScopedLock(mCS);
+ if (mProc)
+ mProc = nullptr;
+
+ if (mHandle == &BaseProcHandle::sDummyBaseProcHandle)
+ return false;
+
+ if (mHandle) {
+ if (mFlags != 1) {
+ sead::FixedSafeString<64> message;
+
+ if (proc)
+ message.format("%s, %d, %d, %s, ( %p:%p )", proc->getName().cstr(), mFlags,
+ proc->isInitialized(), sStateNames[u8(proc->getState())], this,
+ mHandle.load());
+ else
+ message.format("なし, %d, ?, ?, ( %p:%p )", mFlags, this, mHandle.load());
+
+ util::PrintDebug(message);
+ }
+ mProc = proc;
+ mFlags = 2;
+ ret = true;
+ } else {
+ sead::FixedSafeString<64> message;
+
+ if (proc)
+ message.format("%s, %d, %d, %s, ( %p:%p )", proc->getName().cstr(), mFlags,
+ proc->isInitialized(), sStateNames[u8(proc->getState())], this,
+ mHandle.load());
+ else
+ message.format("なし, %d, ?, ?, ( %p:%p )", mFlags, this, mHandle.load());
+
+ util::PrintDebug(message);
+ ret = false;
+ }
+ return ret;
+}
+
+bool BaseProcUnit::isParentHandleDefault() const {
+ return mHandle == &BaseProcHandle::sDummyBaseProcHandle;
+}
+
+} // namespace ksys::act \ No newline at end of file