diff options
| author | engineer124 <47598039+engineer124@users.noreply.github.com> | 2024-11-30 04:58:42 +1100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-29 09:58:42 -0800 |
| commit | 4c3fa3efd43a1c3a60760e4f5f0820a935ba10b7 (patch) | |
| tree | 292fe5d84dcd9d21259370b864f0e35a0b8c12a0 /src/code | |
| parent | b84e27c732ac9160850fd057c01ae04f71fb4c2d (diff) | |
Document Actor Ocarina Interaction (#1748)
* ocarina interaction
* cleanup
* 0x
* document zora exception
* add comment
Diffstat (limited to 'src/code')
| -rw-r--r-- | src/code/z_actor.c | 37 |
1 files changed, 22 insertions, 15 deletions
diff --git a/src/code/z_actor.c b/src/code/z_actor.c index 3c3096b5e..142bae312 100644 --- a/src/code/z_actor.c +++ b/src/code/z_actor.c @@ -2109,42 +2109,49 @@ PlayerItemAction Player_GetExchangeItemAction(PlayState* play) { return player->exchangeItemAction; } -s32 func_800B8718(Actor* actor, GameState* gameState) { - if (actor->flags & ACTOR_FLAG_20000000) { - actor->flags &= ~ACTOR_FLAG_20000000; +/** + * When a given ocarina interaction offer is accepted, Player will set `ACTOR_FLAG_OCARINA_INTERACTION` for that actor. + * An exception is made for EN_ZOT, see `Player_ActionHandler_13`. + * This function serves to acknowledge that the offer was accepted by Player, and notifies the actor + * that it should proceed with its own internal processes for handling further interactions. + * + * @return true if the ocarina interaction offer was accepted, false otherwise + */ +s32 Actor_OcarinaInteractionAccepted(Actor* actor, GameState* gameState) { + if (actor->flags & ACTOR_FLAG_OCARINA_INTERACTION) { + actor->flags &= ~ACTOR_FLAG_OCARINA_INTERACTION; return true; } return false; } -// Similar to Actor_OfferTalkExchange -s32 func_800B874C(Actor* actor, PlayState* play, f32 xzRange, f32 yRange) { +s32 Actor_OfferOcarinaInteraction(Actor* actor, PlayState* play, f32 xzRange, f32 yRange) { Player* player = GET_PLAYER(play); - if ((player->actor.flags & ACTOR_FLAG_20000000) || Player_InCsMode(play) || - (yRange < fabsf(actor->playerHeightRel)) || ((player->unk_A94 < actor->xzDistToPlayer)) || + if ((player->actor.flags & ACTOR_FLAG_OCARINA_INTERACTION) || Player_InCsMode(play) || + (yRange < fabsf(actor->playerHeightRel)) || ((player->ocarinaInteractionDistance < actor->xzDistToPlayer)) || (xzRange < actor->xzDistToPlayer)) { return false; } - player->unk_A90 = actor; - player->unk_A94 = actor->xzDistToPlayer; + player->ocarinaInteractionActor = actor; + player->ocarinaInteractionDistance = actor->xzDistToPlayer; return true; } -s32 func_800B8804(Actor* actor, PlayState* play, f32 xzRange) { - return func_800B874C(actor, play, xzRange, 20.0f); +s32 Actor_OfferOcarinaInteractionNearby(Actor* actor, PlayState* play, f32 xzRange) { + return Actor_OfferOcarinaInteraction(actor, play, xzRange, 20.0f); } -s32 func_800B882C(Actor* actor, PlayState* play) { +s32 Actor_OfferOcarinaInteractionColChkInfoCylinder(Actor* actor, PlayState* play) { f32 cylRadius = actor->colChkInfo.cylRadius + 50.0f; - return func_800B8804(actor, play, cylRadius); + return Actor_OfferOcarinaInteractionNearby(actor, play, cylRadius); } -s32 func_800B886C(Actor* actor, PlayState* play) { - if (!(GET_PLAYER(play)->actor.flags & ACTOR_FLAG_20000000)) { +s32 Actor_NoOcarinaInteraction(Actor* actor, PlayState* play) { + if (!(GET_PLAYER(play)->actor.flags & ACTOR_FLAG_OCARINA_INTERACTION)) { return true; } |
