mirror of
https://github.com/zeldaret/tww.git
synced 2026-07-07 21:30:47 -04:00
d_a_player_whide.inc - Almost all matching except floats, (#717)
Co-authored-by: < >
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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 */
|
||||
}
|
||||
|
||||
|
||||
@@ -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(¤t.pos.x, m370C.x, 0.25f, 10.0f, 4.0f);
|
||||
cLib_addCalc(¤t.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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user