summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKEKW555 <152369890+KEKW555@users.noreply.github.com>2024-01-03 21:36:51 +0530
committerGitHub <noreply@github.com>2024-01-03 21:36:51 +0530
commit12f51699d4c07940c80f9afcf9b4f520481836aa (patch)
tree54b48eba9a1fa7c2efb4e00e294a6b18363eb2ea
parent6fb8b41a8e003d0a4997740f4178aeb0c3f24ead (diff)
True match sub_080784E4
-rw-r--r--src/playerUtils.c46
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)) {