d_a_player_whide.inc - Almost all matching except floats, (#717)

Co-authored-by: ‎ ‎ ‎ <‎ ‎ ‎>
This commit is contained in:
123456789758
2025-03-31 17:56:25 -04:00
committed by GitHub
parent 6bc267c369
commit 26f1b0c8f0
4 changed files with 591 additions and 35 deletions
+3 -3
View File
@@ -977,7 +977,7 @@ public:
BOOL checkIceSlipFall();
void setFrontWallType();
BOOL changeFrontWallTypeProc();
void changeSlideProc();
int changeSlideProc();
void changeWaitProc();
void changeLandProc(f32);
BOOL setDamagePoint(f32);
@@ -1346,13 +1346,13 @@ public:
BOOL procClimbMoveSide_init(int);
BOOL procClimbMoveSide();
void setBlendWHideMoveAnime(f32);
void getWHideModePolygon(cXyz*, cXyz*, cXyz*, int);
int getWHideModePolygon(cXyz*, cXyz*, cXyz*, int);
void getWHideBasePos(cXyz*);
void getWHideNextPos(cXyz*, cXyz*);
BOOL checkWHideBackWall(cXyz*);
BOOL checkWHideFrontFloor(cXyz*);
BOOL checkWHideModeChange(cXyz*);
void changeWHideEndProc(cXyz*);
int changeWHideEndProc(cXyz*);
BOOL procWHideReady_init(cM3dGPla*, cXyz*);
BOOL procWHideReady();
BOOL procWHideWait_init();
+2
View File
@@ -38,6 +38,8 @@ class J2DOrthoGraph;
enum daPy__PlayerStatus0 {
daPyStts0_UNK1_e = 0x00000001,
daPyStts0_UNK10_e = 0x00000010,
daPyStts0_UNK20_e = 0x00000020,
daPyStts0_UNK40_e = 0x00000040,
daPyStts0_UNK80_e = 0x00000080,
daPyStts0_UNK100_e = 0x00000100,
daPyStts0_UNK200_e = 0x00000200,
+1 -1
View File
@@ -1733,7 +1733,7 @@ BOOL daPy_lk_c::changeFrontWallTypeProc() {
}
/* 8010FEC4-8010FFB0 .text changeSlideProc__9daPy_lk_cFv */
void daPy_lk_c::changeSlideProc() {
int daPy_lk_c::changeSlideProc() {
/* Nonmatching */
}
+585 -31
View File
@@ -2,92 +2,646 @@
* d_a_player_whide.inc
*
* Code relating to "wall hiding" (sidling).
*
* This file is not a standalone translation unit and is instead directly
*
* This file is not a standalone translation unit and is instead directly
* included into d_a_player_main.cpp.
*
* The original name of this file is not known, but a best guess was taken
*
* The original name of this file is not known, but a best guess was taken
* based on the original names of the functions it contains.
*/
#include "d/actor/d_a_player_HIO.h"
#include "d/actor/d_a_player_main.h"
/* 8013707C-801371E0 .text setBlendWHideMoveAnime__9daPy_lk_cFf */
void daPy_lk_c::setBlendWHideMoveAnime(f32) {
/* Nonmatching */
void daPy_lk_c::setBlendWHideMoveAnime(f32 param_0) {
float fVar1;
float fVar2;
float fVar3;
float fVar4;
float fVar5;
float fVar6;
float fVar7;
float fVar8;
s16 sVar1;
daPy_ANM dVar5;
daPy_ANM dVar6;
if (!checkNoResetFlg0(daPyFlg0_UNK10000)) {
fVar1 = daPy_HIO_wall_c0::m.field_0x14;
fVar5 = daPy_HIO_wall_c0::m.field_0x40;
dVar6 = ANM_WALL;
sVar1 = daPy_HIO_wall_c0::m.field_0x8;
fVar6 = daPy_HIO_wall_c0::m.field_0x60;
fVar3 = daPy_HIO_wall_c0::m.field_0x58;
if (m34B8 == 2) {
dVar5 = ANM_WALLWR;
} else {
dVar5 = ANM_WALLWL;
}
} else {
fVar1 = daPy_HIO_wall_c0::m.field_0x18;
fVar5 = daPy_HIO_wall_c0::m.field_0x44;
dVar6 = ANM_WALLDW;
sVar1 = daPy_HIO_wall_c0::m.field_0xA;
fVar6 = daPy_HIO_wall_c0::m.field_0x64;
fVar3 = daPy_HIO_wall_c0::m.field_0x5C;
if (m34B8 == 2) {
dVar5 = ANM_WALLWRDW;
} else {
dVar5 = ANM_WALLWLDW;
}
}
fVar5 *= fVar4;
fVar7 = mVelocity / mMaxNormalSpeed;
if (fVar7 < 0.0f) {
fVar7 = 0.0f;
}
if (fVar7 < fVar3) {
fVar4 = 1.0f - fVar7 / fVar3;
m3598 = 1.0f;
} else {
fVar4 = 0.0f;
fVar2 = 1.0f;
m3598 = (fVar2 - ((fVar2 - fVar6) * (fVar7 - fVar3)) / (fVar2 - fVar3));
}
setMoveAnime(fVar4, fVar1, 0.0f, dVar5, dVar6, 5, fVar5);
mFrameCtrlUnder[UNDER_MOVE0_e].setEnd(sVar1);
mFrameCtrlUnder[UNDER_MOVE1_e].setFrame(
mFrameCtrlUnder[UNDER_MOVE1_e].getEnd() - 0.001f);
mFrameCtrlUnder[UNDER_MOVE1_e].setRate(0.0f);
mAnmRatioUnder[UNDER_MOVE1_e].getAnmTransform()->setFrame(
mFrameCtrlUnder[UNDER_MOVE1_e].getFrame());
return;
}
/* 801371E0-80137608 .text getWHideModePolygon__9daPy_lk_cFP4cXyzP4cXyzP4cXyzi */
void daPy_lk_c::getWHideModePolygon(cXyz*, cXyz*, cXyz*, int) {
/* Nonmatching */
/* 801371E0-80137608 .text
* getWHideModePolygon__9daPy_lk_cFP4cXyzP4cXyzP4cXyzi */
int daPy_lk_c::getWHideModePolygon(cXyz *param_0, cXyz *param_1, cXyz *param_2,
int param_3) {
/* Nonmatching - floats, branching, regalloc */
int iVar4;
float dVar11;
float dVar10;
float dVar9;
if (param_0 != NULL) {
mLinkLinChk.Set(param_0, param_1, this);
if (!dComIfG_Bgsp()->LineCross(&mLinkLinChk)) {
return false;
}
}
cM3dGPla *pfVar2 = dComIfG_Bgsp()->GetTriPla(mLinkLinChk);
s16 uVar3 = cM_atan2s(pfVar2->GetNP()->x, pfVar2->GetNP()->z);
if (std::fabsf(pfVar2->GetNP()->y) > 0.05f) {
return false;
} else if (iVar4 = dComIfG_Bgsp()->GetSpecialCode(mLinkLinChk),
iVar4 == 3) {
return false;
} else {
param_2->x = mLinkLinChk.GetCrossP()->x;
param_2->y = mLinkLinChk.GetCrossP()->y;
param_2->z = mLinkLinChk.GetCrossP()->z;
cXyz local_3c;
local_3c.x =
param_2->x + cM_ssin(uVar3) * daPy_HIO_wall_c0::m.field_0x50;
local_3c.y = param_2->y;
local_3c.z =
param_2->z + cM_ssin(uVar3) * daPy_HIO_wall_c0::m.field_0x50;
mGndChk.SetPos(&local_3c);
float dVar8 = dComIfG_Bgsp()->GroundCross(&mGndChk);
float fVar1;
if ((C_BG_MIN_HEIGHT != dVar8) &&
(!(dComIfG_Bgsp()->GetTriPla(mGndChk)->GetNP()->y >= 0.5f))) {
return false;
} else {
if (param_3 == 4) {
fVar1 = 49.9f;
} else {
fVar1 = 99.8f;
}
dVar8 = fVar1;
s16 sVar7 = uVar3;
cXyz local_48;
cM3dGPla *pfVar5;
if (param_3 != 3) {
dVar10 = param_2->z;
dVar9 = pfVar2->GetNP()->x;
dVar11 = dVar10 - (dVar8 * dVar9);
local_3c.set(param_2->x + (dVar9 * 1.25f) + (dVar8 * dVar10),
param_2->y,
(dVar11 + (pfVar2->GetNP()->z * 1.25f)));
local_48.set(local_3c.x - (2.5f * dVar9) - (2.5f * dVar10),
local_3c.y, local_3c.z);
mLinkLinChk.Set(&local_3c, &local_48, this);
if (!dComIfG_Bgsp()->LineCross(&mLinkLinChk)) {
return false;
}
pfVar5 = dComIfG_Bgsp()->GetTriPla(mLinkLinChk);
iVar4 = cM_atan2s(pfVar5->GetNP()->x, pfVar5->GetNP()->z);
if (sVar7 != (s16)iVar4) {
return false;
}
}
if (param_3 != 2) {
dVar10 = param_2->z;
dVar9 = pfVar2->GetNP()->x;
dVar11 = dVar10 + (dVar8 * dVar9);
local_3c.set(param_2->x - (dVar9 * 1.25f) + (dVar8 * dVar10),
param_2->y,
(dVar11 + (pfVar2->GetNP()->z * 1.25f)));
local_48.set(local_3c.x - (2.5f * dVar9) - (2.5f * dVar10),
local_3c.y, local_3c.z);
mLinkLinChk.Set(&local_3c, &local_48, this);
if (!dComIfG_Bgsp()->LineCross(&mLinkLinChk)) {
return false;
}
pfVar5 = dComIfG_Bgsp()->GetTriPla(mLinkLinChk);
iVar4 = cM_atan2s(pfVar5->GetNP()->x, pfVar5->GetNP()->z);
if (sVar7 != (s16)iVar4) {
return false;
}
}
if (param_3 != 4) {
if (param_3 == 2) {
sVar7 = sVar7 - shape_angle.y;
param_2->x +=
daPy_HIO_wall_c0::m.field_0x54 * pfVar2->GetNP()->z;
param_2->z -=
daPy_HIO_wall_c0::m.field_0x54 * pfVar2->GetNP()->x;
} else {
sVar7 = sVar7 - shape_angle.y;
param_2->x -=
daPy_HIO_wall_c0::m.field_0x54 * pfVar2->GetNP()->z;
param_2->z +=
daPy_HIO_wall_c0::m.field_0x54 * pfVar2->GetNP()->x;
}
}
if (sVar7 > 0x2aaa) {
return false;
} else if (abs((int)(s16)((sVar7 + -0x8000) - (current.angle.y))) >
0x1555) {
return false;
}
}
}
}
/* 80137608-80137640 .text getWHideBasePos__9daPy_lk_cFP4cXyz */
void daPy_lk_c::getWHideBasePos(cXyz*) {
/* Nonmatching */
void daPy_lk_c::getWHideBasePos(cXyz *param_0) {
/* Nonmatching - floats */
f32 fVar3;
if (checkNoResetFlg0(daPyFlg0_UNK10000)) {
fVar3 = 89.9f;
} else {
fVar3 = 125.0f;
}
param_0->set(current.pos.x, current.pos.y + fVar3, current.pos.z);
return;
}
/* 80137640-8013769C .text getWHideNextPos__9daPy_lk_cFP4cXyzP4cXyz */
void daPy_lk_c::getWHideNextPos(cXyz*, cXyz*) {
/* Nonmatching */
void daPy_lk_c::getWHideNextPos(cXyz *param_0, cXyz *param_1) {
param_1->set(
param_0->x + cM_ssin(current.angle.y) * daPy_HIO_wall_c0::m.field_0x54,
param_0->y,
param_0->z + cM_scos(current.angle.y) * daPy_HIO_wall_c0::m.field_0x54);
return;
}
/* 8013769C-80137754 .text checkWHideBackWall__9daPy_lk_cFP4cXyz */
BOOL daPy_lk_c::checkWHideBackWall(cXyz*) {
/* Nonmatching */
BOOL daPy_lk_c::checkWHideBackWall(cXyz *param_0) {
if (param_0 == NULL) {
return true;
} else {
cXyz local_18;
local_18.set(param_0->x - 25.0f * cM_ssin(shape_angle.y), param_0->y,
param_0->z - 25.0f * cM_scos(shape_angle.y));
mLinkLinChk.Set(param_0, &local_18, (fopAc_ac_c *)this);
if (dComIfG_Bgsp()->LineCross(&mLinkLinChk)) {
return true;
}
return false;
}
}
/* 80137754-80137828 .text checkWHideFrontFloor__9daPy_lk_cFP4cXyz */
BOOL daPy_lk_c::checkWHideFrontFloor(cXyz*) {
/* Nonmatching */
BOOL daPy_lk_c::checkWHideFrontFloor(cXyz *param_0) {
float dVar5;
float dVar6;
cXyz local_10;
local_10.set(param_0->x + 40.0f * cM_ssin(shape_angle.y), param_0->y,
param_0->z + 40.0f * cM_scos(shape_angle.y));
mGndChk.SetPos(&local_10);
dVar6 = dComIfG_Bgsp()->GroundCross(&mGndChk);
if ((checkNoResetFlg0(daPyFlg0_UNK80000000)) &&
(dVar5 = current.pos.y, dVar5 > dVar6)) {
dVar6 = dVar5;
}
return (std::fabsf(dVar6 - current.pos.y) < 5.0f);
}
/* 80137828-80137914 .text checkWHideModeChange__9daPy_lk_cFP4cXyz */
BOOL daPy_lk_c::checkWHideModeChange(cXyz*) {
/* Nonmatching */
BOOL daPy_lk_c::checkWHideModeChange(cXyz *param_0) {
/* Nonmatching - floats */
if (!checkNoResetFlg0(daPyFlg0_UNK10000)) {
if (!checkWHideFrontFloor(param_0)) {
dComIfGp_setRStatus(0);
} else if (spActionButton()) {
return true;
}
} else {
cXyz local_18;
local_18.set(param_0->x, current.pos.y + 125.0f, param_0->z);
if (((!spActionButton()) && (!mAcch.ChkRoofHit())) &&
(checkWHideBackWall(&local_18))) {
return -1;
}
}
if ((checkModeFlg(ModeFlg_00000001)) &&
(mCurProc != daPyProc_WHIDE_PEEP_e)) {
setTextureAnime(mAnmDataTable[ANM_WALL].mTexAnmIdx, 0);
}
return false;
}
/* 80137914-80137A00 .text changeWHideEndProc__9daPy_lk_cFP4cXyz */
void daPy_lk_c::changeWHideEndProc(cXyz*) {
/* Nonmatching */
int daPy_lk_c::changeWHideEndProc(cXyz *param_0) {
/* Nonmatching - floats */
dComIfGp_setDoStatus(16);
dComIfGp_setRStatus(15);
if (((!doButton() &&
((!checkNoResetFlg0(daPyFlg0_UNK10000) || !mAcch.ChkRoofHit()))) ||
((m_anm_heap_upper[UPPER_MOVE2_e].mIdx != LKANM_BCK_REST &&
swordTrigger()))) ||
!checkWHideBackWall(param_0)) {
mVelocity = 0.7f * mMaxNormalSpeed;
current.angle.y = shape_angle.y;
return checkNextMode(0);
}
if (checkNoResetFlg0(daPyFlg0_UNK10000) && mAcch.ChkRoofHit()) {
onModeFlg(ModeFlg_04000000);
} else {
offModeFlg(ModeFlg_04000000);
}
return false;
}
/* 80137A00-80137BD8 .text procWHideReady_init__9daPy_lk_cFP8cM3dGPlaP4cXyz */
BOOL daPy_lk_c::procWHideReady_init(cM3dGPla*, cXyz*) {
/* Nonmatching */
/* 80137A00-80137BD8 .text
* procWHideReady_init__9daPy_lk_cFP8cM3dGPlaP4cXyz */
BOOL daPy_lk_c::procWHideReady_init(cM3dGPla *param_0, cXyz *param_1) {
s32 uVar1 = mModeFlg >> 4 & 1;
offNoResetFlg0(daPyFlg0_UNK10000);
commonProcInit(daPyProc_WHIDE_READY_e);
mVelocity = 0.0f;
current.angle.y = shape_angle.y;
m370C.x = param_1->x;
m370C.y = param_1->y;
m370C.z = param_1->z;
if (param_0 != NULL) {
m34D4 = cM_atan2s(param_0->mNormal.x, param_0->mNormal.z);
m370C.x += param_0->mNormal.x * daPy_HIO_wall_c0::m.field_0x50;
m370C.z += param_0->mNormal.z * daPy_HIO_wall_c0::m.field_0x50;
} else {
m34D4 = m352C;
m370C.x += cM_ssin(m352C) * daPy_HIO_wall_c0::m.field_0x50;
m370C.z += cM_scos(m352C) * daPy_HIO_wall_c0::m.field_0x50;
}
if (mEquipItem == daPyItem_NONE_e) {
if (checkEquipAnime()) {
resetActAnimeUpper(UPPER_MOVE2_e, -1.0f);
}
setSingleMoveAnime(ANM_WALL, 0.0f, daPy_HIO_wall_c0::m.field_0x24, -1,
daPy_HIO_wall_c0::m.field_0x34);
m3570 = 1;
} else {
setBlendMoveAnime(daPy_HIO_basic_c0::m.field_0xC);
setAnimeUnequip();
m3570 = 0;
}
if ((uVar1) != 0) {
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK1_e);
}
return true;
}
/* 80137BD8-80137CD0 .text procWHideReady__9daPy_lk_cFv */
BOOL daPy_lk_c::procWHideReady() {
/* Nonmatching */
if (changeWHideEndProc(NULL)) {
return true;
} else {
if (m3570 == 0) {
if (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == 0xffff) {
setSingleMoveAnime(ANM_WALL, 0.0f,
daPy_HIO_wall_c0::m.field_0x24, -1,
daPy_HIO_wall_c0::m.field_0x34);
m3570 = 1;
}
return true;
} else {
cLib_addCalc(&current.pos.x, m370C.x, 0.25f, 10.0f, 4.0f);
cLib_addCalc(&current.pos.z, m370C.z, 0.25f, 10.0f, 4.0f);
if (!cLib_addCalcAngleS(&shape_angle.y, m34D4, 2, 0x2000, 0x800)) {
daPy_matAnm_c::m_maba_flg = 0;
daPy_matAnm_c::m_maba_timer = 1;
procWHideWait_init();
}
}
}
return true;
}
/* 80137CD0-80137DF0 .text procWHideWait_init__9daPy_lk_cFv */
BOOL daPy_lk_c::procWHideWait_init() {
/* Nonmatching */
f32 fVar1;
daPy_ANM dVar3;
f32 dVar4;
f32 dVar5;
s16 sVar2;
if (!checkNoResetFlg0(daPyFlg0_UNK10000)) {
dVar3 = ANM_WALL;
sVar2 = daPy_HIO_wall_c0::m.field_0x0;
dVar4 = daPy_HIO_wall_c0::m.field_0x38;
} else {
dVar3 = ANM_WALLDW;
sVar2 = daPy_HIO_wall_c0::m.field_0x2;
dVar4 = daPy_HIO_wall_c0::m.field_0x3C;
}
if (mCurProc == daPyProc_WHIDE_READY_e) {
fVar1 = daPy_HIO_wall_c0::m.field_0x24;
} else {
fVar1 = sVar2 - 0.001f;
}
dVar5 = fVar1;
commonProcInit(daPyProc_WHIDE_WAIT_e);
mVelocity = 0.0f;
setSingleMoveAnime(dVar3, daPy_HIO_wall_c0::m.field_0xC, dVar5, sVar2,
dVar4);
current.angle.y = shape_angle.y;
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK1_e);
return true;
}
/* 80137DF0-80138074 .text procWHideWait__9daPy_lk_cFv */
BOOL daPy_lk_c::procWHideWait() {
/* Nonmatching */
/* Nonmatching - floats, branching */
cXyz cStack_24;
cXyz cStack_3c;
cXyz cStack_48;
int iVar1;
getWHideBasePos(&cStack_3c);
if (changeWHideEndProc(&cStack_3c)) {
return true;
} else if (iVar1 = checkWHideModeChange(&cStack_3c), iVar1 == 1) {
setSingleMoveAnime(ANM_WALLDW, daPy_HIO_wall_c0::m.field_0x10,
daPy_HIO_wall_c0::m.field_0x28,
daPy_HIO_wall_c0::m.field_0x2,
daPy_HIO_wall_c0::m.field_0x3C);
onNoResetFlg0(daPyFlg0_UNK10000);
mAcchCir[2].SetWallH(89.9f);
} else if (iVar1 == -1) {
setSingleMoveAnime(ANM_WALLDW, -daPy_HIO_wall_c0::m.field_0x10,
daPy_HIO_wall_c0::m.field_0x28,
daPy_HIO_wall_c0::m.field_0x2,
daPy_HIO_wall_c0::m.field_0x3C);
mFrameCtrlUnder[UNDER_MOVE0_e].setFrame(daPy_HIO_wall_c0::m.field_0x2 -
0.001f);
mAnmRatioUnder[UNDER_MOVE0_e].getAnmTransform()->setFrame(
mFrameCtrlUnder[UNDER_MOVE0_e].getFrame());
offNoResetFlg0(daPyFlg0_UNK10000);
mAcchCir[2].SetWallH(125.0f);
}
cM3dGPla *triPla;
if (((mStickDistance > 0.05f) && (C_BG_MIN_HEIGHT != mAcch.GetGroundH())) &&
(triPla = dComIfG_Bgsp()->GetTriPla(mAcch.m_gnd),
triPla->GetNP()->y >= 0.5f)) {
iVar1 = getDirectionFromCurrentAngle();
if ((iVar1 == 3 || (iVar1 == 2))) {
if (iVar1 == 3) {
current.angle.y = shape_angle.y + -0x4000;
m34B8 = 3;
} else {
current.angle.y = shape_angle.y + 0x4000;
m34B8 = 2;
}
getWHideNextPos(&cStack_3c, &cStack_48);
iVar1 = checkWHideBackWall(&cStack_48);
if ((iVar1 != 0) && ((!checkNoResetFlg0(daPyFlg0_UNK10000) ||
(checkWHideFrontFloor(&cStack_48))))) {
procWHideMove_init();
} else if (iVar1 == 0) {
cStack_48 += (cStack_48 - cStack_3c) * 0.25f;
mLinkLinChk.Set(&cStack_3c, &cStack_48, this);
if (!dComIfG_Bgsp()->LineCross(&mLinkLinChk)) {
procWHidePeep_init();
}
}
}
} else {
current.angle.y = shape_angle.y;
return true;
}
}
/* 80138074-801380F0 .text procWHideMove_init__9daPy_lk_cFv */
BOOL daPy_lk_c::procWHideMove_init() {
/* Nonmatching */
commonProcInit(daPyProc_WHIDE_MOVE_e);
if (m34B8 == 2) {
current.angle.y = shape_angle.y + 0x4000;
} else {
current.angle.y = shape_angle.y + -0x4000;
}
setBlendWHideMoveAnime(1.0f);
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK1_e);
return true;
}
/* 801380F0-8013852C .text procWHideMove__9daPy_lk_cFv */
BOOL daPy_lk_c::procWHideMove() {
/* Nonmatching */
if (changeSlideProc()) {
return true;
} else {
cXyz acStack_24;
getWHideBasePos(&acStack_24);
s16 uVar1 = current.angle.y;
if (changeWHideEndProc(&acStack_24)) {
if ((!doButton()) && (mStickDistance > 0.05f)) {
uint uVar3 = (uint)uVar1;
current.pos.x += 50.0f * cM_ssin(uVar3);
current.pos.z += 50.0f * cM_scos(uVar3);
}
return true;
} else {
cM3dGPla *triPla = dComIfG_Bgsp()->GetTriPla(mLinkLinChk);
s16 sVar8 = cM_atan2s(triPla->GetNP()->x, triPla->GetNP()->z);
f32 fVar2;
if ((checkWHideModeChange(&acStack_24))) {
fVar2 = 0.0f;
} else {
if ((mStickDistance > 0.05f) &&
(C_BG_MIN_HEIGHT != mAcch.GetGroundH()) &&
(triPla = dComIfG_Bgsp()->GetTriPla(mAcch.m_gnd),
triPla->GetNP()->y >= 0.5f)) {
int iVar6 = getDirectionFromCurrentAngle();
if (iVar6 == 1) {
current.angle.y -= -0x8000;
mVelocity *= 0.5f;
if (m34B8 == 2) {
m34B8 = 3;
} else {
m34B8 = 2;
}
setBlendWHideMoveAnime(2.0f);
}
if ((iVar6 == 0) || (iVar6 == 1)) {
fVar2 = daPy_HIO_move_c0::m.field_0x14;
fVar2 *= mStickDistance;
} else {
fVar2 = 0.0f;
}
} else {
fVar2 = 0.0f;
}
}
cXyz cStack_30;
setNormalSpeedF(fVar2, 0.5f, 2.0f, 0.25f);
getWHideNextPos(&acStack_24, &cStack_30);
if ((checkNoResetFlg0(daPyFlg0_UNK10000)) &&
(!checkWHideFrontFloor(&cStack_30))) {
mVelocity = 0.0f;
procWHideWait_init();
} else {
cXyz cStack_3c;
triPla = (cM3dGPla *)getWHideModePolygon(
&acStack_24, &cStack_30, &cStack_3c, m34B8);
if (triPla != NULL) {
procWHideReady_init(triPla, &cStack_3c);
} else {
if (std::fabsf(mVelocity) <= 0.001f) {
procWHideWait_init();
} else {
if (((C_BG_MIN_HEIGHT == mAcch.GetGroundH()) ||
(!(dComIfG_Bgsp()
->GetTriPla(mAcch.m_gnd)
->GetNP()
->y >= 0.5f))) ||
(!checkWHideBackWall(&cStack_30))) {
mVelocity = 0.0f;
procWHideWait_init();
} else {
cXyz cStack_48;
if ((sVar8 != shape_angle.y) &&
(triPla = (cM3dGPla *)getWHideModePolygon(
NULL, NULL, &cStack_48, m34B8),
triPla != 0)) {
if ((s16)(current.angle.y - shape_angle.y) >
0) {
current.angle.y = sVar8 + 0x4000;
} else {
current.angle.y = sVar8 - 0x4000;
}
shape_angle.y = sVar8;
current.pos.x +=
8.0f * cM_ssin(current.angle.y);
current.pos.z +=
8.0f * cM_scos(current.angle.y);
}
current.pos.x -= 0.8f *
daPy_HIO_wall_c0::m.field_0x50 *
cM_ssin(shape_angle.y);
current.pos.z -= 0.8f *
daPy_HIO_wall_c0::m.field_0x50 *
cM_scos(shape_angle.y);
setBlendWHideMoveAnime(-1.0f);
return true;
}
}
}
}
}
}
}
/* 8013852C-801385EC .text procWHidePeep_init__9daPy_lk_cFv */
BOOL daPy_lk_c::procWHidePeep_init() {
/* Nonmatching */
f32 fVar1;
f32 fVar2;
f32 fVar3;
s16 sVar4;
daPy_ANM dVar2;
commonProcInit(daPyProc_WHIDE_PEEP_e);
if (!checkNoResetFlg0(daPyFlg0_UNK10000)) {
fVar1 = daPy_HIO_wall_c0::m.field_0x1C;
fVar3 = daPy_HIO_wall_c0::m.field_0x48;
fVar2 = daPy_HIO_wall_c0::m.field_0x2C;
sVar4 = daPy_HIO_wall_c0::m.field_0x4;
if (m34B8 == 2) {
dVar2 = ANM_WALLPR;
} else {
dVar2 = ANM_WALLPL;
}
} else {
fVar1 = daPy_HIO_wall_c0::m.field_0x20;
fVar3 = daPy_HIO_wall_c0::m.field_0x4C;
fVar2 = daPy_HIO_wall_c0::m.field_0x30;
sVar4 = daPy_HIO_wall_c0::m.field_0x6;
if (m34B8 == 2) {
dVar2 = ANM_WALLPRDW;
} else {
dVar2 = ANM_WALLPLDW;
}
}
setSingleMoveAnime(dVar2, fVar1, fVar2, sVar4, fVar3);
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK1_e);
return true;
}
/* 801385EC-801387A4 .text procWHidePeep__9daPy_lk_cFv */
BOOL daPy_lk_c::procWHidePeep() {
/* Nonmatching */
cXyz cStack_38;
getWHideBasePos(&cStack_38);
if (changeWHideEndProc(&cStack_38)) {
return true;
} else {
f32 dVar3 = mFrameCtrlUnder[UNDER_MOVE0_e].getRate();
if (std::fabsf(dVar3) < 0.01f) {
if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() <
(mFrameCtrlUnder[UNDER_MOVE0_e].getStart() + 1)) {
return procWHideWait_init();
}
}
if (std::fabsf(dVar3) < 0.01f) {
if (m34B8 == 2) {
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK40_e);
} else {
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK20_e);
}
if (!checkNoResetFlg0(daPyFlg0_UNK10000)) {
dVar3 = daPy_HIO_wall_c0::m.field_0x1C;
} else {
dVar3 = daPy_HIO_wall_c0::m.field_0x20;
}
}
if (checkWHideModeChange(&cStack_38)) {
if (dVar3 > 0.0f) {
mFrameCtrlUnder[UNDER_MOVE0_e].setRate(-dVar3);
}
} else if (mStickDistance > 0.05f) {
int iVar1 = getDirectionFromCurrentAngle();
if (((iVar1 != 0) && (dVar3 > 0.0f)) ||
((iVar1 == 0 && (dVar3 < 0.0f)))) {
mFrameCtrlUnder[UNDER_MOVE0_e].setRate(-dVar3);
}
} else if (dVar3 > 0.0f) {
mFrameCtrlUnder[UNDER_MOVE0_e].setRate(-dVar3);
}
}
return true;
}