Added enum for Link's movement direction

This commit is contained in:
LagoLunatic
2025-04-11 15:02:53 -04:00
parent 309158e274
commit 6aeaaef643
23 changed files with 341 additions and 356 deletions
+1 -1
View File
@@ -246,7 +246,7 @@ BOOL daPy_lk_c::procBtRoll_init(fopEn_enemy_c* enemy) {
local_38.z = 0.5f * (current.pos.z + (enemy->current.pos.z - enemy->getBtBodyR() * cM_scos(enemy->shape_angle.y)));
daPy_ANM anm;
if (m34B8 == 2) {
if (mDirection == DIR_LEFT) {
m34D4 = -0x7FF0;
anm = ANM_MROLLL;
} else {
+4 -4
View File
@@ -203,10 +203,10 @@ BOOL daPy_lk_c::procBoomerangMove_init() {
}
commonProcInit(daPyProc_BOOMERANG_MOVE_e);
if (m34B8 == 2) {
if (mDirection == DIR_LEFT) {
current.angle.y = shape_angle.y + 0x4000;
} else {
m34B8 = 3;
mDirection = DIR_RIGHT;
current.angle.y = shape_angle.y + -0x4000;
}
setActAnimeUpper(LKANM_BCK_BOOMWAIT, UPPER_MOVE2_e, daPy_HIO_boom_c0::m.field_0x18, 0.0f, -1, -1.0f);
@@ -231,8 +231,8 @@ BOOL daPy_lk_c::procBoomerangMove() {
f32 fVar1 = -1.0f;
if (std::fabsf(mVelocity) < 0.001f) {
onModeFlg(ModeFlg_00000001);
if (m34B8 != 3) {
m34B8 = 3;
if (mDirection != DIR_RIGHT) {
mDirection = DIR_RIGHT;
fVar1 = daPy_HIO_basic_c0::m.field_0xC;
}
} else {
+4 -4
View File
@@ -285,10 +285,10 @@ BOOL daPy_lk_c::procBowMove_init() {
}
commonProcInit(daPyProc_BOW_MOVE_e);
if (m34B8 == 2) {
if (mDirection == DIR_LEFT) {
current.angle.y = shape_angle.y + 0x4000;
} else {
m34B8 = 3;
mDirection = DIR_RIGHT;
current.angle.y = shape_angle.y + -0x4000;
}
if (!checkBowAnime()) {
@@ -314,8 +314,8 @@ BOOL daPy_lk_c::procBowMove() {
f32 fVar1 = -1.0f;
if (std::fabsf(mVelocity) < 0.001f) {
onModeFlg(ModeFlg_00000001);
if (m34B8 != 3) {
m34B8 = 3;
if (mDirection != DIR_RIGHT) {
mDirection = DIR_RIGHT;
fVar1 = daPy_HIO_basic_c0::m.field_0xC;
}
current.angle.y = shape_angle.y + -0x4000;
+91 -103
View File
@@ -21,21 +21,20 @@ f32 daPy_lk_c::getClimbMoveAnmSpeed() {
/* 80135B74-80135DA0 .text setClimbShapeOffset__9daPy_lk_cFv */
void daPy_lk_c::setClimbShapeOffset() {
/* Nonmatching - floats */
cXyz local_40;
cXyz local_4c;
cXyz local_58;
cXyz local_64;
s16 uVar3 = m34EC;
s16 uVar4 = shape_angle.y;
s32 uVar4 = shape_angle.y;
uVar3 += uVar4;
f32 fVar4 = cM_ssin(uVar3);
f32 fVar3 = cM_scos(uVar3);
f32 fVar2 = cM_ssin((s32)uVar4 & 0xffffU);
f32 fVar2 = cM_ssin((s32)uVar4);
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);
f32 fVar1 = cM_scos(uVar4);
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);
@@ -69,18 +68,14 @@ void daPy_lk_c::setClimbShapeOffset() {
int daPy_lk_c::getClimbDirectionFromAngle() {
s16 angle = m34E8 - shape_angle.y;
if (abs(angle) > 0x7000) {
return 1;
return DIR_BACKWARD;
} else if (angle >= 0x1000) {
return DIR_LEFT;
} else if (angle <= -0x1000) {
return DIR_RIGHT;
} else {
return DIR_FORWARD;
}
if (angle >= 0x1000) {
return 2;
}
if (angle <= -0x1000) {
return 3;
}
return 0;
}
/* 80135E14-80135E98 .text changeClimbMoveProc__9daPy_lk_cFi */
@@ -89,8 +84,8 @@ void daPy_lk_c::changeClimbMoveProc(int param_0) {
sVar1 = m34EC;
if (mStickDistance > 0.05f) {
m34B8 = getClimbDirectionFromAngle();
if ((m34B8 == 0) || (m34B8 == 1)) {
mDirection = getClimbDirectionFromAngle();
if (mDirection == DIR_FORWARD || mDirection == DIR_BACKWARD) {
procClimbMoveUpDown_init(param_0);
} else {
procClimbMoveSide_init(param_0);
@@ -100,50 +95,50 @@ void daPy_lk_c::changeClimbMoveProc(int param_0) {
}
/* 80135E98-80136154 .text setMoveBGCorrectClimb__9daPy_lk_cFv */
int daPy_lk_c::setMoveBGCorrectClimb() {
/* Nonmatching - floats */
if ((dComIfG_Bgsp()->ChkPolySafe(mPolyInfo)) && (dComIfG_Bgsp()->ChkMoveBG(mPolyInfo))) {
BOOL daPy_lk_c::setMoveBGCorrectClimb() {
if (dComIfG_Bgsp()->ChkPolySafe(mPolyInfo) && dComIfG_Bgsp()->ChkMoveBG(mPolyInfo)) {
dComIfG_Bgsp()->MoveBgTransPos(mPolyInfo, true, &current.pos, &current.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.01f)) {
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);
}
}
}
if (mCurProc == daPyProc_CLIMB_DOWN_START_e && (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() > 0.01f)) {
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);
}
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);
}
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* i_startPos, cXyz* i_endPos) {
void 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);
@@ -154,8 +149,7 @@ BOOL daPy_lk_c::checkBgCorrectClimbMove(cXyz* i_startPos, cXyz* i_endPos) {
}
/* 80136200-80136588 .text checkBgClimbMove__9daPy_lk_cFv */
BOOL daPy_lk_c::checkBgClimbMove() {
/* Nonmatching - floats */
void daPy_lk_c::checkBgClimbMove() {
cXyz local_5c;
cXyz local_68;
@@ -196,9 +190,8 @@ BOOL daPy_lk_c::checkBgClimbMove() {
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 (((C_BG_MIN_HEIGHT != dVar3) && (triPla = dComIfG_Bgsp()->GetTriPla(mGndChk), triPla->GetNP()->y >= 0.5f)) &&
(dVar3 >= (local_68.y - 30.0f)))
if (C_BG_MIN_HEIGHT != dVar3 && dComIfG_Bgsp()->GetTriPla(mGndChk)->GetNP()->y >= 0.5f &&
dVar3 >= local_68.y - 30.0f)
{
dVar4 = 3.0f;
current.pos.x = local_5c.x - (dVar4 * dVar7);
@@ -251,42 +244,39 @@ BOOL daPy_lk_c::procClimbUpStart_init() {
/* 80136708-8013680C .text procClimbUpStart__9daPy_lk_cFv */
BOOL daPy_lk_c::procClimbUpStart() {
/* Nonmatching - floats */
if (setMoveBGCorrectClimb()) {
return true;
}
if (m3570 == 0) {
if (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == 0xffff) {
procLadderUpStart_init_sub();
}
} else {
if (m3570 == 0) {
if (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == 0xffff) {
procLadderUpStart_init_sub();
J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e];
m34C2 = 5;
if (frameCtrl.getRate() < 0.01f) {
dComIfGp_setDoStatus(6);
if (m34D4 == 0) {
setLadderFootSe();
m34D4 = 1;
}
} else {
J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e];
m34C2 = 5;
if (frameCtrl.getRate() < 0.01f) {
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);
}
if (doTrigger()) {
m34C2 = 0;
procFall_init(1, daPy_HIO_wallCatch_c0::m.field_0x54);
} else {
if (frameCtrl.checkPass(9.0f)) {
setLadderFootSe();
}
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 param_0) {
/* Nonmatching - floats */
commonProcInit(daPyProc_CLIMB_DOWN_START_e);
gravity = 0.0f;
speed.y = 0.0f;
@@ -308,26 +298,24 @@ BOOL daPy_lk_c::procClimbDownStart_init(s16 param_0) {
/* 8013693C-80136A34 .text procClimbDownStart__9daPy_lk_cFv */
BOOL daPy_lk_c::procClimbDownStart() {
/* Nonmatching - floats */
if (setMoveBGCorrectClimb()) {
return true;
} else {
J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e];
m34C2 = 5;
if (frameCtrl.getRate() < 0.01f) {
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();
}
}
}
J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e];
m34C2 = 5;
if (frameCtrl.getRate() < 0.01f) {
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;
}
@@ -339,26 +327,26 @@ BOOL daPy_lk_c::procClimbMoveUpDown_init(int param_0) {
dVar3 = getLadderMoveAnmSpeed();
commonProcInit(daPyProc_CLIMB_MOVE_UP_DOWN_e);
current.angle.y = shape_angle.y;
if (m34B8 == 1) {
if (mDirection == DIR_BACKWARD) {
dVar3 *= -1.0f;
}
if (param_0 != 0) {
m3570 = 0;
if (m34B8 == 0) {
if (mDirection == DIR_FORWARD) {
dVar2 = ANM_LADDERLTOR;
} else {
dVar2 = ANM_LADDERRTOL;
}
} else {
m3570 = 1;
if (m34B8 == 0) {
if (mDirection == DIR_FORWARD) {
dVar2 = ANM_LADDERRTOL;
} else {
dVar2 = ANM_LADDERLTOR;
}
}
setSingleMoveAnime(dVar2, dVar3, 0.0f, -1, daPy_HIO_ladder_c0::m.field_0x2C);
if (m34B8 == 0) {
if (mDirection == DIR_FORWARD) {
setTextureAnime(10, 0);
} else {
setTextureAnime(11, 0);
@@ -414,12 +402,12 @@ BOOL daPy_lk_c::procClimbMoveSide_init(int param_0) {
m3570 = param_0;
if (param_0 != 0) {
dVar2 = ANM_FCLIMBSLIDELUP;
if (m34B8 == 3) {
if (mDirection == DIR_RIGHT) {
dVar4 *= -1.0f;
}
} else {
dVar2 = ANM_FCLIMBSLIDERUP;
if (m34B8 == 2) {
if (mDirection == DIR_LEFT) {
dVar4 *= -1.0f;
}
}
+1 -1
View File
@@ -236,7 +236,7 @@ BOOL daPy_lk_c::procCrawlMove_init(s16 param_0, s16 param_1) {
commonProcInit(daPyProc_CRAWL_MOVE_e);
if (var_r29 != 0) {
f32 dVar4 = getCrawlMoveAnmSpeed();
if (getDirectionFromShapeAngle() == 1) {
if (getDirectionFromShapeAngle() == DIR_BACKWARD) {
dVar4 *= -1.0f;
}
current.angle.y = shape_angle.y;
+1 -1
View File
@@ -1275,7 +1275,7 @@ BOOL daPy_lk_c::dProcLookWait_init() {
mVelocity = 0.0f;
setBlendMoveAnime(daPy_HIO_basic_c0::m.field_0xC);
current.angle.y = shape_angle.y;
m34B8 = 4;
mDirection = DIR_NONE;
initShipRideUseItem(iVar1, 0);
return true;
}
+2 -2
View File
@@ -235,8 +235,8 @@ BOOL daPy_lk_c::checkNextActionGrab() {
dComIfGp_setDoStatus(9);
} else {
if (mpAttention->Lockon()) {
int iVar4 = getDirectionFromShapeAngle();
if ((mStickDistance <= 0.05f) || (mStickDistance > 0.05f && (iVar4 == 0 || (iVar4 == 1)))) {
int direction = getDirectionFromShapeAngle();
if ((mStickDistance <= 0.05f) || (mStickDistance > 0.05f && (direction == DIR_FORWARD || (direction == DIR_BACKWARD)))) {
dComIfGp_setDoStatus(14);
}
} else {
+4 -4
View File
@@ -67,20 +67,20 @@ BOOL daPy_lk_c::procHammerSideSwing() {
m35EC = mFrameCtrlUnder[UNDER_MOVE0_e].getFrame();
if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) {
mVelocity = 0.0f;
m34B8 = 3;
mDirection = DIR_RIGHT;
checkNextMode(0);
return true;
} else {
if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_ham_c0::m.field_0x10) {
f32 dVar4 = mVelocity;
u8 uVar1 = m34B8;
u8 orig_direction = mDirection;
mVelocity = 0.0f;
m34B8 = 3;
mDirection = DIR_RIGHT;
if (checkNextMode(1)) {
return true;
}
mVelocity = dVar4;
m34B8 = uVar1;
mDirection = orig_direction;
}
if (changeCutReverseProc(ANM_CUTREL)) {
setHammerQuake(NULL, NULL, -1);
+1 -1
View File
@@ -229,7 +229,7 @@ BOOL daPy_lk_c::procHangStart() {
(mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_wallCatch_c0::m.field_0x50)) &&
(mStickDistance > 0.05f || m3570 != 0))
{
if (getDirectionFromShapeAngle() == 0 || m3570 != 0) {
if (getDirectionFromShapeAngle() == DIR_FORWARD || m3570 != 0) {
procHangClimb_init(daPy_HIO_wallCatch_c0::m.field_0x2C);
}
} else {
+6 -6
View File
@@ -142,8 +142,8 @@ BOOL daPy_lk_c::checkNextActionHookshotReady() {
seStartOnlyReverb(JA_SE_LK_HS_SHOOT);
voiceStart(41);
resetFootEffect();
if (m34B8 != 2) {
m34B8 = 2;
if (mDirection != DIR_LEFT) {
mDirection = DIR_LEFT;
}
current.angle.y = shape_angle.y + 0x4000;
onModeFlg(ModeFlg_00000001);
@@ -248,10 +248,10 @@ BOOL daPy_lk_c::procHookshotMove_init() {
}
commonProcInit(daPyProc_HOOKSHOT_MOVE_e);
if (m34B8 == 3) {
if (mDirection == DIR_RIGHT) {
current.angle.y = shape_angle.y + -0x4000;
} else {
m34B8 = 2;
mDirection = DIR_LEFT;
current.angle.y = shape_angle.y + 0x4000;
}
daHookshot_c* hookshot = (daHookshot_c*)mActorKeepEquip.getActor();
@@ -284,8 +284,8 @@ BOOL daPy_lk_c::procHookshotMove() {
f32 fVar1 = -1.0f;
if (std::fabsf(mVelocity) < 0.001f) {
onModeFlg(ModeFlg_00000001);
if (m34B8 != 2) {
m34B8 = 2;
if (mDirection != DIR_LEFT) {
mDirection = DIR_LEFT;
fVar1 = daPy_HIO_basic_c0::m.field_0xC;
}
current.angle.y = shape_angle.y + 0x4000;
+8 -8
View File
@@ -37,7 +37,7 @@ void daPy_lk_c::setLadderFootSe() {
int daPy_lk_c::changeLadderMoveProc(int param_0) {
cXyz local_2c;
cXyz local_38;
BOOL iVar5;
int direction;
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);
@@ -51,10 +51,10 @@ int daPy_lk_c::changeLadderMoveProc(int param_0) {
local_2c.z = current.pos.z;
if (iVar2 < 0x4000) {
local_2c.y = 50.0f + (125.0f + current.pos.y);
iVar5 = false;
direction = DIR_FORWARD;
} else {
local_2c.y = current.pos.y - 50.0f;
iVar5 = true;
direction = DIR_BACKWARD;
}
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;
@@ -67,7 +67,7 @@ int daPy_lk_c::changeLadderMoveProc(int param_0) {
procLadderDownEnd_init(param_0);
}
} else {
procLadderMove_init(param_0, iVar5, &m370C);
procLadderMove_init(param_0, direction, &m370C);
}
}
return false;
@@ -307,13 +307,13 @@ BOOL daPy_lk_c::procLadderDownEnd() {
}
/* 80133BB4-80133E28 .text procLadderMove_init__9daPy_lk_cFiiP4cXyz */
BOOL daPy_lk_c::procLadderMove_init(int param_0, int param_1, cXyz* param_2) {
BOOL daPy_lk_c::procLadderMove_init(int param_0, int direction, cXyz* param_2) {
int uVar3 = checkModeFlg(ModeFlg_MIDAIR) ? true : false;
float dVar4 = getLadderMoveAnmSpeed();
commonProcInit(daPyProc_LADDER_MOVE_e);
if (uVar3 == 0) {
if (param_1 == 0) {
if (direction == DIR_FORWARD) {
m370C.y = param_2->y + 37.5f;
} else {
dVar4 *= -1.0f;
@@ -351,8 +351,8 @@ BOOL daPy_lk_c::procLadderMove_init(int param_0, int param_1, cXyz* param_2) {
}
setSingleMoveAnime(anm, dVar4, 0.0f, -1, daPy_HIO_ladder_c0::m.field_0x2C);
m34B8 = param_1;
if (param_1 == 0) {
mDirection = direction;
if (direction == DIR_FORWARD) {
setTextureAnime(10, 0);
} else {
setTextureAnime(0xb, 0);
+4 -4
View File
@@ -1137,13 +1137,13 @@ void daPy_lk_c::setDoStatus() {
/* 80108A9C-80108B08 .text getDirectionFromAngle__9daPy_lk_cFs */
int daPy_lk_c::getDirectionFromAngle(s16 angle) {
if (abs(angle) > 0x6000) {
return 1;
return DIR_BACKWARD;
} else if (angle >= 0x2000) {
return 2;
return DIR_LEFT;
} else if (angle <= -0x2000) {
return 3;
return DIR_RIGHT;
} else {
return 0;
return DIR_FORWARD;
}
}
+9 -9
View File
@@ -101,10 +101,10 @@ BOOL daPy_lk_c::procPushPullWait() {
}
if (m3570 == 0) {
if (mStickDistance > 0.05f) {
int iVar1 = getDirectionFromShapeAngle();
if (iVar1 == 0) {
int direction = getDirectionFromShapeAngle();
if (direction == DIR_FORWARD) {
procPushMove_init();
} else if (iVar1 == 1) {
} else if (direction == DIR_BACKWARD) {
procPullMove_init();
}
} else {
@@ -135,18 +135,18 @@ BOOL daPy_lk_c::procPushMove_init() {
/* 80151A1C-80151B38 .text procPushMove__9daPy_lk_cFv */
BOOL daPy_lk_c::procPushMove() {
dComIfGp_setRStatus(0x11);
int iVar1 = getDirectionFromShapeAngle();
int direction = getDirectionFromShapeAngle();
setFrontWallType();
if ((!checkResetFlg0(daPyRFlg0_UNK8)) || (!spActionButton() && (!checkNoResetFlg0(daPyFlg0_PUSH_PULL_KEEP)))) {
checkNextMode(0);
} else {
if (!checkNoResetFlg0(daPyFlg0_PUSH_PULL_KEEP)) {
if (mStickDistance > 0.05f) {
if (iVar1 == 0) {
if (direction == DIR_FORWARD) {
setPushPullKeepData(dBgW::PP_UNK1_e);
return true;
}
if (iVar1 == 1) {
if (direction == DIR_BACKWARD) {
return procPullMove_init();
}
}
@@ -180,14 +180,14 @@ BOOL daPy_lk_c::procPullMove_init() {
BOOL daPy_lk_c::procPullMove() {
/* Nonmatching - floats */
dComIfGp_setRStatus(0x11);
int iVar1 = getDirectionFromShapeAngle();
int direction = getDirectionFromShapeAngle();
setFrontWallType();
if ((!checkResetFlg0(daPyRFlg0_UNK8)) || (!spActionButton() && (!checkNoResetFlg0(daPyFlg0_PUSH_PULL_KEEP)))) {
checkNextMode(0);
} else {
if (!checkNoResetFlg0(daPyFlg0_PUSH_PULL_KEEP)) {
if (mStickDistance > 0.05f) {
if (iVar1 == 1) {
if (direction == DIR_BACKWARD) {
f32 dVar4 = cM_ssin(shape_angle.y);
f32 dVar5 = cM_scos(shape_angle.y);
cXyz local_3c;
@@ -217,7 +217,7 @@ BOOL daPy_lk_c::procPullMove() {
}
return true;
}
if (iVar1 == 0) {
if (direction == DIR_FORWARD) {
return procPushMove_init();
}
}
+18 -19
View File
@@ -235,8 +235,8 @@ int daPy_lk_c::throwRope() {
daPy_HIO_rope_c0::m.field_0x48, daPy_HIO_rope_c0::m.field_0x8, -1.0f);
setPriTextureAnime(0x48, 0);
mVelocity = 0.0f;
if (m34B8 != 3) {
m34B8 = 3;
if (mDirection != DIR_RIGHT) {
mDirection = DIR_RIGHT;
}
current.angle.y = shape_angle.y + -0x4000;
onModeFlg(ModeFlg_00000001);
@@ -765,7 +765,6 @@ BOOL daPy_lk_c::procRopeHangWait_init(int param_0) {
BOOL daPy_lk_c::procRopeHangWait() {
/* Nonmatching */
bool bVar1;
int iVar2;
s16 unaff_r29;
float dVar4;
@@ -784,21 +783,21 @@ BOOL daPy_lk_c::procRopeHangWait() {
current.pos.z = mRopePos.z;
s16 r30 = 0;
if (mStickDistance > 0.05f) {
iVar2 = getDirectionFromAngle(m34DC);
int direction = getDirectionFromAngle(m34DC);
if (spActionButton()) {
if (iVar2 == 0) {
if (direction == DIR_FORWARD) {
if (abs((int)m34D4) <= 0x80) {
procRopeUp_init();
}
bVar1 = true;
unaff_r29 = 0;
} else if (iVar2 == 1) {
} else if (direction == DIR_BACKWARD) {
if (abs((int)m34D4) <= 0x80) {
procRopeDown_init();
}
bVar1 = true;
unaff_r29 = 0;
} else if (iVar2 == 2) {
} else if (direction == DIR_LEFT) {
s16 r5 = 512.0f * mStickDistance;
if (r5 > m34D4) {
s16 r0 = 64.0f * mStickDistance;
@@ -810,7 +809,7 @@ BOOL daPy_lk_c::procRopeHangWait() {
} else {
unaff_r29 = r5;
}
} else {
} else { // DIR_RIGHT
s16 r5 = -512.0f * mStickDistance;
if (r5 < m34D4) {
s16 r0 = 64.0f * mStickDistance;
@@ -829,7 +828,7 @@ BOOL daPy_lk_c::procRopeHangWait() {
setSingleMoveAnime(ANM_ROPEWAIT, daPy_HIO_rope_c0::m.field_0x24, 0.0f, -1,
daPy_HIO_rope_c0::m.field_0x2C);
}
} else if ((iVar2 == 0) || (iVar2 == 1)) {
} else if ((direction == DIR_FORWARD) || (direction == DIR_BACKWARD)) {
procRopeSwingStart_init();
}
unaff_r29 = 0;
@@ -939,15 +938,15 @@ BOOL daPy_lk_c::procRopeUp() {
current.pos.x = mRopePos.x;
current.pos.z = mRopePos.z;
if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) {
int iVar1 = getDirectionFromAngle(m34DC);
int direction = getDirectionFromAngle(m34DC);
if (mStickDistance <= 0.05f) {
procRopeHangWait_init(0);
} else {
if (!spActionButton()) {
procRopeSwingStart_init();
} else if (iVar1 == 1) {
} else if (direction == DIR_BACKWARD) {
procRopeDown_init();
} else if (iVar1 == 0) {
} else if (direction == DIR_FORWARD) {
if (m35A0 <= current.pos.y) {
if (!specialRopeHangUp()) {
procRopeHangWait_init(0);
@@ -1017,15 +1016,15 @@ BOOL daPy_lk_c::procRopeDown() {
mRopePos = pfVar2->current.pos;
current.pos.x = mRopePos.x;
current.pos.z = mRopePos.z;
int iVar1 = getDirectionFromAngle(m34DC);
int direction = getDirectionFromAngle(m34DC);
if (mStickDistance <= 0.05f) {
procRopeHangWait_init(1);
} else {
if (!spActionButton()) {
procRopeSwingStart_init();
} else if (iVar1 == 0) {
} else if (direction == DIR_FORWARD) {
procRopeUp_init();
} else if (iVar1 == 1) {
} else if (direction == DIR_BACKWARD) {
m35A0 += 1.5f;
if (m35A0 > daPy_HIO_rope_c0::m.field_0x40) {
m35A0 = daPy_HIO_rope_c0::m.field_0x40;
@@ -1112,10 +1111,10 @@ BOOL daPy_lk_c::procRopeMove_init() {
return false;
}
commonProcInit(daPyProc_ROPE_MOVE_e);
if (m34B8 == 2) {
if (mDirection == DIR_LEFT) {
current.angle.y = shape_angle.y + 0x4000;
} else {
m34B8 = 3;
mDirection = DIR_RIGHT;
current.angle.y = shape_angle.y + -0x4000;
}
if (fopAcM_GetParam(mActorKeepEquip.getActor()) == 0) {
@@ -1147,8 +1146,8 @@ BOOL daPy_lk_c::procRopeMove() {
f32 fVar1 = -1.0f;
if (std::abs(mVelocity) < 0.001f) {
onModeFlg(ModeFlg_00000001);
if (m34B8 != 3) {
m34B8 = 3;
if (mDirection != DIR_RIGHT) {
mDirection = DIR_RIGHT;
fVar1 = daPy_HIO_basic_c0::m.field_0xC;
}
} else {
+3 -3
View File
@@ -212,8 +212,8 @@ void daPy_lk_c::setShipAttnetionBodyAngle() {
setShapeAngleToAtnActor();
} else {
if (mStickDistance > 0.05f) {
int iVar1 = getDirectionFromAngle(m34DC);
if (iVar1 == 2) {
int direction = getDirectionFromAngle(m34DC);
if (direction == DIR_LEFT) {
s16 r5 = 512.0f * mStickDistance;
if (r5 > m34DA) {
s16 r0 = 64.0f * mStickDistance;
@@ -225,7 +225,7 @@ void daPy_lk_c::setShipAttnetionBodyAngle() {
} else {
r30 = r5;
}
} else if (iVar1 == 3) {
} else if (direction == DIR_RIGHT) {
s16 r5 = -512.0f * mStickDistance;
if (r5 < m34DA) {
s16 r0 = 64.0f * mStickDistance;
+63 -70
View File
@@ -30,7 +30,7 @@ void daPy_lk_c::setSpeedAndAngleSwim() {
if (mStickDistance > 0.05f) {
oldAngleY = shape_angle.y;
if (getDirectionFromShapeAngle() == 1) {
if (getDirectionFromShapeAngle() == DIR_BACKWARD) {
mSwimTailEcallBack[0].onEnd();
mSwimTailEcallBack[1].onEnd();
@@ -226,7 +226,7 @@ BOOL daPy_lk_c::changeSwimOutProc() {
}
if (checkSwimFallCheck()) {
if (mCurProc == daPyProc_SWIM_MOVE_e && m34B8) {
if (mCurProc == daPyProc_SWIM_MOVE_e && mDirection != DIR_FORWARD) {
current.pos.y += m35C4;
}
@@ -234,39 +234,37 @@ BOOL daPy_lk_c::changeSwimOutProc() {
return procFall_init(1, l_HIO_wallCatch_c0.m.field_0x54);
}
else {
if (!checkNoResetFlg0(daPyFlg0_UNK80) || (pcVar1 && pcVar1->mNormal.y >= 0.5f && m35D0 - mAcch.GetGroundH() < l_HIO_swim_c0.m.field_0x24 - 5.0f)) {
current.pos.y = m35D0;
if (mCurProc == daPyProc_SWIM_MOVE_e && m34B8) {
current.pos.y += m35C4;
}
if (!checkNoResetFlg0(daPyFlg0_UNK80) || (pcVar1 && pcVar1->mNormal.y >= 0.5f && m35D0 - mAcch.GetGroundH() < l_HIO_swim_c0.m.field_0x24 - 5.0f)) {
current.pos.y = m35D0;
swimOutAfter(TRUE);
return checkNextMode(0);
}
else {
if (dComIfGp_getItemTimeCount() <= 0 && startRestartRoom(5, 0xC9, -1.0f, 0)) {
voiceStart(0x21);
mFrameCtrlUnder[0].mRate = 0.0f;
onNoResetFlg1(daPyFlg1_UNK40000000);
}
return FALSE;
if (mCurProc == daPyProc_SWIM_MOVE_e && mDirection != DIR_FORWARD) {
current.pos.y += m35C4;
}
swimOutAfter(TRUE);
return checkNextMode(0);
}
if (dComIfGp_getItemTimeCount() <= 0 && startRestartRoom(5, 0xC9, -1.0f, 0)) {
voiceStart(0x21);
mFrameCtrlUnder[UNDER_MOVE0_e].setRate(0.0f);
onNoResetFlg1(daPyFlg1_UNK40000000);
}
return FALSE;
}
/* 8013D530-8013D638 .text setSwimMoveAnime__9daPy_lk_cFQ29daPy_lk_c8daPy_ANM */
void daPy_lk_c::setSwimMoveAnime(daPy_ANM swimMoveAnm) {
f32 startFrame = mFrameCtrlUnder[0].getFrame();
f32 endFrame = startFrame * mFrameCtrlUnder[0].getEnd();
f32 startFrame = mFrameCtrlUnder[UNDER_MOVE0_e].getFrame();
f32 endFrame = startFrame * mFrameCtrlUnder[UNDER_MOVE0_e].getEnd();
f32 rate = (std::fabsf(mVelocity) * (l_HIO_swim_c0.m.field_0x54 - l_HIO_swim_c0.m.field_0x50) / mMaxNormalSpeed) +
l_HIO_swim_c0.m.field_0x50 +
(getSwimTimerRate() * l_HIO_swim_c0.m.field_0x74);
setSingleMoveAnime(swimMoveAnm, rate, 0.0f, -1, l_HIO_swim_c0.m.field_0x58);
mFrameCtrlUnder[0].setFrame(endFrame * mFrameCtrlUnder[0].getEnd());
mAnmRatioUnder[0].getAnmTransform()->setFrame(mFrameCtrlUnder[0].getFrame());
mFrameCtrlUnder[UNDER_MOVE0_e].setFrame(endFrame * mFrameCtrlUnder[UNDER_MOVE0_e].getEnd());
mAnmRatioUnder[UNDER_MOVE0_e].getAnmTransform()->setFrame(mFrameCtrlUnder[UNDER_MOVE0_e].getFrame());
}
/* 8013D638-8013D6B8 .text getSwimTimerRate__9daPy_lk_cFv */
@@ -416,7 +414,7 @@ BOOL daPy_lk_c::procSwimWait_init(BOOL param_1) {
gravity = 0.0f;
setSingleMoveAnime(ANM_SWIMWAIT, (float)(getSwimTimerRate() * l_HIO_swim_c0.m.field_0x70) + l_HIO_swim_c0.m.field_0x40, 0.0f, -1, l_HIO_swim_c0.m.field_0x44);
mFrameCtrl->setFrame(fVar2 * mFrameCtrl->getEnd());
mAnmRatioUnder[0].getAnmTransform()->setFrame(mFrameCtrl->getFrame());
mAnmRatioUnder[UNDER_MOVE0_e].getAnmTransform()->setFrame(mFrameCtrl->getFrame());
dComIfGp_setPlayerStatus0(0, daPyStts0_SWIM_e);
if (checkNoResetFlg0(daPyFlg0_UNK100)) {
@@ -435,9 +433,6 @@ BOOL daPy_lk_c::procSwimWait_init(BOOL param_1) {
/* 8013DCDC-8013DE8C .text procSwimWait__9daPy_lk_cFv */
BOOL daPy_lk_c::procSwimWait() {
fopAc_ac_c* talkEventPartner;
short targetAngleY;
setSpeedAndAngleSwim();
m34D4 += (short)((cM_rndF(0.3f) + 0.85f) * l_HIO_swim_c0.m.field_0x2);
m35C4 = cM_ssin(m34D4) * l_HIO_swim_c0.m.field_0x4C + l_HIO_swim_c0.m.field_0x48;
@@ -445,37 +440,37 @@ BOOL daPy_lk_c::procSwimWait() {
if (changeSwimOutProc()) {
return TRUE;
}
else {
if (!checkNoResetFlg0(daPyFlg0_UNK100)) {
if (changeSwimUpProc()) {
return TRUE;
}
}
else {
current.pos.y = m35D0;
}
if (checkNextModeSwim()) {
if (!checkNoResetFlg0(daPyFlg0_UNK100)) {
if (changeSwimUpProc()) {
return TRUE;
}
else {
if (dComIfGp_checkPlayerStatus0(0, daPyStts0_UNK10_e)) {
talkEventPartner = fopAcM_getTalkEventPartner(this);
if (talkEventPartner) {
targetAngleY = cLib_targetAngleY(&current.pos, &talkEventPartner->eyePos);
cLib_addCalcAngleS(&shape_angle.y, targetAngleY, l_HIO_turn_c0.m.field_0x6, l_HIO_turn_c0.m.field_0x8, l_HIO_turn_c0.m.field_0xA);
current.angle.y = shape_angle.y;
}
}
}
else {
current.pos.y = m35D0;
}
mFrameCtrlUnder[0].setRate((float)(getSwimTimerRate() * l_HIO_swim_c0.m.field_0x70) + l_HIO_swim_c0.m.field_0x40);
if (checkNextModeSwim()) {
return TRUE;
}
if (mStickDistance > 0.05f) {
procSwimMove_init(TRUE);
}
setSwimTimerStartStop();
if (dComIfGp_checkPlayerStatus0(0, daPyStts0_UNK10_e)) {
fopAc_ac_c* talkEventPartner = fopAcM_getTalkEventPartner(this);
if (talkEventPartner) {
short targetAngleY = cLib_targetAngleY(&current.pos, &talkEventPartner->eyePos);
cLib_addCalcAngleS(&shape_angle.y, targetAngleY, l_HIO_turn_c0.m.field_0x6, l_HIO_turn_c0.m.field_0x8, l_HIO_turn_c0.m.field_0xA);
current.angle.y = shape_angle.y;
}
}
mFrameCtrlUnder[UNDER_MOVE0_e].setRate((getSwimTimerRate() * l_HIO_swim_c0.m.field_0x70) + l_HIO_swim_c0.m.field_0x40);
if (mStickDistance > 0.05f) {
procSwimMove_init(TRUE);
}
setSwimTimerStartStop();
return TRUE;
}
@@ -484,14 +479,14 @@ BOOL daPy_lk_c::procSwimMove_init(BOOL param_1) {
commonProcInit(daPyProc_SWIM_MOVE_e);
if (!param_1) {
mFrameCtrlUnder[0].setFrame(0.0f);
mFrameCtrlUnder[UNDER_MOVE0_e].setFrame(0.0f);
}
gravity = 0.0f;
setSwimMoveAnime(ANM_SWIMING);
m34B8 = 0;
mDirection = DIR_FORWARD;
if (checkNoResetFlg0(daPyFlg0_UNK100)) {
if (mEquipItem != daPyItem_NONE_e) {
@@ -514,40 +509,38 @@ BOOL daPy_lk_c::procSwimMove_init(BOOL param_1) {
/* 8013DF60-8013E250 .text procSwimMove__9daPy_lk_cFv */
BOOL daPy_lk_c::procSwimMove() {
int iVar1;
daPy_ANM anm;
setSpeedAndAngleSwim();
J3DFrameCtrl* mFrameCtrl = mFrameCtrlUnder;
int direction;
if (!mpAttention->Lockon()) {
iVar1 = 0;
direction = DIR_FORWARD;
}
else if (mStickDistance > 0.05f) {
direction = getDirectionFromShapeAngle();
}
else {
if (mStickDistance > 0.05f) {
iVar1 = getDirectionFromShapeAngle();
}
else {
iVar1 = 0;
}
direction = DIR_FORWARD;
}
if (m34B8 != iVar1) {
m34B8 = iVar1;
if (mDirection != direction) {
mDirection = direction;
float fVar1 = m35C4;
if (m34B8 == 0) {
if (mDirection == DIR_FORWARD) {
anm = ANM_SWIMING;
m35C4 = l_HIO_swim_c0.m.field_0x5C;
}
else {
m35C4 = -80.0f;
if (m34B8 == 2) {
if (mDirection == DIR_LEFT) {
anm = ANM_ATNDLS;
}
else if (m34B8 == 3) {
else if (mDirection == DIR_RIGHT) {
anm = ANM_ATNDRS;
}
else {
@@ -558,7 +551,7 @@ BOOL daPy_lk_c::procSwimMove() {
m_old_fdata->getOldFrameTransInfo(0)->mTranslate.y -= m35C4 - fVar1;
setSwimMoveAnime(anm);
if (m34B8) {
if (mDirection != DIR_FORWARD) {
setTextureAnime(3, 0);
onModeFlg(ModeFlg_00000100);
offModeFlg(ModeFlg_00000400);
@@ -573,7 +566,7 @@ BOOL daPy_lk_c::procSwimMove() {
mFrameCtrl[0].setRate((std::fabsf(mVelocity) * (l_HIO_swim_c0.m.field_0x54 - l_HIO_swim_c0.m.field_0x50)) / mMaxNormalSpeed + l_HIO_swim_c0.m.field_0x50 + (float)(getSwimTimerRate() * l_HIO_swim_c0.m.field_0x74));
}
if (m34B8 == 1) {
if (mDirection == DIR_BACKWARD) {
mFrameCtrl[0].setRate(mFrameCtrl[0].getRate() * 0.5f);
}
@@ -603,7 +596,7 @@ BOOL daPy_lk_c::procSwimMove() {
if (mStickDistance <= 0.05f) {
procSwimWait_init(TRUE);
}
else if ((!m34B8 && mFrameCtrl->checkPass(20.0f)) || (m34B8 && mFrameCtrl->checkPass(0.0f))) {
else if ((mDirection == DIR_FORWARD && mFrameCtrl->checkPass(20.0f)) || (mDirection != DIR_FORWARD && mFrameCtrl->checkPass(0.0f))) {
seStartOnlyReverb(JA_SE_LK_SWIM);
}
+53 -57
View File
@@ -371,40 +371,36 @@ void daPy_lk_c::setJumpCutAtParam() {
/* 80155970-801559F0 .text getCutDirection__9daPy_lk_cFv */
int daPy_lk_c::getCutDirection() {
int iVar1;
s16 sVar2;
int direction;
if (mStickDistance <= 0.05f) {
iVar1 = 4;
direction = DIR_NONE;
} else {
s16 angle;
if (mpAttnActorLockOn != NULL) {
sVar2 = fopAcM_searchActorAngleY(this, mpAttnActorLockOn);
sVar2 = m34E8 - sVar2;
angle = m34E8 - fopAcM_searchActorAngleY(this, mpAttnActorLockOn);
} else {
sVar2 = m34E8 - m34DE;
angle = m34E8 - m34DE;
}
iVar1 = getDirectionFromAngle(sVar2);
direction = getDirectionFromAngle(angle);
}
return iVar1 + 1;
return direction + 1;
}
/* 801559F0-80155C3C .text changeCutProc__9daPy_lk_cFv */
int daPy_lk_c::changeCutProc() {
u32 bVar1;
if (m34C5 == 5 && changeSpecialBattle()) {
m34C4 = 0;
return true;
}
m34C4++;
int iVar4 = getCutDirection() - 1;
int direction = getCutDirection() - 1;
short sVar2;
if (mpAttention->Lockon() || mStickDistance <= 0.05f) {
sVar2 = shape_angle.y;
} else {
sVar2 = m34E8;
}
bVar1 = m34C4;
u32 bVar1 = m34C4;
if (bVar1 > 4) {
mCutCount = bVar1 - 2;
} else {
@@ -413,17 +409,17 @@ int daPy_lk_c::changeCutProc() {
bVar1 = m34C4;
if (bVar1 == 4) {
if (iVar4 == 3 || iVar4 == 0) {
if (direction == DIR_RIGHT || direction == DIR_FORWARD) {
procCutEA_init();
} else {
procCutEB_init();
}
} else if (bVar1 < 4) {
if (iVar4 == 0) {
if (direction == DIR_FORWARD) {
procCutF_init(sVar2);
} else if (iVar4 == 3) {
} else if (direction == DIR_RIGHT) {
procCutR_init(sVar2);
} else if (iVar4 == 4) {
} else if (direction == DIR_NONE) {
if (mpAttention->Lockon()) {
procCutA_init(sVar2);
} else {
@@ -433,19 +429,19 @@ int daPy_lk_c::changeCutProc() {
procCutL_init(sVar2);
}
} else if (bVar1 == 6) {
if (iVar4 == 0) {
if (direction == DIR_FORWARD) {
procCutTurn_init(1);
} else if (iVar4 == 4) {
} else if (direction == DIR_NONE) {
procCutExB_init();
} else if (iVar4 == 3) {
} else if (direction == DIR_RIGHT) {
procCutExMJ_init(1);
} else {
procCutExMJ_init(0);
}
} else if (bVar1 < 6) {
if (iVar4 == 0) {
if (direction == DIR_FORWARD) {
procCutExMJ_init(1);
} else if (iVar4 == 3) {
} else if (direction == DIR_RIGHT) {
procCutKesa_init();
} else {
procCutExA_init();
@@ -580,21 +576,21 @@ BOOL daPy_lk_c::procCutA() {
m3522 = daPy_HIO_cutA_c0::m.field_0x0;
if (frameCtrl.getRate() < 0.01f) {
mVelocity = 0.0f;
m34B8 = 3;
mDirection = DIR_RIGHT;
checkNextMode(0);
return true;
}
if (frameCtrl.getFrame() > daPy_HIO_cutA_c0::m.field_0xC) {
f32 dVar4 = mVelocity;
u8 uVar1 = m34B8;
u8 orig_direction = mDirection;
mVelocity = 0.0f;
m34B8 = 3;
mDirection = DIR_RIGHT;
if (checkNextMode(1)) {
return true;
}
mVelocity = dVar4;
m34B8 = uVar1;
mDirection = orig_direction;
}
if (changeCutReverseProc(ANM_CUTRER)) {
return true;
@@ -684,21 +680,21 @@ BOOL daPy_lk_c::procCutF() {
m3522 = daPy_HIO_cutF_c0::m.field_0x0;
if (frameCtrl.getRate() < 0.01f) {
mVelocity = 0.0f;
m34B8 = 3;
mDirection = DIR_RIGHT;
checkNextMode(0);
return true;
}
if (frameCtrl.getFrame() > daPy_HIO_cutF_c0::m.field_0xC) {
f32 dVar4 = mVelocity;
u8 uVar1 = m34B8;
u8 orig_direction = mDirection;
mVelocity = 0.0f;
m34B8 = 3;
mDirection = DIR_RIGHT;
if (checkNextMode(1)) {
return true;
}
mVelocity = dVar4;
m34B8 = uVar1;
mDirection = orig_direction;
}
if (changeCutReverseProc(ANM_CUTRER)) {
return true;
@@ -783,21 +779,21 @@ BOOL daPy_lk_c::procCutR() {
m3522 = daPy_HIO_cutR_c0::m.field_0x0;
if (frameCtrl.getRate() < 0.01f) {
mVelocity = 0.0f;
m34B8 = 3;
mDirection = DIR_RIGHT;
checkNextMode(0);
return true;
}
if (frameCtrl.getFrame() > daPy_HIO_cutR_c0::m.field_0xC) {
f32 dVar4 = mVelocity;
u8 uVar1 = m34B8;
u8 orig_direction = mDirection;
mVelocity = 0.0f;
m34B8 = 3;
mDirection = DIR_RIGHT;
if (checkNextMode(1)) {
return true;
}
mVelocity = dVar4;
m34B8 = uVar1;
mDirection = orig_direction;
}
if (changeCutReverseProc(ANM_CUTRER)) {
@@ -884,21 +880,21 @@ BOOL daPy_lk_c::procCutL() {
m3522 = daPy_HIO_cutL_c0::m.field_0x0;
if (frameCtrl.getRate() < 0.01f) {
mVelocity = 0.0f;
m34B8 = 2;
mDirection = DIR_LEFT;
checkNextMode(0);
return true;
}
if (frameCtrl.getFrame() > daPy_HIO_cutL_c0::m.field_0xC) {
f32 dVar4 = mVelocity;
u8 uVar1 = m34B8;
u8 orig_direction = mDirection;
mVelocity = 0.0f;
m34B8 = 2;
mDirection = DIR_LEFT;
if (checkNextMode(1)) {
return true;
}
mVelocity = dVar4;
m34B8 = uVar1;
mDirection = orig_direction;
}
if (changeCutReverseProc(ANM_CUTREL)) {
return true;
@@ -985,7 +981,7 @@ BOOL daPy_lk_c::procCutEA() {
m34D0--;
} else {
mVelocity = 0.0f;
m34B8 = 3;
mDirection = DIR_RIGHT;
checkNextMode(0);
return true;
}
@@ -1069,7 +1065,7 @@ BOOL daPy_lk_c::procCutEB() {
m34D0--;
} else {
mVelocity = 0.0f;
m34B8 = 2;
mDirection = DIR_LEFT;
checkNextMode(0);
return true;
}
@@ -1407,18 +1403,18 @@ BOOL daPy_lk_c::procCutTurn() {
if ((int)m34D0 > 0) {
m34D0--;
} else {
m34B8 = 3;
mDirection = DIR_RIGHT;
checkNextMode(0);
return true;
}
} else {
if (frameCtrl.getFrame() > daPy_HIO_cutTurn_c0::m.field_0x10) {
u8 uVar1 = m34B8;
m34B8 = 3;
u8 orig_direction = mDirection;
mDirection = DIR_RIGHT;
if (checkNextMode(1)) {
return true;
}
m34B8 = uVar1;
mDirection = orig_direction;
} else {
if (frameCtrl.getFrame() > 17.0f) {
m32E4.end();
@@ -1632,7 +1628,7 @@ BOOL daPy_lk_c::procCutTurnMove_init() {
mAnmRatioUpper[UPPER_MOVE0_e].getAnmTransform()->setFrame(mFrameCtrlUpper[UPPER_MOVE0_e].getFrame());
}
m3598 = 1.0f;
m34B8 = 0;
mDirection = DIR_FORWARD;
if (dComIfGs_isEventBit(0xb20)) {
bVar1 = true;
@@ -1676,42 +1672,42 @@ BOOL daPy_lk_c::procCutTurnMove() {
} else if (swordButton()) {
f32 dVar8 = 0.0f;
if (mStickDistance > 0.05f) {
s32 uVar5 = getDirectionFromAngle(m34E8 - m34E6);
int direction = getDirectionFromAngle(m34E8 - m34E6);
daPy_ANM dVar6 = (daPy_ANM)0xffff;
cLib_addCalcAngleS(&current.angle.y, m34E8, 4, 12000, 0x2000);
f32 in_f30;
if (((u32)m34B8 == 0) || ((u32)m34B8 == 1)) {
if (uVar5 == 2 || uVar5 == 3) {
if ((mDirection == DIR_FORWARD) || (mDirection == DIR_BACKWARD)) {
if (direction == DIR_LEFT || direction == DIR_RIGHT) {
dVar6 = ANM_CUTTURNPWLR;
in_f30 = daPy_HIO_cutTurnR_c0::m.field_0x24;
mVelocity *= 0.5f;
} else if (m34B8 != uVar5) {
} else if (mDirection != direction) {
mVelocity *= 0.5f;
}
} else if (uVar5 == 0 || uVar5 == 1) {
} else if (direction == DIR_FORWARD || direction == DIR_BACKWARD) {
dVar6 = ANM_CUTTURNPWFB;
in_f30 = daPy_HIO_cutTurnR_c0::m.field_0x1C;
mVelocity *= 0.5f;
} else if (m34B8 != uVar5) {
} else if (mDirection != direction) {
mVelocity *= 0.5f;
}
if (m34B8 == uVar5) {
if (mDirection == direction) {
dVar8 = daPy_HIO_move_c0::m.field_0x14 * mStickDistance;
} else {
m34B8 = (u8)uVar5;
mDirection = direction;
}
if (dVar6 != (daPy_ANM)0xffff) {
setSingleMoveAnime(dVar6, 0.0f, 0.0f, -1, in_f30);
}
}
setNormalSpeedF(dVar8, 0.5f, 2.0f, 0.25f);
if (m34B8 == 0) {
if (mDirection == DIR_FORWARD) {
dVar8 = daPy_HIO_cutTurnR_c0::m.field_0x18;
} else if (m34B8 == 1) {
} else if (mDirection == DIR_BACKWARD) {
dVar8 = -daPy_HIO_cutTurnR_c0::m.field_0x18;
} else if (m34B8 == 3) {
} else if (mDirection == DIR_RIGHT) {
dVar8 = -daPy_HIO_cutTurnR_c0::m.field_0x20;
} else {
} else { // DIR_LEFT
dVar8 = daPy_HIO_cutTurnR_c0::m.field_0x20;
}
f32 dVar7 = mVelocity / mMaxNormalSpeed;
+6 -7
View File
@@ -98,8 +98,8 @@ BOOL daPy_lk_c::procVomitWait() {
procVomitJump_init(0);
} else {
if (mStickDistance > 0.05f) {
int iVar1 = getDirectionFromAngle(m34DC);
if (iVar1 == 2) {
int direction = getDirectionFromAngle(m34DC);
if (direction == DIR_LEFT) {
s16 r5 = 512.0f * mStickDistance;
if (r5 > m34D4) {
s16 r0 = 64.0f * mStickDistance;
@@ -111,7 +111,7 @@ BOOL daPy_lk_c::procVomitWait() {
} else {
r30 = r5;
}
} else if (iVar1 == 3) {
} else if (direction == DIR_RIGHT) {
s16 r5 = -512.0f * mStickDistance;
if (r5 < m34D4) {
s16 r0 = 64.0f * mStickDistance;
@@ -210,13 +210,12 @@ BOOL daPy_lk_c::procVomitJump() {
cLib_addCalc(&mVelocity, daPy_HIO_vomit_c0::m.field_0x20, 0.5f, 2.0f, 0.1f);
} else {
f32 fVar2;
s32 iVar3;
if (!checkFanGlideProc(1)) {
if (mStickDistance > 0.05f) {
iVar3 = getDirectionFromShapeAngle();
if (iVar3 == 0) {
int direction = getDirectionFromShapeAngle();
if (direction == DIR_FORWARD) {
fVar2 = 1.0f;
} else if (iVar3 == 1) {
} else if (direction == DIR_BACKWARD) {
fVar2 = -1.0f;
} else {
fVar2 = 0.0f;
+8 -8
View File
@@ -88,20 +88,20 @@ BOOL daPy_lk_c::procWeaponNormalSwing() {
m34D0--;
} else {
mVelocity = 0.0f;
m34B8 = 3;
mDirection = DIR_RIGHT;
checkNextMode(0);
return true;
}
} else if (frameCtrl.getFrame() > daPy_HIO_cutBoko_c0::m.field_0x1C) {
f32 dVar4 = mVelocity;
u8 uVar1 = m34B8;
u8 orig_direction = mDirection;
mVelocity = 0.0f;
m34B8 = 3;
mDirection = DIR_RIGHT;
if (checkNextMode(1)) {
return true;
}
mVelocity = dVar4;
m34B8 = uVar1;
mDirection = orig_direction;
}
if (changeCutReverseProc(ANM_CUTRER)) {
return true;
@@ -174,19 +174,19 @@ BOOL daPy_lk_c::procWeaponSideSwing() {
}
if ((mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) || (mActorKeepEquip.getActor() == NULL)) {
mVelocity = 0.0f;
m34B8 = 3;
mDirection = DIR_RIGHT;
checkNextMode(0);
return true;
} else if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > daPy_HIO_cutBoko_c0::m.field_0x50) {
f32 dVar4 = mVelocity;
u8 uVar1 = m34B8;
u8 orig_direction = mDirection;
mVelocity = 0.0f;
m34B8 = 3;
mDirection = DIR_RIGHT;
if (checkNextMode(1)) {
return true;
}
mVelocity = dVar4;
m34B8 = uVar1;
mDirection = orig_direction;
}
if (changeCutReverseProc(ANM_CUTREL)) {
return true;
+36 -37
View File
@@ -33,7 +33,7 @@ void daPy_lk_c::setBlendWHideMoveAnime(f32 param_0) {
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) {
if (mDirection == DIR_LEFT) {
dVar5 = ANM_WALLWR;
} else {
dVar5 = ANM_WALLWL;
@@ -45,7 +45,7 @@ void daPy_lk_c::setBlendWHideMoveAnime(f32 param_0) {
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) {
if (mDirection == DIR_LEFT) {
dVar5 = ANM_WALLWRDW;
} else {
dVar5 = ANM_WALLWLDW;
@@ -72,7 +72,7 @@ void daPy_lk_c::setBlendWHideMoveAnime(f32 param_0) {
}
/* 801371E0-80137608 .text getWHideModePolygon__9daPy_lk_cFP4cXyzP4cXyzP4cXyzi */
cM3dGPla* daPy_lk_c::getWHideModePolygon(cXyz* param_0, cXyz* param_1, cXyz* param_2, int param_3) {
cM3dGPla* daPy_lk_c::getWHideModePolygon(cXyz* param_0, cXyz* param_1, cXyz* param_2, int direction) {
if (param_0 != NULL) {
mLinkLinChk.Set(param_0, param_1, this);
if (!dComIfG_Bgsp()->LineCross(&mLinkLinChk)) {
@@ -103,14 +103,14 @@ cM3dGPla* daPy_lk_c::getWHideModePolygon(cXyz* param_0, cXyz* param_1, cXyz* par
return NULL;
}
if (param_3 == 4) {
if (direction == DIR_NONE) {
f31 = 49.9f;
} else {
f31 = 99.8f;
}
s16 sVar7 = uVar3;
cXyz local_48;
if (param_3 != 3) {
if (direction != DIR_RIGHT) {
local_3c.set(
param_2->x + (f31 * triPla->GetNP()->z) + (triPla->GetNP()->x * 1.25f),
param_2->y,
@@ -129,7 +129,7 @@ cM3dGPla* daPy_lk_c::getWHideModePolygon(cXyz* param_0, cXyz* param_1, cXyz* par
}
}
if (param_3 != 2) {
if (direction != DIR_LEFT) {
local_3c.set(
param_2->x - (f31 * triPla->GetNP()->z) + (triPla->GetNP()->x * 1.25f),
param_2->y,
@@ -148,8 +148,8 @@ cM3dGPla* daPy_lk_c::getWHideModePolygon(cXyz* param_0, cXyz* param_1, cXyz* par
}
}
if (param_3 != 4) {
if (param_3 == 2) {
if (direction != DIR_NONE) {
if (direction == DIR_LEFT) {
sVar7 = sVar7 - shape_angle.y;
param_2->x += daPy_HIO_wall_c0::m.field_0x54 * triPla->GetNP()->z;
param_2->z -= daPy_HIO_wall_c0::m.field_0x54 * triPla->GetNP()->x;
@@ -217,12 +217,12 @@ BOOL daPy_lk_c::checkWHideFrontFloor(cXyz* param_0) {
}
/* 80137828-80137914 .text checkWHideModeChange__9daPy_lk_cFP4cXyz */
BOOL daPy_lk_c::checkWHideModeChange(cXyz* param_0) {
int daPy_lk_c::checkWHideModeChange(cXyz* param_0) {
if (!checkNoResetFlg0(daPyFlg0_UNK10000)) {
if (!checkWHideFrontFloor(param_0)) {
dComIfGp_setRStatus(0);
} else if (spActionButton()) {
return true;
return 1;
}
} else {
cXyz local_18;
@@ -234,7 +234,7 @@ BOOL daPy_lk_c::checkWHideModeChange(cXyz* param_0) {
if (checkModeFlg(ModeFlg_00000001) && mCurProc != daPyProc_WHIDE_PEEP_e) {
setTextureAnime(mAnmDataTable[ANM_WALL].mTexAnmIdx, 0);
}
return false;
return 0;
}
/* 80137914-80137A00 .text changeWHideEndProc__9daPy_lk_cFP4cXyz */
@@ -353,14 +353,13 @@ BOOL daPy_lk_c::procWHideWait() {
cXyz cStack_24;
cXyz cStack_3c;
cXyz cStack_48;
int iVar1;
getWHideBasePos(&cStack_3c);
if (changeWHideEndProc(&cStack_3c)) {
return true;
}
iVar1 = checkWHideModeChange(&cStack_3c);
int iVar1 = checkWHideModeChange(&cStack_3c);
if (iVar1 == 1) {
setSingleMoveAnime(
ANM_WALLDW,
@@ -388,22 +387,22 @@ BOOL daPy_lk_c::procWHideWait() {
if (mStickDistance > 0.05f && C_BG_MIN_HEIGHT != mAcch.GetGroundH() &&
dComIfG_Bgsp()->GetTriPla(mAcch.m_gnd)->GetNP()->y >= 0.5f)
{
iVar1 = getDirectionFromCurrentAngle();
if (iVar1 == 3 || iVar1 == 2) {
if (iVar1 == 3) {
int direction = getDirectionFromCurrentAngle();
if (direction == DIR_RIGHT || direction == DIR_LEFT) {
if (direction == DIR_RIGHT) {
current.angle.y = shape_angle.y + -0x4000;
m34B8 = 3;
mDirection = DIR_RIGHT;
} else {
current.angle.y = shape_angle.y + 0x4000;
m34B8 = 2;
mDirection = DIR_LEFT;
}
getWHideNextPos(&cStack_3c, &cStack_48);
iVar1 = checkWHideBackWall(&cStack_48);
if (iVar1 != 0 && (!checkNoResetFlg0(daPyFlg0_UNK10000) || checkWHideFrontFloor(&cStack_48))) {
BOOL iVar1 = checkWHideBackWall(&cStack_48);
if (iVar1 && (!checkNoResetFlg0(daPyFlg0_UNK10000) || checkWHideFrontFloor(&cStack_48))) {
return procWHideMove_init();
}
if (iVar1 == 0) {
if (!iVar1) {
cStack_48 += (cStack_48 - cStack_3c) * 0.25f;
mLinkLinChk.Set(&cStack_3c, &cStack_48, this);
if (!dComIfG_Bgsp()->LineCross(&mLinkLinChk)) {
@@ -420,7 +419,7 @@ BOOL daPy_lk_c::procWHideWait() {
/* 80138074-801380F0 .text procWHideMove_init__9daPy_lk_cFv */
BOOL daPy_lk_c::procWHideMove_init() {
commonProcInit(daPyProc_WHIDE_MOVE_e);
if (m34B8 == 2) {
if (mDirection == DIR_LEFT) {
current.angle.y = shape_angle.y + 0x4000;
} else {
current.angle.y = shape_angle.y + -0x4000;
@@ -451,23 +450,23 @@ BOOL daPy_lk_c::procWHideMove() {
cM3dGPla* triPla = dComIfG_Bgsp()->GetTriPla(mLinkLinChk);
s16 sVar8 = cM_atan2s(triPla->GetNP()->x, triPla->GetNP()->z);
f32 fVar2;
if (checkWHideModeChange(&acStack_24)) {
if (checkWHideModeChange(&acStack_24) != 0) {
fVar2 = 0.0f;
} else if (mStickDistance > 0.05f && C_BG_MIN_HEIGHT != mAcch.GetGroundH() &&
dComIfG_Bgsp()->GetTriPla(mAcch.m_gnd)->GetNP()->y >= 0.5f)
{
int iVar6 = getDirectionFromCurrentAngle();
if (iVar6 == 1) {
int direction = getDirectionFromCurrentAngle();
if (direction == DIR_BACKWARD) {
current.angle.y -= -0x8000;
mVelocity *= 0.5f;
if (m34B8 == 2) {
m34B8 = 3;
if (mDirection == DIR_LEFT) {
mDirection = DIR_RIGHT;
} else {
m34B8 = 2;
mDirection = DIR_LEFT;
}
setBlendWHideMoveAnime(2.0f);
}
if (iVar6 == 0 || iVar6 == 1) {
if (direction == DIR_FORWARD || direction == DIR_BACKWARD) {
fVar2 = daPy_HIO_move_c0::m.field_0x14;
fVar2 *= mStickDistance;
} else {
@@ -486,7 +485,7 @@ BOOL daPy_lk_c::procWHideMove() {
}
cXyz cStack_3c;
triPla = getWHideModePolygon(&acStack_24, &cStack_30, &cStack_3c, m34B8);
triPla = getWHideModePolygon(&acStack_24, &cStack_30, &cStack_3c, mDirection);
if (triPla != NULL) {
return procWHideReady_init(triPla, &cStack_3c);
}
@@ -501,7 +500,7 @@ BOOL daPy_lk_c::procWHideMove() {
}
cXyz cStack_48;
if (sVar8 != shape_angle.y && getWHideModePolygon(NULL, NULL, &cStack_48, m34B8) != NULL) {
if (sVar8 != shape_angle.y && getWHideModePolygon(NULL, NULL, &cStack_48, mDirection) != NULL) {
if ((s16)(current.angle.y - shape_angle.y) > 0) {
current.angle.y = sVar8 + 0x4000;
} else {
@@ -531,7 +530,7 @@ BOOL daPy_lk_c::procWHidePeep_init() {
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) {
if (mDirection == DIR_LEFT) {
dVar2 = ANM_WALLPR;
} else {
dVar2 = ANM_WALLPL;
@@ -541,7 +540,7 @@ BOOL daPy_lk_c::procWHidePeep_init() {
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) {
if (mDirection == DIR_LEFT) {
dVar2 = ANM_WALLPRDW;
} else {
dVar2 = ANM_WALLPLDW;
@@ -569,7 +568,7 @@ BOOL daPy_lk_c::procWHidePeep() {
}
if (std::fabsf(dVar3) < 0.01f) {
if (m34B8 == 2) {
if (mDirection == DIR_LEFT) {
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK40_e);
} else {
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK20_e);
@@ -581,13 +580,13 @@ BOOL daPy_lk_c::procWHidePeep() {
}
}
if (checkWHideModeChange(&cStack_38)) {
if (checkWHideModeChange(&cStack_38) != 0) {
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)) {
int direction = getDirectionFromCurrentAngle();
if ((direction != DIR_FORWARD && dVar3 > 0.0f) || (direction == 0 && dVar3 < 0.0f)) {
mFrameCtrlUnder[UNDER_MOVE0_e].setRate(-dVar3);
}
} else if (dVar3 > 0.0f) {