mirror of
https://github.com/zeldaret/tww.git
synced 2026-05-23 06:54:16 -04:00
Added enum for Link's movement direction
This commit is contained in:
@@ -54,7 +54,7 @@ If a translation unit isn't fully decompiled yet, then there's no way to know if
|
||||
|
||||
Avoid unnecessary includes, especially in header files. clangd will give you a warning saying "Included header is not used directly (fix available)" if you aren't using a header at all.
|
||||
|
||||
Forward declaring types where possible will reduce compile times. So instead of putting all the includes in a actor's header file, like so:
|
||||
Forward declaring types where possible will reduce compile times. So instead of putting all the includes in an actor's header file, like so:
|
||||
|
||||
```cpp
|
||||
#include "d/d_path.h"
|
||||
|
||||
+1
-1
@@ -159,7 +159,7 @@ The macro to use in this case is `JUT_ASSERT`, which handles checking a conditio
|
||||
JUT_ASSERT(0x181, modelData != NULL);
|
||||
```
|
||||
|
||||
Note that any variables used in an debug assertion must have their names match the assertion string exactly, like the `modelData` local variable in this case. This can sometimes even give you the official name of a member variable. Defines like `NULL` or `FALSE` work a bit differently and show up as their value (zero) in the assertion strings, instead of appearing the way the programmer actually wrote them.
|
||||
Note that any variables used in a debug assertion must have their names match the assertion string exactly, like the `modelData` local variable in this case. This can sometimes even give you the official name of a member variable. Defines like `NULL` or `FALSE` work a bit differently and show up as their value (zero) in the assertion strings, instead of appearing the way the programmer actually wrote them.
|
||||
|
||||
Other than those two macros, there's another common case that can cause code to look very different in Ghidra compared to how it was originally written: **inline functions**. These are used all over the place in TWW's codebase, and they're important to get right for several reasons, but as there are thousands of them we can't go over all of them individually in this guide. Instead, let's go over what the workflow for finding them on your own will look like.
|
||||
|
||||
|
||||
@@ -888,6 +888,17 @@ public:
|
||||
/* 0x40 */ BTN_R = (1 << 6),
|
||||
};
|
||||
|
||||
/**
|
||||
* Moving direction calculated from an angle
|
||||
*/
|
||||
enum daPy_lk_DIR {
|
||||
/* 0x0 */ DIR_FORWARD,
|
||||
/* 0x1 */ DIR_BACKWARD,
|
||||
/* 0x2 */ DIR_LEFT,
|
||||
/* 0x3 */ DIR_RIGHT,
|
||||
/* 0x4 */ DIR_NONE,
|
||||
};
|
||||
|
||||
typedef BOOL (daPy_lk_c::*ProcFunc)();
|
||||
|
||||
void seStartOnlyReverb(u32);
|
||||
@@ -1351,9 +1362,9 @@ public:
|
||||
void setClimbShapeOffset();
|
||||
int getClimbDirectionFromAngle();
|
||||
void changeClimbMoveProc(int);
|
||||
int setMoveBGCorrectClimb();
|
||||
BOOL checkBgCorrectClimbMove(cXyz*, cXyz*);
|
||||
BOOL checkBgClimbMove();
|
||||
BOOL setMoveBGCorrectClimb();
|
||||
void checkBgCorrectClimbMove(cXyz*, cXyz*);
|
||||
void checkBgClimbMove();
|
||||
void procClimbUpStart_init_sub();
|
||||
BOOL procClimbUpStart_init();
|
||||
BOOL procClimbUpStart();
|
||||
@@ -1369,7 +1380,7 @@ public:
|
||||
void getWHideNextPos(cXyz*, cXyz*);
|
||||
BOOL checkWHideBackWall(cXyz*);
|
||||
BOOL checkWHideFrontFloor(cXyz*);
|
||||
BOOL checkWHideModeChange(cXyz*);
|
||||
int checkWHideModeChange(cXyz*);
|
||||
int changeWHideEndProc(cXyz*);
|
||||
BOOL procWHideReady_init(cM3dGPla*, cXyz*);
|
||||
BOOL procWHideReady();
|
||||
@@ -2025,7 +2036,7 @@ public:
|
||||
/* 0x3490 */ dAttList_c* mpAttnEntryZ;
|
||||
/* 0x3494 */ char* m3494;
|
||||
/* 0x3498 */ LIGHT_INFLUENCE mLightInfluence;
|
||||
/* 0x34B8 */ u8 m34B8;
|
||||
/* 0x34B8 */ u8 mDirection;
|
||||
/* 0x34B9 */ u8 mFrontWallType;
|
||||
/* 0x34BA */ u8 m34BA;
|
||||
/* 0x34BB */ u8 mCurrItemHeapIdx;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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, ¤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.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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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(¤t.pos.x, m370C.x, 0.5f, 0.5f, 0.05f);
|
||||
cLib_addCalc(¤t.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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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(¤t.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(¤t.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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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(¤t.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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user