diff options
| author | engineer124 <47598039+engineer124@users.noreply.github.com> | 2023-11-21 12:36:02 +1100 |
|---|---|---|
| committer | Eblo <7004497+Eblo@users.noreply.github.com> | 2025-09-11 17:11:59 -0400 |
| commit | a60bb26ef753a7bfc0b1cd0d8b7feedabce0f3a0 (patch) | |
| tree | 316f9a4083939e8210c36e880b8d9473f8b1ccdb /mm/src/code | |
| parent | 56e9a900099864a19a90df35b22fa78107a34316 (diff) | |
Document `Actor_TalkOfferAccepted` (#1502)
* rename
* PR Review
Diffstat (limited to 'mm/src/code')
| -rw-r--r-- | mm/src/code/z_actor.c | 22 | ||||
| -rw-r--r-- | mm/src/code/z_en_a_keep.c | 2 |
2 files changed, 15 insertions, 9 deletions
diff --git a/mm/src/code/z_actor.c b/mm/src/code/z_actor.c index e98848ce7..093121397 100644 --- a/mm/src/code/z_actor.c +++ b/mm/src/code/z_actor.c @@ -2065,9 +2065,16 @@ s16 D_801AED48[] = { HALFDAYBIT_DAY4_NIGHT, }; -s32 Actor_ProcessTalkRequest(Actor* actor, GameState* gameState) { - if (actor->flags & ACTOR_FLAG_TALK_REQUESTED) { - actor->flags &= ~ACTOR_FLAG_TALK_REQUESTED; +/** + * When a given talk offer is accepted, Player will set `ACTOR_FLAG_TALK` for that actor. + * 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 dialogue. + * + * @return true if the talk offer was accepted, false otherwise + */ +s32 Actor_TalkOfferAccepted(Actor* actor, GameState* gameState) { + if (actor->flags & ACTOR_FLAG_TALK) { + actor->flags &= ~ACTOR_FLAG_TALK; return true; } @@ -2104,8 +2111,7 @@ s32 Actor_OfferTalkExchange(Actor* actor, PlayState* play, f32 xzRange, f32 yRan PlayerItemAction exchangeItemAction) { Player* player = GET_PLAYER(play); - if ((player->actor.flags & ACTOR_FLAG_TALK_REQUESTED) || - ((exchangeItemAction > PLAYER_IA_NONE) && Player_InCsMode(play)) || + if ((player->actor.flags & ACTOR_FLAG_TALK) || ((exchangeItemAction > PLAYER_IA_NONE) && Player_InCsMode(play)) || (!actor->isLockedOn && ((fabsf(actor->playerHeightRel) > fabsf(yRange)) || (actor->xzDistToPlayer > player->talkActorDistance) || (xzRange < actor->xzDistToPlayer)))) { @@ -2147,7 +2153,7 @@ s32 Actor_OfferTalkNearColChkInfoCylinder(Actor* actor, PlayState* play) { s32 Actor_TextboxIsClosing(Actor* actor, PlayState* play) { if (Message_GetState(&play->msgCtx) == TEXT_STATE_CLOSING) { - actor->flags &= ~ACTOR_FLAG_TALK_REQUESTED; + actor->flags &= ~ACTOR_FLAG_TALK; return true; } @@ -2164,7 +2170,7 @@ s32 Actor_ChangeFocus(Actor* actor1, PlayState* play, Actor* actor2) { talkActor = player->talkActor; - if ((player->actor.flags & ACTOR_FLAG_TALK_REQUESTED) && (talkActor != NULL)) { + if ((player->actor.flags & ACTOR_FLAG_TALK) && (talkActor != NULL)) { player->talkActor = actor2; player->lockOnActor = actor2; return true; @@ -4550,7 +4556,7 @@ void Actor_GetClosestPosOnPath(Vec3s* points, s32 numPoints, Vec3f* srcPos, Vec3 */ s32 Npc_UpdateTalking(PlayState* play, Actor* actor, s16* talkState, f32 interactRange, NpcGetTextIdFunc getTextId, NpcUpdateTalkStateFunc updateTalkState) { - if (Actor_ProcessTalkRequest(actor, &play->state)) { + if (Actor_TalkOfferAccepted(actor, &play->state)) { *talkState = NPC_TALK_STATE_TALKING; return true; } diff --git a/mm/src/code/z_en_a_keep.c b/mm/src/code/z_en_a_keep.c index 009a82f97..4279f01fa 100644 --- a/mm/src/code/z_en_a_keep.c +++ b/mm/src/code/z_en_a_keep.c @@ -71,7 +71,7 @@ void EnAObj_Destroy(Actor* thisx, PlayState* play) { void EnAObj_Idle(EnAObj* this, PlayState* play) { s32 yawDiff; - if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { + if (Actor_TalkOfferAccepted(&this->actor, &play->state)) { this->actionFunc = EnAObj_Talk; } else { yawDiff = ABS_ALT((s16)(this->actor.yawTowardsPlayer - this->actor.shape.rot.y)); |
