summaryrefslogtreecommitdiff
path: root/src/code
diff options
context:
space:
mode:
authorengineer124 <47598039+engineer124@users.noreply.github.com>2024-11-30 04:58:42 +1100
committerGitHub <noreply@github.com>2024-11-29 09:58:42 -0800
commit4c3fa3efd43a1c3a60760e4f5f0820a935ba10b7 (patch)
tree292fe5d84dcd9d21259370b864f0e35a0b8c12a0 /src/code
parentb84e27c732ac9160850fd057c01ae04f71fb4c2d (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.c37
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;
}