From 12f51699d4c07940c80f9afcf9b4f520481836aa Mon Sep 17 00:00:00 2001 From: KEKW555 <152369890+KEKW555@users.noreply.github.com> Date: Wed, 3 Jan 2024 21:36:51 +0530 Subject: [PATCH] True match sub_080784E4 --- src/playerUtils.c | 46 ++++++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/src/playerUtils.c b/src/playerUtils.c index ba0208704..29a896779 100644 --- a/src/playerUtils.c +++ b/src/playerUtils.c @@ -1158,9 +1158,29 @@ void ResetPossibleInteraction(void) { gPossibleInteraction.currentObject = (InteractableObject*)&gNoInteraction; } +static inline bool32 InlinePlayerStateCheck() { + u8 frameState; + if ((gPlayerState.field_0x27[0] | gPlayerState.swim_state) != 0) { + return TRUE; + } + if (gPlayerState.framestate == 0) { + frameState = gPlayerState.framestate_last; + } else { + frameState = gPlayerState.framestate; + } + switch (frameState) { + case PL_STATE_SWORD: + case PL_STATE_GUSTJAR: + case PL_STATE_DIE: + case PL_STATE_ITEMGET: + case PL_STATE_DROWN: + return TRUE; + } + return FALSE; +} + // determines which (if any) object the player is currently able to interact with InteractableObject* sub_080784E4(void) { - u8 frameState; PlayerFlags r7; s32 r3; PlayerFlags PVar4; @@ -1177,26 +1197,12 @@ InteractableObject* sub_080784E4(void) { if (gPossibleInteraction.isUpdated != 0) { return gPossibleInteraction.currentObject; } - if ((gPlayerState.field_0x27[0] | gPlayerState.swim_state) != 0) { - goto l; - } - if (gPlayerState.framestate == 0) { - frameState = gPlayerState.framestate_last; - } else { - frameState = gPlayerState.framestate; - } - switch (frameState) { - case PL_STATE_SWORD: - case PL_STATE_GUSTJAR: - case PL_STATE_DIE: - case PL_STATE_ITEMGET: - case PL_STATE_DROWN: - l: - gPossibleInteraction.currentIndex = 0xFF; - gPossibleInteraction.currentObject = (InteractableObject*)&gNoInteraction; - gPossibleInteraction.isUpdated = 1; - return gPossibleInteraction.currentObject; + if (InlinePlayerStateCheck()) { + gPossibleInteraction.currentIndex = 0xFF; + gPossibleInteraction.currentObject = (InteractableObject*)&gNoInteraction; + gPossibleInteraction.isUpdated = 1; + return gPossibleInteraction.currentObject; } if (!(gPlayerState.flags & PL_MINISH)) {