diff options
| author | elijah-thomas774 <elijahthomas774@gmail.com> | 2024-03-17 17:40:00 -0400 |
|---|---|---|
| committer | elijah-thomas774 <elijahthomas774@gmail.com> | 2024-03-17 17:40:00 -0400 |
| commit | 606cc15eeda81fe26207ccab28e84a1ef40ec3fd (patch) | |
| tree | 69576d8441f2f0d1a70e8833ccc7a984784e4ebb /src/f/f_manager.cpp | |
| parent | c2a4909bd2a9a23d73a65f6840e8c886658cef74 (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.cpp | 83 |
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; +} |
