mirror of
https://github.com/zeldaret/tww.git
synced 2026-08-18 21:18:23 -04:00
d_a_player_ladder.inc - All matching except floats. (#714)
Co-authored-by: < >
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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(¤t.pos, &local_28, this);
|
||||
if (dComIfG_Bgsp()->LineCross(&mLinkLinChk)) {
|
||||
mDoAud_seStart(JA_SE_FT_LADDER_CLIMB_D, ¤t.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(¤t.pos.x, m370C.x, 0.5f, 0.5f, 0.05f);
|
||||
cLib_addCalc(¤t.pos.y, m370C.y, 0.5f, 0.5f, 0.05f);
|
||||
cLib_addCalc(¤t.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, ¤t.pos,
|
||||
¤t.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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user