From 4d233e2fe1e6f14fbc54e1d9186e6d9f56f8cbf2 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Mon, 16 Oct 2023 04:05:47 -0400 Subject: [PATCH] d_a_item_static 100% --- configure.py | 2 +- include/d/actor/d_a_item.h | 14 ++++----- src/d/d_a_item_static.cpp | 58 ++++++++++++++++++++++++++++---------- 3 files changed, 51 insertions(+), 23 deletions(-) diff --git a/configure.py b/configure.py index 3a918e8a4..53a9765ff 100644 --- a/configure.py +++ b/configure.py @@ -352,7 +352,7 @@ config.libs = [ Object(NonMatching, "d/d_a_branch_static.cpp"), Object(NonMatching, "d/d_a_mgameboard_static.cpp"), Object(Matching, "d/d_a_itembase_static.cpp"), - Object(NonMatching, "d/d_a_item_static.cpp"), + Object(Matching, "d/d_a_item_static.cpp"), Object(Matching, "d/d_a_shop_item_static.cpp"), Object(NonMatching, "d/d_a_race_item_static.cpp"), Object(NonMatching, "d/d_a_leaflift_static.cpp"), diff --git a/include/d/actor/d_a_item.h b/include/d/actor/d_a_item.h index 0cd692f8a..60eddfcc2 100644 --- a/include/d/actor/d_a_item.h +++ b/include/d/actor/d_a_item.h @@ -62,13 +62,13 @@ public: BOOL initAction(); BOOL _daItem_isdelete(); - s32 checkControl(); - s32 startControl(); - s32 endControl(); - s32 checkLock(); - s32 setLock(); - s32 releaseLock(); - s32 checkActionNow(); + BOOL checkControl(); + BOOL startControl(); + BOOL endControl(); + BOOL checkLock(); + BOOL setLock(); + BOOL releaseLock(); + BOOL checkActionNow(); static dCcD_SrcCyl m_cyl_src; static s32 m_timer_max; diff --git a/src/d/d_a_item_static.cpp b/src/d/d_a_item_static.cpp index 725e280ba..3f254f950 100644 --- a/src/d/d_a_item_static.cpp +++ b/src/d/d_a_item_static.cpp @@ -3,44 +3,72 @@ // Translation Unit: d_a_item_static.cpp // -// #include "d/actor/d_a_item_static.h" #include "d/actor/d_a_item.h" #include "dolphin/types.h" /* 80068820-800688A0 .text checkControl__8daItem_cFv */ -s32 daItem_c::checkControl() { - /* Nonmatching */ +BOOL daItem_c::checkControl() { + if (mCurState == STATE_BRING_NEZUMI) { + return FALSE; + } + if (checkActionNow()) { + return FALSE; + } + if (mCurState == 4) { + return FALSE; + } + if (mCurState == STATE_INIT_NORMAL || mCurState == STATE_MAIN_NORMAL) { + return FALSE; + } + return TRUE; } /* 800688A0-800688E8 .text startControl__8daItem_cFv */ -s32 daItem_c::startControl() { - /* Nonmatching */ +BOOL daItem_c::startControl() { + if (!checkControl()) { + return FALSE; + } + mCurState = STATE_BRING_NEZUMI; + return TRUE; } /* 800688E8-800688F8 .text endControl__8daItem_cFv */ -s32 daItem_c::endControl() { +BOOL daItem_c::endControl() { mCurState = 0; - return 1; + return TRUE; } /* 800688F8-80068950 .text checkLock__8daItem_cFv */ -s32 daItem_c::checkLock() { - /* Nonmatching */ +BOOL daItem_c::checkLock() { + if (checkActionNow()) { + return FALSE; + } + if (mCurState == 4) { + return FALSE; + } + return mCurState == 0 ? TRUE : FALSE; } /* 80068950-80068998 .text setLock__8daItem_cFv */ -s32 daItem_c::setLock() { - /* Nonmatching */ +BOOL daItem_c::setLock() { + if (!checkLock()) { + return FALSE; + } + mCurState = STATE_WAIT_MAIN; + return TRUE; } /* 80068998-800689A8 .text releaseLock__8daItem_cFv */ -s32 daItem_c::releaseLock() { +BOOL daItem_c::releaseLock() { mCurState = 0; - return 1; + return TRUE; } /* 800689A8-800689F0 .text checkActionNow__8daItem_cFv */ -s32 daItem_c::checkActionNow() { - /* Nonmatching */ +BOOL daItem_c::checkActionNow() { + if (fabsf(speedF) < 0.1f && fabsf(next.pos.y - current.pos.y) < 1.0f) { + return FALSE; + } + return TRUE; }