summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorfig02 <fig02srl@gmail.com>2024-10-15 14:10:21 -0400
committerGitHub <noreply@github.com>2024-10-15 14:10:21 -0400
commitdf1815cf8f0d83bf02cd7462830747ed826ecc94 (patch)
treebf22997400af293c8aa1f27c25bde1461bb48d7d /src
parenta53fb026996e322f51eb4a6364ed05f95805e4d5 (diff)
Document `ACTOR_FLAG_THROW_ONLY` (#2274)
* document ACTOR_FLAG_THROW_ONLY * flip function name * add comments
Diffstat (limited to 'src')
-rw-r--r--src/overlays/actors/ovl_En_Ishi/z_en_ishi.c2
-rw-r--r--src/overlays/actors/ovl_En_Kusa/z_en_kusa.c2
-rw-r--r--src/overlays/actors/ovl_En_Niw/z_en_niw.c2
-rw-r--r--src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.c2
-rw-r--r--src/overlays/actors/ovl_player_actor/z_player.c21
5 files changed, 19 insertions, 10 deletions
diff --git a/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c b/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c
index a14b34e92..b2f0aa73f 100644
--- a/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c
+++ b/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c
@@ -11,7 +11,7 @@
#include "quake.h"
#include "terminal.h"
-#define FLAGS ACTOR_FLAG_23
+#define FLAGS ACTOR_FLAG_THROW_ONLY
void EnIshi_Init(Actor* thisx, PlayState* play);
void EnIshi_Destroy(Actor* thisx, PlayState* play2);
diff --git a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c
index eacb01ca3..f2882cad3 100644
--- a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c
+++ b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c
@@ -12,7 +12,7 @@
#include "assets/objects/object_kusa/object_kusa.h"
#include "terminal.h"
-#define FLAGS (ACTOR_FLAG_4 | ACTOR_FLAG_23)
+#define FLAGS (ACTOR_FLAG_4 | ACTOR_FLAG_THROW_ONLY)
void EnKusa_Init(Actor* thisx, PlayState* play);
void EnKusa_Destroy(Actor* thisx, PlayState* play2);
diff --git a/src/overlays/actors/ovl_En_Niw/z_en_niw.c b/src/overlays/actors/ovl_En_Niw/z_en_niw.c
index c80516709..96c00b42e 100644
--- a/src/overlays/actors/ovl_En_Niw/z_en_niw.c
+++ b/src/overlays/actors/ovl_En_Niw/z_en_niw.c
@@ -10,7 +10,7 @@
#include "terminal.h"
#include "versions.h"
-#define FLAGS (ACTOR_FLAG_4 | ACTOR_FLAG_23)
+#define FLAGS (ACTOR_FLAG_4 | ACTOR_FLAG_THROW_ONLY)
void EnNiw_Init(Actor* thisx, PlayState* play);
void EnNiw_Destroy(Actor* thisx, PlayState* play);
diff --git a/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.c b/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.c
index 9747279d7..d88f5c714 100644
--- a/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.c
+++ b/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.c
@@ -9,7 +9,7 @@
#include "assets/objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h"
#include "assets/objects/object_tsubo/object_tsubo.h"
-#define FLAGS (ACTOR_FLAG_4 | ACTOR_FLAG_23)
+#define FLAGS (ACTOR_FLAG_4 | ACTOR_FLAG_THROW_ONLY)
void ObjTsubo_Init(Actor* thisx, PlayState* play);
void ObjTsubo_Destroy(Actor* thisx, PlayState* play2);
diff --git a/src/overlays/actors/ovl_player_actor/z_player.c b/src/overlays/actors/ovl_player_actor/z_player.c
index da5f92ddf..7102321d5 100644
--- a/src/overlays/actors/ovl_player_actor/z_player.c
+++ b/src/overlays/actors/ovl_player_actor/z_player.c
@@ -7423,20 +7423,29 @@ void func_8083EA94(Player* this, PlayState* play) {
Player_AnimPlayOnce(play, this, GET_PLAYER_ANIM(PLAYER_ANIMGROUP_throw, this->modelAnimType));
}
-s32 func_8083EAF0(Player* this, Actor* actor) {
- if ((actor != NULL) && !(actor->flags & ACTOR_FLAG_23) &&
+/**
+ * Checks if an actor can be thrown or dropped.
+ * It is assumed that the `actor` argument is the actor currently being carried.
+ *
+ * @return true if it can be thrown, false if it can be dropped.
+ */
+s32 Player_CanThrowCarriedActor(Player* this, Actor* actor) {
+ // If the actor arg is null, true will be returned.
+ // It doesn't make sense for a non-existent actor to be thrown or dropped, so
+ // the safety check should happen before this function is even called.
+ if ((actor != NULL) && !(actor->flags & ACTOR_FLAG_THROW_ONLY) &&
((this->speedXZ < 1.1f) || (actor->id == ACTOR_EN_BOM_CHU))) {
- return 0;
+ return false;
}
- return 1;
+ return true;
}
s32 Player_ActionHandler_9(Player* this, PlayState* play) {
if ((this->stateFlags1 & PLAYER_STATE1_CARRYING_ACTOR) && (this->heldActor != NULL) &&
CHECK_BTN_ANY(sControlInput->press.button, BTN_A | BTN_B | BTN_CLEFT | BTN_CDOWN | BTN_CRIGHT)) {
if (!func_80835644(play, this, this->heldActor)) {
- if (!func_8083EAF0(this, this->heldActor)) {
+ if (!Player_CanThrowCarriedActor(this, this->heldActor)) {
Player_SetupAction(play, this, Player_Action_808464B0, 1);
Player_AnimPlayOnce(play, this, GET_PLAYER_ANIM(PLAYER_ANIMGROUP_put, this->modelAnimType));
} else {
@@ -10897,7 +10906,7 @@ void Player_UpdateInterface(PlayState* play, Player* this) {
} else if ((this->stateFlags1 & PLAYER_STATE1_CARRYING_ACTOR) && (this->getItemId == GI_NONE) &&
(heldActor != NULL)) {
if ((this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) || (heldActor->id == ACTOR_EN_NIW)) {
- if (func_8083EAF0(this, heldActor) == 0) {
+ if (!Player_CanThrowCarriedActor(this, heldActor)) {
doAction = DO_ACTION_DROP;
} else {
doAction = DO_ACTION_THROW;