summaryrefslogtreecommitdiff
path: root/src/f/f_manager.cpp
diff options
context:
space:
mode:
authorelijah-thomas774 <elijahthomas774@gmail.com>2024-03-17 17:40:00 -0400
committerelijah-thomas774 <elijahthomas774@gmail.com>2024-03-17 17:40:00 -0400
commit606cc15eeda81fe26207ccab28e84a1ef40ec3fd (patch)
tree69576d8441f2f0d1a70e8833ccc7a984784e4ebb /src/f/f_manager.cpp
parentc2a4909bd2a9a23d73a65f6840e8c886658cef74 (diff)
some fManager, fBase, mHeap, f - lists and tree stuff
Diffstat (limited to 'src/f/f_manager.cpp')
-rw-r--r--src/f/f_manager.cpp83
1 files changed, 83 insertions, 0 deletions
diff --git a/src/f/f_manager.cpp b/src/f/f_manager.cpp
new file mode 100644
index 00000000..69bf8043
--- /dev/null
+++ b/src/f/f_manager.cpp
@@ -0,0 +1,83 @@
+#include <f/f_base.h>
+#include <f/f_manager.h>
+
+fTrMgPTMF_c fManager_c::m_connectManage(&fBase_c::connectProc);
+fLiMgPTMF_c fManager_c::m_createManage(&fBase_c::createPack);
+fLiMgPTMF_c fManager_c::m_executeManage(&fBase_c::executePack);
+fLiMgPTMF_c fManager_c::m_drawManage(&fBase_c::drawPack);
+fLiMgPTMF_c fManager_c::m_deleteManage(&fBase_c::deletePack);
+
+fLiMgBa_c fManager_c::m_searchManage[8];
+
+u32 fManager_c::m_StopProcInf;
+fManager_c::LOOP_PROC_e fManager_c::m_nowLoopProc = CONNECT;
+
+/* 802e28c0 */
+int fManager_c::getSearchTableNum() {
+ return reinterpret_cast<fBase_c *>(search_node.p_owner)->unique_ID & 7;
+}
+
+/* 802e28d0 */
+fBase_c *fManager_c::searchBaseByID(fBaseID_e id) {
+ const fLiNdBa_c *res = m_searchManage[id & 7].searchNodeByID(id);
+ if (res != nullptr) {
+ return res->p_owner;
+ }
+ return nullptr;
+}
+
+/* 802e2920 */
+fBase_c *fManager_c::searchBaseByProfName(ProfileName profID, const fBase_c *parent) {
+ const fTrNdBa_c *connect_node = parent != nullptr ? &parent->manager.connect_node : nullptr;
+
+ const fTrNdBa_c *node = m_connectManage.searchNodeByProfName(profID, connect_node);
+
+ if (node != nullptr) {
+ return node->p_owner;
+ }
+
+ return nullptr;
+}
+
+/* 802e2980 */
+fBase_c *fManager_c::searchBaseByGroupType(unsigned char groupType, const fBase_c *parent) {
+ const fTrNdBa_c *connect_node = parent != nullptr ? &parent->manager.connect_node : nullptr;
+
+ const fTrNdBa_c *node = m_connectManage.searchNodeByGroupType(groupType, connect_node);
+
+ if (node != nullptr) {
+ return node->p_owner;
+ }
+
+ return nullptr;
+}
+
+/* 802e29e0 */
+void fManager_c::mainLoop() {
+ if ((m_StopProcInf & PROC_FLAG_DELETE) == 0) {
+ m_nowLoopProc = DELETE;
+ m_deleteManage.walkPack();
+ }
+
+ if ((m_StopProcInf & PROC_FLAG_CREATE) == 0) {
+ m_nowLoopProc = CREATE;
+ m_createManage.walkPack();
+ }
+
+ if ((m_StopProcInf & PROC_FLAG_EXECUTE) == 0) {
+ m_nowLoopProc = EXECUTE;
+ m_executeManage.walkPack();
+ }
+
+ if ((m_StopProcInf & PROC_FLAG_DRAW) == 0) {
+ m_nowLoopProc = DRAW;
+ m_drawManage.walkPack();
+ }
+
+ if ((m_StopProcInf & PROC_FLAG_CONNECT) == 0) {
+ m_nowLoopProc = CONNECT;
+ m_connectManage.walkPack();
+ }
+
+ m_nowLoopProc = NOTHING;
+}