diff options
| author | KEKW555 <152369890+KEKW555@users.noreply.github.com> | 2024-01-03 21:36:51 +0530 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-03 21:36:51 +0530 |
| commit | 12f51699d4c07940c80f9afcf9b4f520481836aa (patch) | |
| tree | 54b48eba9a1fa7c2efb4e00e294a6b18363eb2ea | |
| parent | 6fb8b41a8e003d0a4997740f4178aeb0c3f24ead (diff) | |
True match sub_080784E4
| -rw-r--r-- | src/playerUtils.c | 46 |
1 files changed, 26 insertions, 20 deletions
diff --git a/src/playerUtils.c b/src/playerUtils.c index ba020870..29a89677 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)) { |
