mirror of
https://github.com/zeldaret/oot.git
synced 2024-12-29 08:16:11 +00:00
Player Docs - Parallel (#2167)
* name func and flag * rest of the docs * format and comment change * comment
This commit is contained in:
parent
1332356e5c
commit
0168b09628
5 changed files with 27 additions and 26 deletions
|
@ -665,7 +665,7 @@ typedef struct WeaponInfo {
|
|||
#define PLAYER_STATE1_14 (1 << 14)
|
||||
#define PLAYER_STATE1_15 (1 << 15)
|
||||
#define PLAYER_STATE1_16 (1 << 16)
|
||||
#define PLAYER_STATE1_17 (1 << 17)
|
||||
#define PLAYER_STATE1_PARALLEL (1 << 17) // "Parallel" mode, Z-Target without an actor lock-on
|
||||
#define PLAYER_STATE1_18 (1 << 18)
|
||||
#define PLAYER_STATE1_19 (1 << 19)
|
||||
#define PLAYER_STATE1_20 (1 << 20)
|
||||
|
@ -838,7 +838,7 @@ typedef struct Player {
|
|||
/* 0x0837 */ u8 unk_837;
|
||||
/* 0x0838 */ f32 speedXZ; // Controls horizontal speed, used for `actor.speed`. Current or target value depending on context.
|
||||
/* 0x083C */ s16 yaw; // General yaw value, used both for world and shape rotation. Current or target value depending on context.
|
||||
/* 0x083E */ s16 zTargetYaw; // yaw relating to Z targeting/"parallel" mode
|
||||
/* 0x083E */ s16 parallelYaw; // yaw in "parallel" mode, Z-Target without an actor lock-on
|
||||
/* 0x0840 */ u16 underwaterTimer;
|
||||
/* 0x0842 */ s8 meleeWeaponAnimation;
|
||||
/* 0x0843 */ s8 meleeWeaponState;
|
||||
|
|
|
@ -611,7 +611,7 @@ void func_8008EE08(Player* this) {
|
|||
(this->stateFlags1 & (PLAYER_STATE1_21 | PLAYER_STATE1_23 | PLAYER_STATE1_27)) ||
|
||||
(!(this->stateFlags1 & (PLAYER_STATE1_18 | PLAYER_STATE1_19)) &&
|
||||
((this->actor.world.pos.y - this->actor.floorHeight) < 100.0f))) {
|
||||
this->stateFlags1 &= ~(PLAYER_STATE1_15 | PLAYER_STATE1_16 | PLAYER_STATE1_17 | PLAYER_STATE1_18 |
|
||||
this->stateFlags1 &= ~(PLAYER_STATE1_15 | PLAYER_STATE1_16 | PLAYER_STATE1_PARALLEL | PLAYER_STATE1_18 |
|
||||
PLAYER_STATE1_19 | PLAYER_STATE1_30);
|
||||
} else if (!(this->stateFlags1 & (PLAYER_STATE1_18 | PLAYER_STATE1_19 | PLAYER_STATE1_21))) {
|
||||
this->stateFlags1 |= PLAYER_STATE1_19;
|
||||
|
|
|
@ -367,7 +367,7 @@ void BossSst_HeadSetupIntro(BossSst* this, PlayState* play) {
|
|||
player->actor.world.pos.z = sRoomCenter.z;
|
||||
player->speedXZ = 0.0f;
|
||||
player->actor.shape.rot.y = -0x8000;
|
||||
player->zTargetYaw = -0x8000;
|
||||
player->parallelYaw = -0x8000;
|
||||
player->yaw = -0x8000;
|
||||
player->actor.velocity.y = 0.0f;
|
||||
player->fallStartHeight = 0;
|
||||
|
@ -427,7 +427,7 @@ void BossSst_HeadIntro(BossSst* this, PlayState* play) {
|
|||
player->actor.world.pos.z = sRoomCenter.z;
|
||||
player->speedXZ = 0;
|
||||
player->actor.shape.rot.y = -0x8000;
|
||||
player->zTargetYaw = -0x8000;
|
||||
player->parallelYaw = -0x8000;
|
||||
player->yaw = -0x8000;
|
||||
}
|
||||
|
||||
|
|
|
@ -2314,7 +2314,7 @@ void func_80833A20(Player* this, s32 newMeleeWeaponState) {
|
|||
}
|
||||
|
||||
s32 func_80833B2C(Player* this) {
|
||||
if (this->stateFlags1 & (PLAYER_STATE1_16 | PLAYER_STATE1_17 | PLAYER_STATE1_30)) {
|
||||
if (this->stateFlags1 & (PLAYER_STATE1_16 | PLAYER_STATE1_PARALLEL | PLAYER_STATE1_30)) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
|
@ -2983,15 +2983,16 @@ s32 func_80835588(Player* this, PlayState* play) {
|
|||
return true;
|
||||
}
|
||||
|
||||
void func_808355DC(Player* this) {
|
||||
this->stateFlags1 |= PLAYER_STATE1_17;
|
||||
void Player_SetParallel(Player* this) {
|
||||
this->stateFlags1 |= PLAYER_STATE1_PARALLEL;
|
||||
|
||||
if (!(this->skelAnime.moveFlags & ANIM_FLAG_OVERRIDE_MOVEMENT) &&
|
||||
(this->actor.bgCheckFlags & BGCHECKFLAG_PLAYER_WALL_INTERACT) && (sShapeYawToTouchedWall < 0x2000)) {
|
||||
// snap to the wall
|
||||
this->yaw = this->actor.shape.rot.y = this->actor.wallYaw + 0x8000;
|
||||
}
|
||||
|
||||
this->zTargetYaw = this->actor.shape.rot.y;
|
||||
this->parallelYaw = this->actor.shape.rot.y;
|
||||
}
|
||||
|
||||
s32 func_80835644(PlayState* play, Player* this, Actor* arg2) {
|
||||
|
@ -3108,7 +3109,7 @@ s32 func_808359FC(Player* this, PlayState* play) {
|
|||
boomerang->returnTimer = 20;
|
||||
this->stateFlags1 |= PLAYER_STATE1_25;
|
||||
if (!func_8008E9C4(this)) {
|
||||
func_808355DC(this);
|
||||
Player_SetParallel(this);
|
||||
}
|
||||
this->unk_A73 = 4;
|
||||
Player_PlaySfx(this, NA_SE_IT_BOOMERANG_THROW);
|
||||
|
@ -3470,8 +3471,8 @@ s32 Player_SetupWaitForPutAway(PlayState* play, Player* this, AfterPutAwayFunc a
|
|||
* This does not affect the direction Player will move in.
|
||||
*
|
||||
* There are 3 modes shape yaw can be updated with, based on player state:
|
||||
* - Lock on: Rotates Player to face the lock on target.
|
||||
* - Parallel: Rotates Player to face the Parallel angle, set by `func_808355DC` when Z is pressed.
|
||||
* - Lock on: Rotates Player to face the current lock on target.
|
||||
* - Parallel: Rotates Player to face the current Parallel angle, set when Z-Targeting without an actor lock-on
|
||||
* - Normal: Rotates Player to face `this->yaw`, the direction he is currently moving
|
||||
*/
|
||||
void Player_UpdateShapeYaw(Player* this, PlayState* play) {
|
||||
|
@ -3484,9 +3485,9 @@ void Player_UpdateShapeYaw(Player* this, PlayState* play) {
|
|||
((play->actorCtx.attention.reticleSpinCounter != 0) || (this->actor.category != ACTORCAT_PLAYER))) {
|
||||
Math_ScaledStepToS(&this->actor.shape.rot.y, Math_Vec3f_Yaw(&this->actor.world.pos, &focusActor->focus.pos),
|
||||
4000);
|
||||
} else if ((this->stateFlags1 & PLAYER_STATE1_17) &&
|
||||
} else if ((this->stateFlags1 & PLAYER_STATE1_PARALLEL) &&
|
||||
!(this->stateFlags2 & (PLAYER_STATE2_5 | PLAYER_STATE2_6))) {
|
||||
Math_ScaledStepToS(&this->actor.shape.rot.y, this->zTargetYaw, 4000);
|
||||
Math_ScaledStepToS(&this->actor.shape.rot.y, this->parallelYaw, 4000);
|
||||
}
|
||||
} else if (!(this->stateFlags2 & PLAYER_STATE2_6)) {
|
||||
Math_ScaledStepToS(&this->actor.shape.rot.y, this->yaw, 2000);
|
||||
|
@ -3561,7 +3562,7 @@ void func_80836BEC(Player* this, PlayState* play) {
|
|||
} else {
|
||||
this->unk_66C--;
|
||||
}
|
||||
} else if (this->stateFlags1 & PLAYER_STATE1_17) {
|
||||
} else if (this->stateFlags1 & PLAYER_STATE1_PARALLEL) {
|
||||
this->unk_66C = 0;
|
||||
} else if (this->unk_66C != 0) {
|
||||
this->unk_66C--;
|
||||
|
@ -3607,8 +3608,8 @@ void func_80836BEC(Player* this, PlayState* play) {
|
|||
|
||||
this->stateFlags1 &= ~PLAYER_STATE1_30;
|
||||
} else {
|
||||
if (!(this->stateFlags1 & (PLAYER_STATE1_17 | PLAYER_STATE1_30))) {
|
||||
func_808355DC(this);
|
||||
if (!(this->stateFlags1 & (PLAYER_STATE1_PARALLEL | PLAYER_STATE1_30))) {
|
||||
Player_SetParallel(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3627,13 +3628,13 @@ void func_80836BEC(Player* this, PlayState* play) {
|
|||
}
|
||||
|
||||
if (this->focusActor != NULL) {
|
||||
this->stateFlags1 &= ~(PLAYER_STATE1_16 | PLAYER_STATE1_17);
|
||||
this->stateFlags1 &= ~(PLAYER_STATE1_16 | PLAYER_STATE1_PARALLEL);
|
||||
if ((this->stateFlags1 & PLAYER_STATE1_11) ||
|
||||
!CHECK_FLAG_ALL(this->focusActor->flags, ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE)) {
|
||||
this->stateFlags1 |= PLAYER_STATE1_16;
|
||||
}
|
||||
} else {
|
||||
if (this->stateFlags1 & PLAYER_STATE1_17) {
|
||||
if (this->stateFlags1 & PLAYER_STATE1_PARALLEL) {
|
||||
this->stateFlags2 &= ~PLAYER_STATE2_13;
|
||||
} else {
|
||||
func_8008EE08(this);
|
||||
|
@ -3755,7 +3756,7 @@ s32 Player_GetMovementSpeedAndYaw(Player* this, f32* outSpeedTarget, s16* outYaw
|
|||
return false;
|
||||
}
|
||||
} else if (func_80833B2C(this)) {
|
||||
*outYawTarget = this->zTargetYaw;
|
||||
*outYawTarget = this->parallelYaw;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -5377,7 +5378,7 @@ s32 func_8083A6AC(Player* this, PlayState* play) {
|
|||
this->av1.actionVar1 = sp50;
|
||||
} else {
|
||||
this->stateFlags1 |= PLAYER_STATE1_13;
|
||||
this->stateFlags1 &= ~PLAYER_STATE1_17;
|
||||
this->stateFlags1 &= ~PLAYER_STATE1_PARALLEL;
|
||||
}
|
||||
|
||||
Player_PlaySfx(this, NA_SE_PL_SLIPDOWN);
|
||||
|
@ -7411,7 +7412,7 @@ s32 func_8083FC68(Player* this, f32 arg1, s16 arg2) {
|
|||
}
|
||||
|
||||
s32 func_8083FD78(Player* this, f32* arg1, s16* arg2, PlayState* play) {
|
||||
s16 sp2E = *arg2 - this->zTargetYaw;
|
||||
s16 sp2E = *arg2 - this->parallelYaw;
|
||||
u16 sp2C = ABS(sp2E);
|
||||
|
||||
if ((func_8002DD78(this) || func_808334B4(this)) && (this->focusActor == NULL)) {
|
||||
|
@ -9294,8 +9295,8 @@ void Player_Action_80844E68(Player* this, PlayState* play) {
|
|||
|
||||
if (LinkAnimation_Update(play, &this->skelAnime)) {
|
||||
func_80832DBC(this);
|
||||
func_808355DC(this);
|
||||
this->stateFlags1 &= ~PLAYER_STATE1_17;
|
||||
Player_SetParallel(this);
|
||||
this->stateFlags1 &= ~PLAYER_STATE1_PARALLEL;
|
||||
Player_AnimPlayLoop(play, this, D_80854360[Player_HoldsTwoHandedWeapon(this)]);
|
||||
this->av2.actionVar2 = -1;
|
||||
}
|
||||
|
@ -10772,7 +10773,7 @@ void Player_UpdateCamAndSeqModes(PlayState* play, Player* this) {
|
|||
} else {
|
||||
camMode = CAM_MODE_LEDGE_HANG;
|
||||
}
|
||||
} else if (this->stateFlags1 & (PLAYER_STATE1_17 | PLAYER_STATE1_30)) {
|
||||
} else if (this->stateFlags1 & (PLAYER_STATE1_PARALLEL | PLAYER_STATE1_30)) {
|
||||
if (func_8002DD78(this) || func_808334B4(this)) {
|
||||
camMode = CAM_MODE_Z_AIM;
|
||||
} else if (this->stateFlags1 & PLAYER_STATE1_21) {
|
||||
|
|
|
@ -3365,7 +3365,7 @@ func_808350A4 = 0x80833120; // type:func
|
|||
func_808351D4 = 0x80833254; // type:func
|
||||
func_808353D8 = 0x80833460; // type:func
|
||||
func_80835588 = 0x80833610; // type:func
|
||||
func_808355DC = 0x8083366C; // type:func
|
||||
Player_SetParallel = 0x8083366C; // type:func
|
||||
func_80835644 = 0x808336D8; // type:func
|
||||
func_80835688 = 0x80833720; // type:func
|
||||
Player_UpperAction_CarryActor = 0x80833780; // type:func
|
||||
|
|
Loading…
Reference in a new issue