mirror of
https://github.com/zeldaret/tww.git
synced 2026-08-13 12:09:19 -04:00
d_a_player_climb.inc - All matching except floats. (#716)
Co-authored-by: < > Co-authored-by: LagoLunatic <LagoLunatic@users.noreply.github.com>
This commit is contained in:
@@ -1329,11 +1329,11 @@ public:
|
||||
BOOL procHangClimb();
|
||||
BOOL procHangWallCatch_init();
|
||||
BOOL procHangWallCatch();
|
||||
void getClimbMoveAnmSpeed();
|
||||
f32 getClimbMoveAnmSpeed();
|
||||
void setClimbShapeOffset();
|
||||
void getClimbDirectionFromAngle();
|
||||
int getClimbDirectionFromAngle();
|
||||
void changeClimbMoveProc(int);
|
||||
void setMoveBGCorrectClimb();
|
||||
int setMoveBGCorrectClimb();
|
||||
BOOL checkBgCorrectClimbMove(cXyz*, cXyz*);
|
||||
BOOL checkBgClimbMove();
|
||||
void procClimbUpStart_init_sub();
|
||||
|
||||
@@ -11,83 +11,491 @@
|
||||
*/
|
||||
|
||||
#include "d/actor/d_a_player_main.h"
|
||||
#include "d/actor/d_a_player_HIO.h"
|
||||
|
||||
/* 80135B50-80135B74 .text getClimbMoveAnmSpeed__9daPy_lk_cFv */
|
||||
void daPy_lk_c::getClimbMoveAnmSpeed() {
|
||||
/* Nonmatching */
|
||||
f32 daPy_lk_c::getClimbMoveAnmSpeed() {
|
||||
return (daPy_HIO_ladder_c0::m.field_0x34 +
|
||||
(mStickDistance * (daPy_HIO_ladder_c0::m.field_0x30 -
|
||||
daPy_HIO_ladder_c0::m.field_0x34)));
|
||||
}
|
||||
|
||||
/* 80135B74-80135DA0 .text setClimbShapeOffset__9daPy_lk_cFv */
|
||||
void daPy_lk_c::setClimbShapeOffset() {
|
||||
/* Nonmatching */
|
||||
/* Nonmatching - floats */
|
||||
cXyz local_40;
|
||||
cXyz local_4c;
|
||||
cXyz local_58;
|
||||
cXyz local_64;
|
||||
|
||||
s16 uVar3 = m34EC;
|
||||
s16 uVar4 = shape_angle.y;
|
||||
uVar3 += uVar4;
|
||||
f32 fVar4 = cM_ssin(uVar3);
|
||||
f32 fVar3 = cM_scos(uVar3);
|
||||
f32 fVar2 = cM_ssin((s32)uVar4 & 0xffffU);
|
||||
local_58.x = current.pos.x + 20.5f * fVar2;
|
||||
local_58.y = current.pos.y - 62.5f;
|
||||
f32 fVar1 = cM_scos((int)(uint)uVar4 & 0xffffU);
|
||||
local_58.z = current.pos.z + 20.5f * fVar1;
|
||||
local_40.set(local_58.x - fVar4 * 50.0f, local_58.y,
|
||||
local_58.z - fVar3 * 50.0f);
|
||||
local_4c.set(local_58.x + fVar4 * 50.0f, local_58.y,
|
||||
local_58.z + fVar3 * 50.0f);
|
||||
f32 dVar10 = fVar3 * 20.0f;
|
||||
f32 dVar9 = fVar4 * -20.0f;
|
||||
local_40.x += dVar10;
|
||||
local_40.z += dVar9;
|
||||
local_4c.x += dVar10;
|
||||
local_4c.z += dVar9;
|
||||
mLinkLinChk.Set(&local_40, &local_4c, this);
|
||||
if (dComIfG_Bgsp()->LineCross(&mLinkLinChk)) {
|
||||
local_64 = mLinkLinChk.GetCross();
|
||||
} else {
|
||||
m34EC = 0;
|
||||
return;
|
||||
}
|
||||
local_40.x -= dVar10 * 2.0f;
|
||||
local_40.z -= dVar9 * 2.0f;
|
||||
local_4c.x -= dVar10 * 2.0f;
|
||||
local_4c.z -= dVar9 * 2.0f;
|
||||
mLinkLinChk.Set(&local_40, &local_4c, this);
|
||||
if (!dComIfG_Bgsp()->LineCross(&mLinkLinChk)) {
|
||||
m34EC = 0;
|
||||
} else {
|
||||
local_64 -= mLinkLinChk.GetCross();
|
||||
m34EC = (cM_atan2s(local_64.x, local_64.z) - 0x4000 - shape_angle.y);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/* 80135DA0-80135E14 .text getClimbDirectionFromAngle__9daPy_lk_cFv */
|
||||
void daPy_lk_c::getClimbDirectionFromAngle() {
|
||||
/* Nonmatching */
|
||||
int daPy_lk_c::getClimbDirectionFromAngle() {
|
||||
s16 angle = m34E8 - shape_angle.y;
|
||||
if (abs(angle) > 0x7000) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (angle >= 0x1000) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
if (angle <= -0x1000) {
|
||||
return 3;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 80135E14-80135E98 .text changeClimbMoveProc__9daPy_lk_cFi */
|
||||
void daPy_lk_c::changeClimbMoveProc(int) {
|
||||
/* Nonmatching */
|
||||
void daPy_lk_c::changeClimbMoveProc(int param_0) {
|
||||
s16 sVar1;
|
||||
|
||||
sVar1 = m34EC;
|
||||
if (mStickDistance > 0.05f) {
|
||||
m34B8 = getClimbDirectionFromAngle();
|
||||
if ((m34B8 == 0) || (m34B8 == 1)) {
|
||||
procClimbMoveUpDown_init(param_0);
|
||||
} else {
|
||||
procClimbMoveSide_init(param_0);
|
||||
}
|
||||
}
|
||||
m34EC = sVar1;
|
||||
return;
|
||||
}
|
||||
|
||||
/* 80135E98-80136154 .text setMoveBGCorrectClimb__9daPy_lk_cFv */
|
||||
void daPy_lk_c::setMoveBGCorrectClimb() {
|
||||
/* Nonmatching */
|
||||
int daPy_lk_c::setMoveBGCorrectClimb() {
|
||||
/* Nonmatching - floats */
|
||||
if ((dComIfG_Bgsp()->ChkPolySafe(mPolyInfo)) &&
|
||||
(dComIfG_Bgsp()->ChkMoveBG(mPolyInfo))) {
|
||||
dComIfG_Bgsp()->MoveBgTransPos(mPolyInfo, true, ¤t.pos,
|
||||
¤t.angle, &shape_angle);
|
||||
}
|
||||
if (checkNoResetFlg1(daPyFlg1_VINE_CATCH)) {
|
||||
return procFall_init(1, daPy_HIO_wallCatch_c0::m.field_0x54);
|
||||
} else {
|
||||
if ((mCurProc == daPyProc_CLIMB_DOWN_START_e) &&
|
||||
(mFrameCtrlUnder[UNDER_MOVE0_e].getRate() > 0.0099999998f)) {
|
||||
return 0;
|
||||
}
|
||||
cXyz local_1c;
|
||||
cXyz local_28;
|
||||
local_1c.set(current.pos.x, current.pos.y + 30.0f, current.pos.z);
|
||||
local_28.set(current.pos.x + cM_ssin(shape_angle.y) * 80.0f, local_1c.y,
|
||||
current.pos.z + cM_scos(shape_angle.y) * 80.0f);
|
||||
mLinkLinChk.Set(&local_1c, &local_28, this);
|
||||
if ((((!dComIfG_Bgsp()->LineCross(&mLinkLinChk)) ||
|
||||
(dComIfG_Bgsp()->GetWallCode(mLinkLinChk) != 1)) ||
|
||||
(std::fabsf(dComIfG_Bgsp()->GetTriPla(mLinkLinChk)->GetNP()->y) >
|
||||
0.05f)) ||
|
||||
(((mCurProc == daPyProc_CLIMB_MOVE_UP_DOWN_e ||
|
||||
(mCurProc == daPyProc_CLIMB_MOVE_SIDE_e)) &&
|
||||
(current.pos.y - 15.0f < mAcch.GetGroundH())))) {
|
||||
return procFall_init(1, daPy_HIO_wallCatch_c0::m.field_0x54);
|
||||
} else {
|
||||
cM3dGPla *triPla = dComIfG_Bgsp()->GetTriPla(mLinkLinChk);
|
||||
s16 uVar6 = cM_atan2s(triPla->GetNP()->x, triPla->GetNP()->z);
|
||||
if (cLib_distanceAngleS(uVar6, shape_angle.y) <= 0x549f) {
|
||||
return procFall_init(1, daPy_HIO_wallCatch_c0::m.field_0x54);
|
||||
} else {
|
||||
current.pos.x = mLinkLinChk.GetCrossP()->x + 20.5f * cM_ssin(uVar6);
|
||||
current.pos.z = mLinkLinChk.GetCrossP()->z + 20.5f * cM_scos(uVar6);
|
||||
s16 sVar1 = shape_angle.y;
|
||||
shape_angle.y = uVar6 + 0x8000;
|
||||
current.angle.y += (s16)(shape_angle.y - sVar1);
|
||||
m34EC += (s16)(sVar1 - shape_angle.y);
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 80136154-80136200 .text checkBgCorrectClimbMove__9daPy_lk_cFP4cXyzP4cXyz */
|
||||
BOOL daPy_lk_c::checkBgCorrectClimbMove(cXyz*, cXyz*) {
|
||||
/* Nonmatching */
|
||||
BOOL daPy_lk_c::checkBgCorrectClimbMove(cXyz* i_startPos, cXyz* i_endPos) {
|
||||
mLinkLinChk.Set(i_startPos, i_endPos, this);
|
||||
if (dComIfG_Bgsp()->LineCross(&mLinkLinChk)) {
|
||||
cM3dGPla *tri_plane = dComIfG_Bgsp()->GetTriPla(mLinkLinChk);
|
||||
if (cLib_distanceAngleS(
|
||||
cM_atan2s(tri_plane->GetNP()->x, tri_plane->GetNP()->z),
|
||||
shape_angle.y) < 0x549F) {
|
||||
current.pos += mLinkLinChk.GetCross() - *i_endPos;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/* 80136200-80136588 .text checkBgClimbMove__9daPy_lk_cFv */
|
||||
BOOL daPy_lk_c::checkBgClimbMove() {
|
||||
/* Nonmatching */
|
||||
/* Nonmatching - floats */
|
||||
cXyz local_5c;
|
||||
cXyz local_68;
|
||||
|
||||
f32 dVar7 = cM_ssin(shape_angle.y);
|
||||
f32 dVar6 = cM_scos(shape_angle.y);
|
||||
f32 dVar5 = (30.0f * dVar6);
|
||||
f32 dVar4 = (-30.0f * dVar7);
|
||||
local_5c.set(current.pos.x + dVar5, current.pos.y, current.pos.z + dVar4);
|
||||
checkBgCorrectClimbMove(¤t.pos, &local_5c);
|
||||
|
||||
local_5c.set(current.pos.x - dVar5, current.pos.y, current.pos.z - dVar4);
|
||||
checkBgCorrectClimbMove(¤t.pos, &local_5c);
|
||||
|
||||
local_68.set(current.pos.x, current.pos.y + 125.0f, current.pos.z);
|
||||
local_5c.set(local_68.x + dVar5, local_68.y, local_68.z + dVar4);
|
||||
checkBgCorrectClimbMove(&local_68, &local_5c);
|
||||
|
||||
local_5c.set(local_68.x - dVar5, local_68.y, local_68.z - dVar4);
|
||||
checkBgCorrectClimbMove(&local_68, &local_5c);
|
||||
|
||||
local_5c.set(current.pos.x + dVar5, current.pos.y, current.pos.z + dVar4);
|
||||
mRoofChk.SetPos(local_5c);
|
||||
f32 dVar3 = dComIfG_Bgsp()->RoofChk(&mRoofChk);
|
||||
if (dVar3 - 125.0f < current.pos.y) {
|
||||
current.pos.y = dVar3 - 125.0f;
|
||||
}
|
||||
local_5c.set(current.pos.x - dVar5, current.pos.y, current.pos.z - dVar4);
|
||||
mRoofChk.SetPos(local_5c);
|
||||
dVar3 = dComIfG_Bgsp()->RoofChk(&mRoofChk);
|
||||
if (dVar3 - 125.0f < current.pos.y) {
|
||||
current.pos.y = dVar3 - 125.0f;
|
||||
}
|
||||
local_5c.x = local_68.x + (100.0f * dVar7);
|
||||
local_5c.y = local_68.y;
|
||||
local_5c.z = local_68.z + (100.0f * dVar6);
|
||||
mLinkLinChk.Set(&local_68, &local_5c, this);
|
||||
if (!dComIfG_Bgsp()->LineCross(&mLinkLinChk)) {
|
||||
local_5c.set(current.pos.x + (25.0f * dVar7), local_68.y + 30.0f,
|
||||
current.pos.z + (25.0f * dVar6));
|
||||
mGndChk.SetPos(&local_5c);
|
||||
dVar3 = dComIfG_Bgsp()->GroundCross(&mGndChk);
|
||||
cM3dGPla *triPla;
|
||||
if (((-1.0E+9f != dVar3) && (triPla = dComIfG_Bgsp()->GetTriPla(mGndChk),
|
||||
triPla->GetNP()->y >= 0.5f)) &&
|
||||
(dVar3 >= (local_68.y - 30.0f))) {
|
||||
dVar4 = 3.0f;
|
||||
current.pos.x = local_5c.x - (dVar4 * dVar7);
|
||||
current.pos.y = dVar3;
|
||||
current.pos.z = local_5c.z - (dVar4 * dVar6);
|
||||
procHangClimb_init(daPy_HIO_wallCatch_c0::m.field_0x2C);
|
||||
} else {
|
||||
procFall_init(1, daPy_HIO_wallCatch_c0::m.field_0x54);
|
||||
}
|
||||
} else {
|
||||
setClimbShapeOffset();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/* 80136588-801365F4 .text procClimbUpStart_init_sub__9daPy_lk_cFv */
|
||||
void daPy_lk_c::procClimbUpStart_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_setPlayerStatus1(0, daPyStts1_UNK10000_e);
|
||||
return;
|
||||
}
|
||||
|
||||
/* 801365F4-80136708 .text procClimbUpStart_init__9daPy_lk_cFv */
|
||||
BOOL daPy_lk_c::procClimbUpStart_init() {
|
||||
/* Nonmatching */
|
||||
commonProcInit(daPyProc_CLIMB_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);
|
||||
}
|
||||
procClimbUpStart_init_sub();
|
||||
} else {
|
||||
setBlendMoveAnime(daPy_HIO_basic_c0::m.field_0xC);
|
||||
setAnimeUnequip();
|
||||
m3570 = 0;
|
||||
m3598 = 0.0f;
|
||||
}
|
||||
f32 fVar2 = cM_ssin(m352C);
|
||||
f32 fVar1 = cM_scos(m352C);
|
||||
current.pos.x = m3724.x + 25.0f * fVar2;
|
||||
current.pos.z = m3724.z + 25.0f * fVar1;
|
||||
shape_angle.y = m352C + 0x8000;
|
||||
current.angle.y = shape_angle.y;
|
||||
m34D4 = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 80136708-8013680C .text procClimbUpStart__9daPy_lk_cFv */
|
||||
BOOL daPy_lk_c::procClimbUpStart() {
|
||||
/* Nonmatching */
|
||||
/* Nonmatching - floats */
|
||||
if (setMoveBGCorrectClimb()) {
|
||||
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 {
|
||||
changeClimbMoveProc(1);
|
||||
}
|
||||
} else {
|
||||
if (frameCtrl.checkPass(9.0f)) {
|
||||
setLadderFootSe();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 8013680C-8013693C .text procClimbDownStart_init__9daPy_lk_cFs */
|
||||
BOOL daPy_lk_c::procClimbDownStart_init(s16) {
|
||||
/* Nonmatching */
|
||||
BOOL daPy_lk_c::procClimbDownStart_init(s16 param_0) {
|
||||
/* Nonmatching - floats */
|
||||
commonProcInit(daPyProc_CLIMB_DOWN_START_e);
|
||||
gravity = 0.0f;
|
||||
speed.y = 0.0f;
|
||||
mVelocity = 0.0f;
|
||||
speedF = 0.0f;
|
||||
deleteEquipItem(TRUE);
|
||||
setSingleMoveAnime(ANM_LADDERDWST, daPy_HIO_ladder_c0::m.field_0x14, 30.0f,
|
||||
-1, 3.0f);
|
||||
dComIfGp_setPlayerStatus1(0, daPyStts1_UNK10000_e);
|
||||
setOldRootQuaternion(0, -0x8000, 0);
|
||||
shape_angle.y = param_0 + 0x8000;
|
||||
current.angle.y = shape_angle.y;
|
||||
current.pos.x = current.pos.x - 35.0f * cM_ssin(param_0);
|
||||
current.pos.y = current.pos.y - 20.0f;
|
||||
current.pos.z = current.pos.z - 35.0f * cM_scos(param_0);
|
||||
m35E0 = 43.67353f;
|
||||
m3570 = 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 8013693C-80136A34 .text procClimbDownStart__9daPy_lk_cFv */
|
||||
BOOL daPy_lk_c::procClimbDownStart() {
|
||||
/* Nonmatching */
|
||||
/* Nonmatching - floats */
|
||||
if (setMoveBGCorrectClimb()) {
|
||||
return true;
|
||||
} 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 {
|
||||
changeClimbMoveProc(1);
|
||||
}
|
||||
} else {
|
||||
if (frameCtrl.checkPass(26.0f) || frameCtrl.checkPass(36.0f) ||
|
||||
frameCtrl.checkPass(43.0f)) {
|
||||
setLadderFootSe();
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 80136A34-80136B80 .text procClimbMoveUpDown_init__9daPy_lk_cFi */
|
||||
BOOL daPy_lk_c::procClimbMoveUpDown_init(int) {
|
||||
/* Nonmatching */
|
||||
BOOL daPy_lk_c::procClimbMoveUpDown_init(int param_0) {
|
||||
daPy_ANM dVar2;
|
||||
float dVar3;
|
||||
|
||||
dVar3 = getLadderMoveAnmSpeed();
|
||||
commonProcInit(daPyProc_CLIMB_MOVE_UP_DOWN_e);
|
||||
current.angle.y = shape_angle.y;
|
||||
if (m34B8 == 1) {
|
||||
dVar3 *= -1.0f;
|
||||
}
|
||||
if (param_0 != 0) {
|
||||
m3570 = 0;
|
||||
if (m34B8 == 0) {
|
||||
dVar2 = ANM_LADDERLTOR;
|
||||
} else {
|
||||
dVar2 = ANM_LADDERRTOL;
|
||||
}
|
||||
} else {
|
||||
m3570 = 1;
|
||||
if (m34B8 == 0) {
|
||||
dVar2 = ANM_LADDERRTOL;
|
||||
} else {
|
||||
dVar2 = ANM_LADDERLTOR;
|
||||
}
|
||||
}
|
||||
setSingleMoveAnime(dVar2, dVar3, 0.0f, -1, daPy_HIO_ladder_c0::m.field_0x2C);
|
||||
if (m34B8 == 0) {
|
||||
setTextureAnime(10, 0);
|
||||
} else {
|
||||
setTextureAnime(11, 0);
|
||||
}
|
||||
m34C2 = 7;
|
||||
gravity = 0.0f;
|
||||
speed.y = 0.0f;
|
||||
mVelocity = 0.0f;
|
||||
speedF = 0.0f;
|
||||
m34D0 = 1;
|
||||
dComIfGp_setPlayerStatus1(0, daPyStts1_UNK10000_e);
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 80136B80-80136C7C .text procClimbMoveUpDown__9daPy_lk_cFv */
|
||||
BOOL daPy_lk_c::procClimbMoveUpDown() {
|
||||
/* Nonmatching */
|
||||
if (setMoveBGCorrectClimb()) {
|
||||
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 (m34D0 != 0) {
|
||||
m34D0 = 0;
|
||||
setLadderFootSe();
|
||||
} else {
|
||||
changeClimbMoveProc(m3570);
|
||||
}
|
||||
} else {
|
||||
f32 dVar2 = getLadderMoveAnmSpeed();
|
||||
if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.0f) {
|
||||
dVar2 *= -1.0f;
|
||||
}
|
||||
(mFrameCtrlUnder[UNDER_MOVE0_e]).setRate(dVar2);
|
||||
checkBgClimbMove();
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 80136C7C-80136E28 .text procClimbMoveSide_init__9daPy_lk_cFi */
|
||||
BOOL daPy_lk_c::procClimbMoveSide_init(int) {
|
||||
/* Nonmatching */
|
||||
BOOL daPy_lk_c::procClimbMoveSide_init(int param_0) {
|
||||
daPy_ANM dVar2;
|
||||
float dVar4;
|
||||
|
||||
dVar4 = getClimbMoveAnmSpeed();
|
||||
commonProcInit(daPyProc_CLIMB_MOVE_SIDE_e);
|
||||
m34D4 = m34E8 - shape_angle.y;
|
||||
m34C2 = 7;
|
||||
m3570 = param_0;
|
||||
if (param_0 != 0) {
|
||||
dVar2 = ANM_FCLIMBSLIDELUP;
|
||||
if (m34B8 == 3) {
|
||||
dVar4 *= -1.0f;
|
||||
}
|
||||
} else {
|
||||
dVar2 = ANM_FCLIMBSLIDERUP;
|
||||
if (m34B8 == 2) {
|
||||
dVar4 *= -1.0f;
|
||||
}
|
||||
}
|
||||
setSingleMoveAnime(dVar2, dVar4, daPy_HIO_ladder_c0::m.field_0x38,
|
||||
daPy_HIO_ladder_c0::m.field_0x0,
|
||||
daPy_HIO_ladder_c0::m.field_0x3C);
|
||||
gravity = 0.0f;
|
||||
speed.y = 0.0f;
|
||||
mVelocity = 0.0f;
|
||||
speedF = 0.0f;
|
||||
m34D0 = 1;
|
||||
dComIfGp_setPlayerStatus1(0, daPyStts1_UNK10000_e);
|
||||
cXyz local_38 = (mRightHandPos - mLeftHandPos);
|
||||
dVar4 = local_38.absXZ();
|
||||
m35A0 = dVar4;
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 80136E28-8013707C .text procClimbMoveSide__9daPy_lk_cFv */
|
||||
BOOL daPy_lk_c::procClimbMoveSide() {
|
||||
/* Nonmatching */
|
||||
BOOL daPy_lk_c::procClimbMoveSide() {
|
||||
if (setMoveBGCorrectClimb()) {
|
||||
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 (m34D0 != 0) {
|
||||
m34D0 = 0;
|
||||
setLadderFootSe();
|
||||
} else {
|
||||
changeClimbMoveProc(m3570);
|
||||
}
|
||||
} else {
|
||||
f32 dVar5 = getClimbMoveAnmSpeed();
|
||||
if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.0f) {
|
||||
dVar5 *= -1.0f;
|
||||
}
|
||||
mFrameCtrlUnder[UNDER_MOVE0_e].setRate(dVar5);
|
||||
cXyz local_28 = (mRightHandPos - mLeftHandPos);
|
||||
dVar5 = local_28.absXZ();
|
||||
f32 fVar1 =
|
||||
std::fabsf((dVar5 - m35A0)) * daPy_HIO_ladder_c0::m.field_0x40;
|
||||
f32 fVar2 = fVar1 * cM_ssin(m34D4);
|
||||
current.pos.y += fVar1 * cM_scos(m34D4);
|
||||
current.pos.x += fVar2 * cM_scos(shape_angle.y);
|
||||
current.pos.z -= fVar2 * cM_ssin(shape_angle.y);
|
||||
m35A0 = dVar5;
|
||||
checkBgClimbMove();
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user