d_a_player_ladder.inc - All matching except floats. (#714)

Co-authored-by: ‎ ‎ ‎ <‎ ‎ ‎>
This commit is contained in:
123456789758
2025-04-01 14:30:06 -04:00
committed by GitHub
parent cceb1ca57d
commit cc76f98a2c
2 changed files with 355 additions and 25 deletions
+3 -3
View File
@@ -1294,10 +1294,10 @@ public:
BOOL dProcHandUp();
BOOL dProcIceSlip_init();
BOOL dProcIceSlip();
void getLadderMoveAnmSpeed();
f32 getLadderMoveAnmSpeed();
void setLadderFootSe();
void changeLadderMoveProc(int);
void setMoveBGLadderCorrect();
int changeLadderMoveProc(int);
int setMoveBGLadderCorrect();
void procLadderUpStart_init_sub();
BOOL procLadderUpStart_init();
BOOL procLadderUpStart();
+352 -22
View File
@@ -11,83 +11,413 @@
*/
#include "d/actor/d_a_player_main.h"
#include "d/actor/d_a_player_HIO.h"
/* 80132F34-80132F58 .text getLadderMoveAnmSpeed__9daPy_lk_cFv */
void daPy_lk_c::getLadderMoveAnmSpeed() {
/* Nonmatching */
f32 daPy_lk_c::getLadderMoveAnmSpeed() {
return (daPy_HIO_ladder_c0::m.field_0x28 +
(mStickDistance * (daPy_HIO_ladder_c0::m.field_0x24 -
daPy_HIO_ladder_c0::m.field_0x28)));
}
/* 80132F58-80133058 .text setLadderFootSe__9daPy_lk_cFv */
void daPy_lk_c::setLadderFootSe() {
/* Nonmatching */
/* Nonmatching - floats */
cXyz local_28(
current.pos.x + cM_ssin(shape_angle.y) * 50.0f,
current.pos.y,
current.pos.z + cM_scos(shape_angle.y) * 50.0f
);
mLinkLinChk.Set(&current.pos, &local_28, this);
if (dComIfG_Bgsp()->LineCross(&mLinkLinChk)) {
mDoAud_seStart(JA_SE_FT_LADDER_CLIMB_D, &current.pos,
dComIfG_Bgsp()->GetMtrlSndId((mLinkLinChk)), mReverb);
} else {
seStartOnlyReverb(JA_SE_FT_LADDER_CLIMB_D);
}
return;
}
/* 80133058-80133240 .text changeLadderMoveProc__9daPy_lk_cFi */
void daPy_lk_c::changeLadderMoveProc(int) {
/* Nonmatching */
int daPy_lk_c::changeLadderMoveProc(int param_0) {
/* Nonmatching - floats */
cXyz local_2c;
cXyz local_38;
BOOL iVar5;
cLib_addCalc(&current.pos.x, m370C.x, 0.5f, 0.5f, 0.05f);
cLib_addCalc(&current.pos.y, m370C.y, 0.5f, 0.5f, 0.05f);
cLib_addCalc(&current.pos.z, m370C.z, 0.5f, 0.5f, 0.05f);
if (mStickDistance > 0.05f) {
int iVar2 = abs((s16)(m34E8 - shape_angle.y));
if ((iVar2 > 0x3c72 && iVar2 < 0x438e)) {
return false;
}
local_2c.x = current.pos.x;
local_2c.z = current.pos.z;
if (iVar2 < 0x4000) {
local_2c.y = 50.0f + (125.0f + current.pos.y);
iVar5 = false;
} else {
local_2c.y = current.pos.y - 50.0f;
iVar5 = true;
}
local_38.x = local_2c.x + cM_ssin(shape_angle.y) * 50.0f;
local_38.z = local_2c.z + cM_scos(shape_angle.y) * 50.0f;
local_38.y = local_2c.y;
mLinkLinChk.Set(&local_2c, &local_38, this);
if ((!dComIfG_Bgsp()->LineCross(&mLinkLinChk)) ||
(dComIfG_Bgsp()->GetWallCode(mLinkLinChk) != 4)) {
if (iVar2 < 0x4000) {
procLadderUpEnd_init(param_0);
} else {
procLadderDownEnd_init(param_0);
}
} else {
procLadderMove_init(param_0, iVar5, &m370C);
}
}
return false;
}
/* 80133240-801333A8 .text setMoveBGLadderCorrect__9daPy_lk_cFv */
void daPy_lk_c::setMoveBGLadderCorrect() {
/* Nonmatching */
int daPy_lk_c::setMoveBGLadderCorrect() {
/* Nonmatching - floats */
if (dComIfG_Bgsp()->ChkPolySafe(mPolyInfo)) {
if (dComIfG_Bgsp()->ChkMoveBG(mPolyInfo)) {
dComIfG_Bgsp()->MoveBgTransPos(mPolyInfo, true, &current.pos,
&current.angle, &shape_angle);
dComIfG_Bgsp()->MoveBgTransPos(mPolyInfo, true, &m370C, NULL, NULL);
}
}
cXyz local_18(m370C.x + cM_ssin(current.angle.y) * 50.0f, m370C.y,
m370C.z + cM_scos(current.angle.y) * 50.0f);
mLinkLinChk.Set(&m370C, (cXyz *)&local_18, this);
if ((!dComIfG_Bgsp()->LineCross(&mLinkLinChk)) ||
(dComIfG_Bgsp()->GetWallCode(mLinkLinChk) != 4)) {
return procFall_init(1, daPy_HIO_wallCatch_c0::m.field_0x54);
} else {
mPolyInfo = mLinkLinChk;
return false;
}
}
/* 801333A8-80133414 .text procLadderUpStart_init_sub__9daPy_lk_cFv */
void daPy_lk_c::procLadderUpStart_init_sub() {
/* Nonmatching */
setSingleMoveAnime(ANM_LADDERUPST, daPy_HIO_ladder_c0::m.field_0x4, 0.0f, -1,
daPy_HIO_ladder_c0::m.field_0x8);
m3570 = 1;
m34C2 = 4;
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK2000000_e);
return;
}
/* 80133414-8013356C .text procLadderUpStart_init__9daPy_lk_cFv */
BOOL daPy_lk_c::procLadderUpStart_init() {
/* Nonmatching */
/* Nonmatching - floats */
commonProcInit(daPyProc_LADDER_UP_START_e);
gravity = 0.0f;
speed.y = 0.0f;
mVelocity = 0.0f;
speedF = 0.0f;
if (mEquipItem == daPyItem_NONE_e) {
if (checkEquipAnime()) {
resetActAnimeUpper(UPPER_MOVE2_e, -1.0f);
}
procLadderUpStart_init_sub();
} else {
setBlendMoveAnime(daPy_HIO_basic_c0::m.field_0xC);
setAnimeUnequip();
m3570 = 0;
m3598 = 0.0f;
}
f32 fVar1 = cM_ssin(m352C);
f32 fVar2 = cM_scos(m352C);
current.pos.x = m3724.x + 25.0f * fVar1;
current.pos.y = m3724.y;
current.pos.z = m3724.z + 25.0f * fVar2;
shape_angle.y = m352C + 0x8000;
current.angle.y = shape_angle.y;
m370C.x = (m3724.x + fVar1 * 20.5f) - fVar2;
m370C.y = m3724.y + 37.5f;
m370C.z = fVar1 + (m3724.z + fVar2 * 20.5f);
m34D4 = 0;
return true;
}
/* 8013356C-80133670 .text procLadderUpStart__9daPy_lk_cFv */
BOOL daPy_lk_c::procLadderUpStart() {
/* Nonmatching */
/* Nonmatching - floats */
if (setMoveBGLadderCorrect()) {
return true;
} else {
if (m3570 == 0) {
if (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == 0xffff) {
procLadderUpStart_init_sub();
}
} else {
J3DFrameCtrl &frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e];
m34C2 = 5;
if (frameCtrl.getRate() < 0.0099999998f) {
dComIfGp_setDoStatus(6);
if (m34D4 == 0) {
setLadderFootSe();
m34D4 = 1;
}
if (doTrigger()) {
m34C2 = 0;
procFall_init(1, daPy_HIO_wallCatch_c0::m.field_0x54);
} else {
changeLadderMoveProc(1);
}
} else {
if (frameCtrl.checkPass(9.0f)) {
setLadderFootSe();
}
}
}
}
return true;
}
/* 80133670-80133710 .text procLadderUpEnd_init__9daPy_lk_cFi */
BOOL daPy_lk_c::procLadderUpEnd_init(int) {
/* Nonmatching */
BOOL daPy_lk_c::procLadderUpEnd_init(int param_0) {
daPy_ANM dVar2;
commonProcInit(daPyProc_LADDER_UP_END_e);
if (param_0 != 0) {
dVar2 = ANM_LADDERUPEDL;
} else {
dVar2 = ANM_LADDERUPEDR;
}
setSingleMoveAnime(dVar2, daPy_HIO_ladder_c0::m.field_0xC, 0.0f, -1,
daPy_HIO_ladder_c0::m.field_0x10);
m34C2 = 7;
gravity = 0.0f;
speed.y = 0.0f;
mVelocity = 0.0f;
speedF = 0.0f;
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK2000000_e);
return true;
}
/* 80133710-801337B4 .text procLadderUpEnd__9daPy_lk_cFv */
BOOL daPy_lk_c::procLadderUpEnd() {
/* Nonmatching */
/* Nonmatching - floats */
J3DFrameCtrl &frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e];
if (setMoveBGLadderCorrect()) {
return true;
} else {
if (frameCtrl.getRate() < 0.0099999998f) {
checkNextMode(0);
} else {
if (frameCtrl.checkPass(9.0f) || frameCtrl.checkPass(19.0f)) {
setLadderFootSe();
}
m34C2 = 5;
}
}
return true;
}
/* 801337B4-8013384C .text procLadderDownStart_init_sub__9daPy_lk_cFv */
void daPy_lk_c::procLadderDownStart_init_sub() {
/* Nonmatching */
setSingleMoveAnime(ANM_LADDERDWST, daPy_HIO_ladder_c0::m.field_0x14, 0.0f, -1,
daPy_HIO_ladder_c0::m.field_0x18);
m3570 = 1;
m34C2 = 4;
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK2000000_e);
setOldRootQuaternion(0, -0x8000, 0);
shape_angle.y += 0x8000;
current.angle.y = shape_angle.y;
return;
}
/* 8013384C-8013399C .text procLadderDownStart_init__9daPy_lk_cFv */
BOOL daPy_lk_c::procLadderDownStart_init() {
/* Nonmatching */
/* Nonmatching - floats */
commonProcInit(daPyProc_LADDER_DOWN_START_e);
gravity = 0.0f;
speed.y = 0.0f;
mVelocity = 0.0f;
speedF = 0.0f;
shape_angle.y = m352C + 0x8000;
current.angle.y = m352C;
if (mEquipItem == daPyItem_NONE_e) {
if (checkEquipAnime()) {
resetActAnimeUpper(UPPER_MOVE2_e, -1.0f);
}
procLadderDownStart_init_sub();
} else {
setBlendMoveAnime(daPy_HIO_basic_c0::m.field_0xC);
setAnimeUnequip();
m3570 = 0;
m3598 = 0.0f;
}
f32 fVar1 = cM_ssin(m352C);
f32 fVar2 = cM_scos(m352C);
current.pos.x = m3724.x + 25.0f * fVar1;
current.pos.y = m3724.y;
current.pos.z = m3724.z + 25.0f * fVar2;
m370C.x = fVar2 + (m3724.x - fVar1 * 30.5f);
m370C.y = m3724.y - 112.5f;
m370C.z = (m3724.z - fVar2 * 30.5f) - fVar1;
return true;
}
/* 8013399C-80133AB8 .text procLadderDownStart__9daPy_lk_cFv */
BOOL daPy_lk_c::procLadderDownStart() {
/* Nonmatching */
/* Nonmatching - floats */
if (setMoveBGLadderCorrect()) {
return true;
} else {
if (m3570 == 0) {
if (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == 0xffff) {
procLadderDownStart_init_sub();
}
} else {
J3DFrameCtrl &frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e];
m34C2 = 5;
if (frameCtrl.getRate() < 0.0099999998f) {
dComIfGp_setDoStatus(6);
if (doTrigger()) {
m34C2 = 0;
procFall_init(1, daPy_HIO_wallCatch_c0::m.field_0x54);
} else {
changeLadderMoveProc(1);
}
} else {
if ((frameCtrl.checkPass(26.0f) || frameCtrl.checkPass(36.0f)) ||
frameCtrl.checkPass(43.0f)) {
setLadderFootSe();
}
}
}
}
return true;
}
/* 80133AB8-80133B4C .text procLadderDownEnd_init__9daPy_lk_cFi */
BOOL daPy_lk_c::procLadderDownEnd_init(int) {
/* Nonmatching */
BOOL daPy_lk_c::procLadderDownEnd_init(int param_0) {
daPy_ANM dVar1;
commonProcInit(daPyProc_LADDER_DOWN_END_e);
if (param_0 != 0) {
dVar1 = ANM_LADDERDWEDL;
} else {
dVar1 = ANM_LADDERDWEDR;
}
setSingleMoveAnime(dVar1, daPy_HIO_ladder_c0::m.field_0x1C, 0.0f, -1,
daPy_HIO_ladder_c0::m.field_0x20);
m34C2 = 7;
gravity = 0.0f;
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK2000000_e);
return true;
}
/* 80133B4C-80133BB4 .text procLadderDownEnd__9daPy_lk_cFv */
BOOL daPy_lk_c::procLadderDownEnd() {
/* Nonmatching */
if (setMoveBGLadderCorrect()) {
return true;
} else {
if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.0099999998f) {
checkNextMode(0);
} else {
m34C2 = 5;
}
}
return true;
}
/* 80133BB4-80133E28 .text procLadderMove_init__9daPy_lk_cFiiP4cXyz */
BOOL daPy_lk_c::procLadderMove_init(int, int, cXyz*) {
/* Nonmatching */
BOOL daPy_lk_c::procLadderMove_init(int param_0, int param_1, cXyz* param_2) {
/* Nonmatching - floats */
daPy_ANM dVar2;
int uVar3 = checkModeFlg(2) ? true : false;
float dVar4 = getLadderMoveAnmSpeed();
commonProcInit(daPyProc_LADDER_MOVE_e);
if (uVar3 == 0) {
if (param_1 == 0) {
m370C.y = param_2->y + 37.5f;
} else {
dVar4 *= -1.0f;
m370C.y = param_2->y - 37.5f;
}
} else {
m370C.y = param_2->y;
}
m370C.x = param_2->x;
m370C.z = param_2->z;
if (param_0 != 0) {
if (uVar3 != 0) {
m3570 = 1;
} else {
m3570 = 0;
m370C.x = m370C.x - 2.0f * cM_scos(shape_angle.y);
m370C.z = m370C.z - -2.0f * cM_ssin(shape_angle.y);
}
if (dVar4 >= 0.0f) {
dVar2 = ANM_LADDERLTOR;
} else {
dVar2 = ANM_LADDERRTOL;
}
} else {
m3570 = 1;
if (dVar4 >= 0.0f) {
dVar2 = ANM_LADDERRTOL;
} else {
dVar2 = ANM_LADDERLTOR;
}
m370C.x = m370C.x + 2.0f * cM_scos(shape_angle.y);
m370C.z = m370C.z + -2.0f * cM_ssin(shape_angle.y);
}
setSingleMoveAnime(dVar2, dVar4, 0.0f, -1, daPy_HIO_ladder_c0::m.field_0x2C);
m34B8 = param_1;
if (param_1 == 0) {
setTextureAnime(10, 0);
} else {
setTextureAnime(0xb, 0);
}
m34C2 = 7;
gravity = 0.0f;
speed.y = 0.0f;
mVelocity = 0.0f;
speedF = 0.0f;
m34D0 = 1;
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK2000000_e);
return true;
}
/* 80133E28-80133F1C .text procLadderMove__9daPy_lk_cFv */
BOOL daPy_lk_c::procLadderMove() {
/* Nonmatching */
if (setMoveBGLadderCorrect()) {
return true;
} else {
m34C2 = 5;
dComIfGp_setDoStatus(6);
if (doTrigger()) {
m34C2 = 0;
procFall_init(1, daPy_HIO_wallCatch_c0::m.field_0x54);
} else {
if (std::fabsf(mFrameCtrlUnder[UNDER_MOVE0_e].getRate()) <
0.0099999998f) {
if ((int)m34D0 > 0) {
m34D0--;
setLadderFootSe();
} else {
changeLadderMoveProc(m3570);
}
} else {
f32 dVar2 = getLadderMoveAnmSpeed();
if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.0f) {
dVar2 *= -1.0f;
}
mFrameCtrlUnder[UNDER_MOVE0_e].setRate(dVar2);
}
}
}
return true;
}