summaryrefslogtreecommitdiff
path: root/src/code
diff options
context:
space:
mode:
authorengineer124 <47598039+engineer124@users.noreply.github.com>2023-11-21 12:36:02 +1100
committerGitHub <noreply@github.com>2023-11-21 12:36:02 +1100
commit0e441520cc586d35de9ede578d85aa8de99bf4a1 (patch)
tree04c8f846915d5ee4b6630ab6c78bda845ce5b81d /src/code
parent28706d798d9e1662b2059bf78e07c5b4f9b577b7 (diff)
Document `Actor_TalkOfferAccepted` (#1502)
* rename * PR Review
Diffstat (limited to 'src/code')
-rw-r--r--src/code/z_actor.c22
-rw-r--r--src/code/z_en_a_keep.c2
2 files changed, 15 insertions, 9 deletions
diff --git a/src/code/z_actor.c b/src/code/z_actor.c
index 993fb72b8..e8b1d5f11 100644
--- a/src/code/z_actor.c
+++ b/src/code/z_actor.c
@@ -1934,9 +1934,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;
}
@@ -1973,8 +1980,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)))) {
@@ -2016,7 +2022,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;
}
@@ -2033,7 +2039,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;
@@ -4260,7 +4266,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/src/code/z_en_a_keep.c b/src/code/z_en_a_keep.c
index 009a82f97..4279f01fa 100644
--- a/src/code/z_en_a_keep.c
+++ b/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));