mirror of
https://github.com/zeldaret/tww.git
synced 2026-08-14 20:30:18 -04:00
hookshot and player_hook cleanup, inlines
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
#include "d/d_cc_d.h"
|
||||
#include "d/d_bg_s_lin_chk.h"
|
||||
#include "d/d_bg_s_gnd_chk.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
|
||||
class daHookshot_shape : public J3DPacket {
|
||||
public:
|
||||
@@ -18,25 +19,34 @@ class daHookshot_c : public fopAc_ac_c {
|
||||
public:
|
||||
typedef BOOL (daHookshot_c::*ProcFunc)();
|
||||
|
||||
enum Mode {
|
||||
Mode_Wait = 0,
|
||||
Mode_Shot = 1,
|
||||
Mode_Return = 2,
|
||||
Mode_Pull = 3,
|
||||
};
|
||||
|
||||
int getChainCnt() { return mChainCnt; }
|
||||
cXyz getMoveVec() const { return mMoveVec; }
|
||||
fpc_ProcID getCarryActorID() const { return mCarryActorID; }
|
||||
void getHookAngle() {}
|
||||
const csXyz* getHookAngle() { return &mHookAngle; }
|
||||
MtxP getMtxTop() { return mMtx; }
|
||||
void getObjHookFlg() const {}
|
||||
void getSightHit() const {}
|
||||
void getObjSightCrossPos() {}
|
||||
void onObjHookFlg() {}
|
||||
void offObjHookFlg() {}
|
||||
void checkPull() {}
|
||||
void checkReturn() {}
|
||||
void checkShipRideFlg() const {}
|
||||
void checkShot() {}
|
||||
void checkWait() {}
|
||||
void setObjSightCrossPos(const cXyz*) {}
|
||||
void setCarryOffset(const cXyz*) {}
|
||||
void setReturn() {}
|
||||
void setShot() {}
|
||||
u32 getSightHit() const { return const_cast<dCcD_Cps*>(&mSightCps)->ChkAtHit(); }
|
||||
const cXyz* getObjSightCrossPos() { return &mObjSightCrossPos; }
|
||||
void setObjSightCrossPos(const cXyz* pos) { mObjSightCrossPos = *pos; }
|
||||
void setCarryOffset(const cXyz* offset) { mCarryOffset = *offset; }
|
||||
|
||||
bool checkWait() { return fopAcM_GetParam(this) == Mode_Wait; }
|
||||
bool checkShot() { return fopAcM_GetParam(this) == Mode_Shot; }
|
||||
void setShot() { fopAcM_SetParam(this, Mode_Shot); }
|
||||
bool checkReturn() { return fopAcM_GetParam(this) == Mode_Return; }
|
||||
void setReturn() { fopAcM_SetParam(this, Mode_Return); }
|
||||
bool checkPull() { return fopAcM_GetParam(this) == Mode_Pull; }
|
||||
|
||||
BOOL getObjHookFlg() const { return mObjHookFlg; }
|
||||
void onObjHookFlg() { mObjHookFlg = TRUE; }
|
||||
void offObjHookFlg() { mObjHookFlg = FALSE; }
|
||||
bool checkShipRideFlg() const { return mShipRideFlg; }
|
||||
|
||||
daHookshot_c() {}
|
||||
BOOL draw();
|
||||
@@ -49,28 +59,26 @@ public:
|
||||
BOOL hookshot_delete();
|
||||
cPhs_State create();
|
||||
|
||||
public:
|
||||
private:
|
||||
/* 0x290 */ daHookshot_shape mShape;
|
||||
/* 0x2A0 */ bool m2A0;
|
||||
/* 0x2A1 */ u8 m2A1;
|
||||
/* 0x2A2 */ u8 m2A2;
|
||||
/* 0x2A2 */ bool mShipRideFlg;
|
||||
/* 0x2A3 */ u8 m2A3;
|
||||
/* 0x2A4 */ s16 m2A4;
|
||||
/* 0x2A6 */ u16 m2A6;
|
||||
/* 0x2A8 */ int mChainCnt;
|
||||
/* 0x2AC */ u32 mMtrlSndId;
|
||||
/* 0x2B0 */ int m2B0;
|
||||
/* 0x2B4 */ s16 m2B4;
|
||||
/* 0x2B6 */ s16 m2B6;
|
||||
/* 0x2B8 */ s16 m2B8;
|
||||
/* 0x2B0 */ BOOL mObjHookFlg;
|
||||
/* 0x2B4 */ csXyz mHookAngle;
|
||||
/* 0x2BA */ csXyz m2BA;
|
||||
/* 0x2C0 */ cXyz mMoveVec;
|
||||
/* 0x2CC */ cXyz m2CC;
|
||||
/* 0x2CC */ cXyz mObjSightCrossPos;
|
||||
/* 0x2D8 */ dBgS_RopeLinChk mLinChk;
|
||||
/* 0x344 */ dBgS_ObjGndChk mGndChk;
|
||||
/* 0x398 */ dCcD_Stts mStts;
|
||||
/* 0x3D4 */ dCcD_Cps mCps;
|
||||
/* 0x50C */ cXyz m50C;
|
||||
/* 0x3D4 */ dCcD_Cps mSightCps;
|
||||
/* 0x50C */ cXyz mCarryOffset;
|
||||
/* 0x518 */ fpc_ProcID mCarryActorID;
|
||||
/* 0x51C */ Mtx mMtx;
|
||||
/* 0x54C */ ProcFunc mCurrProcFunc;
|
||||
|
||||
@@ -257,7 +257,10 @@ public:
|
||||
static u8 m_morf_frame;
|
||||
|
||||
static void onMabaFlg() { m_maba_flg = 1; }
|
||||
static void offMabaFlg() { m_maba_flg = 0; }
|
||||
static void offMabaFlg() {
|
||||
m_maba_flg = 0;
|
||||
m_maba_timer = 1;
|
||||
}
|
||||
static void decMabaTimer() { cLib_calcTimer(&m_maba_timer); }
|
||||
static void decMorfFrame() { cLib_calcTimer(&m_morf_frame); }
|
||||
static void getEyeMoveFlg() {}
|
||||
|
||||
@@ -113,13 +113,13 @@ static BOOL daHookshot_Draw(daHookshot_c* i_this) {
|
||||
void daHookshot_rockLineCallback(fopAc_ac_c* hookshot_actor, dCcD_GObjInf* objInf, fopAc_ac_c* collided_actor, dCcD_GObjInf*) {
|
||||
daHookshot_c* i_this = (daHookshot_c*)hookshot_actor;
|
||||
f32 f31 = objInf->GetAtHitPosP()->abs2(i_this->current.pos);
|
||||
f32 f1 = i_this->m2CC.abs2(i_this->current.pos);
|
||||
f32 f1 = i_this->getObjSightCrossPos()->abs2(i_this->current.pos);
|
||||
if (f1 > f31) {
|
||||
i_this->m2CC = *objInf->GetAtHitPosP();
|
||||
i_this->setObjSightCrossPos(objInf->GetAtHitPosP());
|
||||
if (fopAcM_CheckStatus(collided_actor, fopAcStts_UNK80000_e | fopAcStts_UNK200000_e | fopAcStts_UNK10000000_e)) {
|
||||
i_this->m2B0 = 1;
|
||||
i_this->onObjHookFlg();
|
||||
} else {
|
||||
i_this->m2B0 = 0;
|
||||
i_this->offObjHookFlg();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -127,12 +127,12 @@ void daHookshot_rockLineCallback(fopAc_ac_c* hookshot_actor, dCcD_GObjInf* objIn
|
||||
/* 800F13E8-800F14CC .text procWait_init__12daHookshot_cFi */
|
||||
BOOL daHookshot_c::procWait_init(BOOL playSe) {
|
||||
daPy_lk_c* link = daPy_getPlayerLinkActorClass();
|
||||
fopAcM_SetParam(this, 0);
|
||||
fopAcM_SetParam(this, Mode_Wait);
|
||||
mCurrProcFunc = &daHookshot_c::procWait;
|
||||
mChainCnt = 0;
|
||||
current.pos = link->getHookshotRootPos();
|
||||
mCarryActorID = fpcM_ERROR_PROCESS_ID_e;
|
||||
m2B0 = 0;
|
||||
mObjHookFlg = FALSE;
|
||||
if (playSe) {
|
||||
mDoAud_seStart(JA_SE_LK_HS_WIND_UP_FIN, &link->current.pos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
|
||||
}
|
||||
@@ -148,61 +148,61 @@ BOOL daHookshot_c::procWait() {
|
||||
mMtx[0][3] = current.pos.x;
|
||||
mMtx[1][3] = current.pos.y;
|
||||
mMtx[2][3] = current.pos.z;
|
||||
m2B0 = 0;
|
||||
mObjHookFlg = FALSE;
|
||||
|
||||
if (fopAcM_GetParam(this) == 1) {
|
||||
if (fopAcM_GetParam(this) == Mode_Shot) {
|
||||
int angleY = link->getBodyAngleY() + link->shape_angle.y;
|
||||
int angleX = link->getBodyAngleX();
|
||||
mMoveVec.x = cM_ssin(angleY) * cM_scos(angleX);
|
||||
mMoveVec.y = -cM_ssin(angleX);
|
||||
mMoveVec.z = cM_scos(angleY) * cM_scos(angleX);
|
||||
mCps.ResetAtHit();
|
||||
mCps.OffAtNoTgHitInfSet();
|
||||
mCps.SetAtHitCallback(NULL);
|
||||
mSightCps.ResetAtHit();
|
||||
mSightCps.OffAtNoTgHitInfSet();
|
||||
mSightCps.SetAtHitCallback(NULL);
|
||||
|
||||
cXyz r1_3C = current.pos - mMoveVec * 60.0f;
|
||||
mLinChk.Set(&r1_3C, ¤t.pos, this);
|
||||
m2A0 = true;
|
||||
if (dComIfG_Bgsp()->LineCross(&mLinChk)) {
|
||||
if (dComIfG_Bgsp()->ChkPolyHSStick(mLinChk)) {
|
||||
fopAcM_SetParam(this, 3);
|
||||
m2A2 = 0;
|
||||
fopAcM_SetParam(this, Mode_Pull);
|
||||
mShipRideFlg = false;
|
||||
mCurrProcFunc = &daHookshot_c::procPlayerPull;
|
||||
cM3dGPla* triPla = dComIfG_Bgsp()->GetTriPla(mLinChk);
|
||||
m2B4 = cM_atan2s(triPla->GetNP()->y, triPla->GetNP()->absXZ());
|
||||
m2B6 = cM_atan2s(-triPla->GetNP()->x, -triPla->GetNP()->z);
|
||||
m2B8 = 0;
|
||||
mHookAngle.x = cM_atan2s(triPla->GetNP()->y, triPla->GetNP()->absXZ());
|
||||
mHookAngle.y = cM_atan2s(-triPla->GetNP()->x, -triPla->GetNP()->z);
|
||||
mHookAngle.z = 0;
|
||||
mMoveVec = cXyz::Zero;
|
||||
} else {
|
||||
fopAcM_SetParam(this, 2);
|
||||
fopAcM_SetParam(this, Mode_Return);
|
||||
mCurrProcFunc = &daHookshot_c::procReturn;
|
||||
}
|
||||
} else {
|
||||
mMoveVec *= 7.0f;
|
||||
|
||||
mCps.SetStartEnd(r1_3C, current.pos);
|
||||
mCps.SetR(5.0f);
|
||||
mCps.CalcAtVec();
|
||||
dComIfG_Ccsp()->Set(&mCps);
|
||||
mSightCps.SetStartEnd(r1_3C, current.pos);
|
||||
mSightCps.SetR(5.0f);
|
||||
mSightCps.CalcAtVec();
|
||||
dComIfG_Ccsp()->Set(&mSightCps);
|
||||
// Using the inline breaks the match.
|
||||
// dComIfG_Ccsp()->SetMass(&mCps, 1);
|
||||
g_dComIfG_gameInfo.play.mCcS.SetMass(&mCps, 1);
|
||||
g_dComIfG_gameInfo.play.mCcS.SetMass(&mSightCps, 1);
|
||||
|
||||
m2A3 = 0;
|
||||
mCurrProcFunc = &daHookshot_c::procShot;
|
||||
}
|
||||
} else {
|
||||
mCps.OnAtNoTgHitInfSet();
|
||||
m2CC.set(
|
||||
mSightCps.OnAtNoTgHitInfSet();
|
||||
mObjSightCrossPos.set(
|
||||
current.pos.x + cM_ssin(link->shape_angle.y) * 1500.0f * cM_scos(link->getBodyAngleX()),
|
||||
current.pos.y - cM_ssin(link->getBodyAngleX()) * 1500.0f,
|
||||
current.pos.z + cM_scos(link->shape_angle.y) * 1500.0f * cM_scos(link->getBodyAngleX())
|
||||
);
|
||||
mCps.SetStartEnd(current.pos, m2CC);
|
||||
mCps.SetR(5.0f);
|
||||
mCps.CalcAtVec();
|
||||
mCps.SetAtHitCallback(daHookshot_rockLineCallback);
|
||||
dComIfG_Ccsp()->Set(&mCps);
|
||||
mSightCps.SetStartEnd(current.pos, mObjSightCrossPos);
|
||||
mSightCps.SetR(5.0f);
|
||||
mSightCps.CalcAtVec();
|
||||
mSightCps.SetAtHitCallback(daHookshot_rockLineCallback);
|
||||
dComIfG_Ccsp()->Set(&mSightCps);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
@@ -296,8 +296,8 @@ cPhs_State daHookshot_c::create() {
|
||||
gravity = -5.0f;
|
||||
|
||||
mStts.Init(10, 0xFF, this);
|
||||
mCps.Set(l_at_cps_src);
|
||||
mCps.SetStts(&mStts);
|
||||
mSightCps.Set(l_at_cps_src);
|
||||
mSightCps.SetStts(&mStts);
|
||||
|
||||
int roomNo = dComIfGp_roomControl_getStayNo();
|
||||
tevStr.mRoomNo = roomNo;
|
||||
|
||||
@@ -88,8 +88,7 @@ BOOL daPy_lk_c::procFoodThrow_init() {
|
||||
current.angle.y = shape_angle.y;
|
||||
mVelocity = 0.0f;
|
||||
|
||||
daPy_matAnm_c::m_maba_flg = 0;
|
||||
daPy_matAnm_c::m_maba_timer = 1;
|
||||
daPy_matAnm_c::offMabaFlg();
|
||||
setSingleMoveAnime(
|
||||
ANM_ESAMAKI,
|
||||
daPy_HIO_food_c0::m.field_0x4,
|
||||
|
||||
@@ -19,25 +19,24 @@
|
||||
/* 8014AB5C-8014ABA0 .text checkHookshotReturn__9daPy_lk_cFv */
|
||||
BOOL daPy_lk_c::checkHookshotReturn() {
|
||||
daHookshot_c* hookshot = (daHookshot_c*)mActorKeepEquip.getActor();
|
||||
|
||||
if ((mEquipItem != dItem_HOOKSHOT_e) || (hookshot == NULL)) {
|
||||
return false;
|
||||
} else {
|
||||
return (fopAcM_GetParam(hookshot) == 3) || (fopAcM_GetParam(hookshot) == 2);
|
||||
}
|
||||
}
|
||||
|
||||
/* 8014ABA0-8014ABF4 .text setHookshotCarryOffset__9daPy_lk_cFUiPC4cXyz */
|
||||
BOOL daPy_lk_c::setHookshotCarryOffset(fpc_ProcID param_0, const cXyz* param_1) {
|
||||
daHookshot_c* hookshot = (daHookshot_c*)mActorKeepEquip.getActor();
|
||||
|
||||
if (mEquipItem != dItem_HOOKSHOT_e || hookshot == NULL) {
|
||||
return false;
|
||||
}
|
||||
if (param_0 != hookshot->mCarryActorID) {
|
||||
|
||||
return hookshot->checkPull() || hookshot->checkReturn();
|
||||
}
|
||||
|
||||
/* 8014ABA0-8014ABF4 .text setHookshotCarryOffset__9daPy_lk_cFUiPC4cXyz */
|
||||
BOOL daPy_lk_c::setHookshotCarryOffset(fpc_ProcID carryActorID, const cXyz* offset) {
|
||||
daHookshot_c* hookshot = (daHookshot_c*)mActorKeepEquip.getActor();
|
||||
if (mEquipItem != dItem_HOOKSHOT_e || hookshot == NULL) {
|
||||
return false;
|
||||
}
|
||||
hookshot->m50C = *param_1;
|
||||
if (carryActorID != hookshot->getCarryActorID()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
hookshot->setCarryOffset(offset);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -56,7 +55,6 @@ void daPy_lk_c::setHookshotModel() {
|
||||
|
||||
/* 8014ACCC-8014B02C .text setHookshotSight__9daPy_lk_cFv */
|
||||
void daPy_lk_c::setHookshotSight() {
|
||||
/* Nonmatching - floats */
|
||||
cXyz sp50(
|
||||
cM_ssin(shape_angle.y) * cM_scos(mBodyAngle.x),
|
||||
-cM_ssin(mBodyAngle.x),
|
||||
@@ -67,29 +65,32 @@ void daPy_lk_c::setHookshotSight() {
|
||||
sp38 = mHookshotRootPos + sp50 * 1500.0f;
|
||||
sp44 = mHookshotRootPos - sp50 * 60.0f;
|
||||
mRopeLinChk.Set(&sp44, &sp38, this);
|
||||
|
||||
daHookshot_c* hookshot = (daHookshot_c*)mActorKeepEquip.getActor();
|
||||
BOOL r30 = dComIfG_Bgsp()->LineCross(&mRopeLinChk);
|
||||
mSightPacket.onDrawFlg();
|
||||
if (r30 || hookshot->mCps.ChkAtHit()) {
|
||||
if (r30 || hookshot->getSightHit()) {
|
||||
BOOL r3;
|
||||
if (r30 && mHookshotRootPos.abs2(current.pos) > mRopeLinChk.GetCross().abs2(current.pos)) {
|
||||
mSightPacket.setPos(&mHookshotRootPos);
|
||||
r3 = FALSE;
|
||||
} else if (!r30) {
|
||||
mSightPacket.setPos(&hookshot->m2CC);
|
||||
mSightPacket.setPos(hookshot->getObjSightCrossPos());
|
||||
r3 = TRUE;
|
||||
} else if (!hookshot->mCps.ChkAtHit()) {
|
||||
} else if (!hookshot->getSightHit()) {
|
||||
mSightPacket.setPos(&mRopeLinChk.GetCross());
|
||||
r3 = FALSE;
|
||||
} else if (mRopeLinChk.GetCross().abs2(mHookshotRootPos) > hookshot->m2CC.abs2(mHookshotRootPos)) {
|
||||
mSightPacket.setPos(&hookshot->m2CC);
|
||||
} else if (mRopeLinChk.GetCross().abs2(mHookshotRootPos) >
|
||||
hookshot->getObjSightCrossPos()->abs2(mHookshotRootPos))
|
||||
{
|
||||
mSightPacket.setPos(hookshot->getObjSightCrossPos());
|
||||
r3 = TRUE;
|
||||
} else {
|
||||
mSightPacket.setPos(&mRopeLinChk.GetCross());
|
||||
r3 = FALSE;
|
||||
}
|
||||
|
||||
if ((r3 && hookshot->m2B0) || (!r3 && dComIfG_Bgsp()->ChkPolyHSStick(mRopeLinChk))) {
|
||||
if ((r3 && hookshot->getObjHookFlg()) || (!r3 && dComIfG_Bgsp()->ChkPolyHSStick(mRopeLinChk))) {
|
||||
if (mSightPacket.getLockFlg()) {
|
||||
mSightPacket.incFrame();
|
||||
if (mSightPacket.checkSEFrame()) {
|
||||
@@ -117,66 +118,64 @@ void daPy_lk_c::freeHookshotItem() {
|
||||
if (hookshot == NULL) {
|
||||
return;
|
||||
}
|
||||
if (fopAcM_GetParam(hookshot) == 0) {
|
||||
if (hookshot->checkWait()) {
|
||||
return;
|
||||
}
|
||||
fopAcM_SetParam(hookshot, 2);
|
||||
hookshot->setReturn();
|
||||
}
|
||||
|
||||
/* 8014B05C-8014B2B8 .text checkNextActionHookshotReady__9daPy_lk_cFv */
|
||||
BOOL daPy_lk_c::checkNextActionHookshotReady() {
|
||||
/* Nonmatching - sbss */
|
||||
static JGeometry::TVec3<f32> eff_scale(1.0f, 1.0f, 0.0f);
|
||||
static JGeometry::TVec3<f32> eff_dscale(0.2f, 0.2f, 0.2f);
|
||||
static JGeometry::TVec3<f32> eff_pscale(0.4f, 0.4f, 0.4f);
|
||||
daHookshot_c* hookshot = (daHookshot_c*)mActorKeepEquip.getActor();
|
||||
|
||||
if (fopAcM_GetParam(hookshot) == 0) {
|
||||
if (((itemButton()) && (mEquipItem == getReadyItem())) && (m355C == 0)) {
|
||||
if (hookshot->checkWait()) {
|
||||
if (itemButton() && mEquipItem == getReadyItem() && m355C == 0) {
|
||||
m355E = 1;
|
||||
} else {
|
||||
if ((!itemButton()) && (m355E != 0)) {
|
||||
m355E = 0;
|
||||
fopAcM_SetParam(hookshot, 1);
|
||||
mVelocity = 0.0f;
|
||||
daPy_matAnm_c::m_maba_flg = 0;
|
||||
daPy_matAnm_c::m_maba_timer = 1;
|
||||
seStartOnlyReverb(JA_SE_LK_HS_SHOOT);
|
||||
voiceStart(41);
|
||||
resetFootEffect();
|
||||
if (m34B8 != 2) {
|
||||
m34B8 = 2;
|
||||
}
|
||||
current.angle.y = shape_angle.y + 0x4000;
|
||||
onModeFlg(ModeFlg_00000001);
|
||||
m3598 = 0.0f;
|
||||
setBlendAtnMoveAnime(daPy_HIO_basic_c0::m.field_0xC);
|
||||
mFrameCtrlUnder[UNDER_MOVE0_e].setRate(0.0f);
|
||||
mFrameCtrlUnder[UNDER_MOVE1_e].setRate(0.0f);
|
||||
mFrameCtrlUpper[UPPER_MOVE0_e].setRate(daPy_HIO_atnMove_c0::m.field_0x24);
|
||||
mFrameCtrlUpper[UPPER_MOVE1_e].setRate(0.0f);
|
||||
mFrameCtrlUpper[UPPER_MOVE2_e].setRate(0.0f);
|
||||
return true;
|
||||
} else if (!itemButton() && m355E != 0) {
|
||||
m355E = 0;
|
||||
hookshot->setShot();
|
||||
mVelocity = 0.0f;
|
||||
daPy_matAnm_c::offMabaFlg();
|
||||
seStartOnlyReverb(JA_SE_LK_HS_SHOOT);
|
||||
voiceStart(41);
|
||||
resetFootEffect();
|
||||
if (m34B8 != 2) {
|
||||
m34B8 = 2;
|
||||
}
|
||||
current.angle.y = shape_angle.y + 0x4000;
|
||||
onModeFlg(ModeFlg_00000001);
|
||||
m3598 = 0.0f;
|
||||
setBlendAtnMoveAnime(daPy_HIO_basic_c0::m.field_0xC);
|
||||
mFrameCtrlUnder[UNDER_MOVE0_e].setRate(0.0f);
|
||||
mFrameCtrlUnder[UNDER_MOVE1_e].setRate(0.0f);
|
||||
mFrameCtrlUpper[UPPER_MOVE0_e].setRate(daPy_HIO_atnMove_c0::m.field_0x24);
|
||||
mFrameCtrlUpper[UPPER_MOVE1_e].setRate(0.0f);
|
||||
mFrameCtrlUpper[UPPER_MOVE2_e].setRate(0.0f);
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
if (fopAcM_GetParam(hookshot) == 1) {
|
||||
if ((itemTrigger()) && (mEquipItem == getReadyItem())) {
|
||||
fopAcM_SetParam(hookshot, 2);
|
||||
if (hookshot->checkShot()) {
|
||||
if (itemTrigger() && mEquipItem == getReadyItem()) {
|
||||
hookshot->setReturn();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if (fopAcM_GetParam(hookshot) == 2) {
|
||||
if (hookshot->checkReturn()) {
|
||||
return true;
|
||||
}
|
||||
if (fopAcM_GetParam(hookshot) == 3) {
|
||||
if (hookshot->checkPull()) {
|
||||
procHookshotFly_init();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (m355C > 0) {
|
||||
m355C--;
|
||||
}
|
||||
|
||||
return cancelItemUpperReadyAnime();
|
||||
}
|
||||
|
||||
@@ -219,7 +218,7 @@ BOOL daPy_lk_c::procHookshotSubject() {
|
||||
}
|
||||
|
||||
daHookshot_c* hookshot = (daHookshot_c*)mActorKeepEquip.getActor();
|
||||
if (fopAcM_GetParam(hookshot) == 0) {
|
||||
if (hookshot->checkWait()) {
|
||||
dComIfGp_setDoStatus(7);
|
||||
}
|
||||
|
||||
@@ -229,13 +228,11 @@ BOOL daPy_lk_c::procHookshotSubject() {
|
||||
|
||||
mSightPacket.offDrawFlg();
|
||||
|
||||
if (checkNextMode(0) == 0 && fopAcM_GetParam(hookshot) == 0 && setBodyAngleToCamera() &&
|
||||
fopAcM_GetParam(hookshot) == 0)
|
||||
{
|
||||
if (checkNextMode(0) == 0 && hookshot->checkWait() && setBodyAngleToCamera() && hookshot->checkWait()) {
|
||||
setHookshotSight();
|
||||
}
|
||||
|
||||
if (fopAcM_GetParam(hookshot) == 0) {
|
||||
if (hookshot->checkWait()) {
|
||||
dComIfGp_clearPlayerStatus0(0, daPyStts0_UNK40000_e);
|
||||
} else {
|
||||
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK40000_e);
|
||||
@@ -258,7 +255,7 @@ BOOL daPy_lk_c::procHookshotMove_init() {
|
||||
current.angle.y = shape_angle.y + 0x4000;
|
||||
}
|
||||
daHookshot_c* hookshot = (daHookshot_c*)mActorKeepEquip.getActor();
|
||||
if (fopAcM_GetParam(hookshot) == 0) {
|
||||
if (hookshot->checkWait()) {
|
||||
setActAnimeUpper(LKANM_BCK_HOOKSHOTWAIT, UPPER_MOVE2_e, 1.0f, 0.0f, -1, -1.0f);
|
||||
setBlendAtnMoveAnime(daPy_HIO_basic_c0::m.field_0xC);
|
||||
}
|
||||
@@ -271,9 +268,10 @@ BOOL daPy_lk_c::procHookshotMove() {
|
||||
if (!checkItemModeActorPointer()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
daHookshot_c* hookshot = (daHookshot_c*)mActorKeepEquip.getActor();
|
||||
mSightPacket.offDrawFlg();
|
||||
if (fopAcM_GetParam(hookshot) == 0) {
|
||||
if (hookshot->checkWait()) {
|
||||
if (mpAttnActorLockOn != NULL) {
|
||||
setSpeedAndAngleAtnActor();
|
||||
} else if (m355E == 0 && !mpAttention->Lockon()) {
|
||||
@@ -294,7 +292,7 @@ BOOL daPy_lk_c::procHookshotMove() {
|
||||
} else {
|
||||
offModeFlg(ModeFlg_00000001);
|
||||
}
|
||||
if (fopAcM_GetParam(hookshot) == 0) {
|
||||
if (hookshot->checkWait()) {
|
||||
setBlendAtnMoveAnime(fVar1);
|
||||
setBodyAngleXReadyAnime();
|
||||
}
|
||||
@@ -304,7 +302,6 @@ BOOL daPy_lk_c::procHookshotMove() {
|
||||
|
||||
/* 8014B74C-8014B854 .text procHookshotFly_init__9daPy_lk_cFv */
|
||||
BOOL daPy_lk_c::procHookshotFly_init() {
|
||||
/* Nonmatching - floats */
|
||||
daHookshot_c* hookshot = (daHookshot_c*)mActorKeepEquip.getActor();
|
||||
commonProcInit(daPyProc_HOOKSHOT_FLY_e);
|
||||
for (int i = 0; i < 3; i++) {
|
||||
@@ -334,11 +331,11 @@ BOOL daPy_lk_c::procHookshotFly() {
|
||||
}
|
||||
|
||||
daHookshot_c* hookshot = (daHookshot_c*)mActorKeepEquip.getActor();
|
||||
if (fopAcM_GetParam(hookshot) != 3) {
|
||||
if ((hookshot->m2A2 != 0) && (procShipJumpRide_init())) {
|
||||
if (!hookshot->checkPull()) {
|
||||
if (hookshot->checkShipRideFlg() && procShipJumpRide_init()) {
|
||||
return true;
|
||||
}
|
||||
if ((!mAcch.ChkGroundHit()) && (changeFrontWallTypeProc())) {
|
||||
if (!mAcch.ChkGroundHit() && changeFrontWallTypeProc()) {
|
||||
voiceStart(10);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -628,7 +628,6 @@ void daPy_lk_c::setTextureScrollResource(J3DAnmTextureSRTKey* btk, int r31) {
|
||||
}
|
||||
daPy_matAnm_c::setMorfFrame(3);
|
||||
daPy_matAnm_c::offMabaFlg();
|
||||
daPy_matAnm_c::setMabaTimer(1);
|
||||
daPy_matAnm_c::setMabaTimer(75.0f + cM_rndF(30.0f));
|
||||
}
|
||||
|
||||
@@ -2283,9 +2282,9 @@ BOOL daPy_lk_c::commonProcInit(daPy_PROC proc) {
|
||||
m35EC = 0.0f;
|
||||
|
||||
if (mEquipItem == dItem_SKULL_HAMMER_e) {
|
||||
mSwordAnim.changeBckOnly(getItemAnimeResource(0x97));
|
||||
mSwordAnim.changeBckOnly(getItemAnimeResource(LKANM_BCK_HAMMERDAM));
|
||||
} else if (checkBowItem(mEquipItem) && !checkBowAnime()) {
|
||||
mSwordAnim.changeBckOnly(getItemAnimeResource(0xD));
|
||||
mSwordAnim.changeBckOnly(getItemAnimeResource(LKANM_BCK_ARROWRELORDA));
|
||||
}
|
||||
|
||||
m35E8 = 0.0f;
|
||||
@@ -2365,7 +2364,6 @@ BOOL daPy_lk_c::procCall_init() {
|
||||
commonProcInit(daPyProc_CALL_e);
|
||||
mVelocity = 0.0f;
|
||||
daPy_matAnm_c::offMabaFlg();
|
||||
daPy_matAnm_c::setMabaTimer(1);
|
||||
setSingleMoveAnime(ANM_YOBU, 1.0f, 0.0f, -1, daPy_HIO_basic_c0::m.field_0xC);
|
||||
current.angle.y = shape_angle.y;
|
||||
if (mEquipItem == daPyItem_BOKO_e) {
|
||||
|
||||
@@ -54,8 +54,7 @@ BOOL daPy_lk_c::procPushPullWait_init(int param_0) {
|
||||
if (checkEquipAnime()) {
|
||||
resetActAnimeUpper(UPPER_MOVE2_e, -1.0f);
|
||||
}
|
||||
daPy_matAnm_c::m_maba_flg = 0;
|
||||
daPy_matAnm_c::m_maba_timer = 1;
|
||||
daPy_matAnm_c::offMabaFlg();
|
||||
setSingleMoveAnime(
|
||||
ANM_WAITPUSHPULL, daPy_HIO_pushpull_c0::m.field_0x0, 0.0f, -1, daPy_HIO_pushpull_c0::m.field_0x4
|
||||
);
|
||||
|
||||
@@ -274,8 +274,7 @@ void daPy_lk_c::initShipCraneAnime() {
|
||||
m3570 = 2;
|
||||
m3574 = 2;
|
||||
}
|
||||
daPy_matAnm_c::m_maba_flg = 0;
|
||||
daPy_matAnm_c::m_maba_timer = 1;
|
||||
daPy_matAnm_c::offMabaFlg();
|
||||
setSingleMoveAnime(dVar1, 1.0f, 0.0f, -1, 10.0f);
|
||||
}
|
||||
|
||||
|
||||
@@ -244,7 +244,6 @@ BOOL daPy_lk_c::procTactWait_init(int r30) {
|
||||
|
||||
commonProcInit(daPyProc_TACT_WAIT_e);
|
||||
daPy_matAnm_c::offMabaFlg();
|
||||
daPy_matAnm_c::setMabaTimer(1);
|
||||
setSingleMoveAnime(ANM_WAITTAKT, daPy_HIO_tact_c0::m.mAnmRate, 0.0f, -1, daPy_HIO_tact_c0::m.field_0x4);
|
||||
setActAnimeUpper(LKANM_BCK_WAITTAKT, UPPER_MOVE1_e, daPy_HIO_tact_c0::m.mAnmRate, 0.0f, -1, -1.0f);
|
||||
mAnmRatioUpper[UPPER_MOVE1_e].setRatio(0.0f);
|
||||
@@ -782,7 +781,6 @@ BOOL daPy_lk_c::procTactPlayOriginal_init() {
|
||||
dComIfGp_setPlayerStatus1(0, daPyStts1_WIND_WAKER_CONDUCT_e);
|
||||
m34D0 = 0;
|
||||
daPy_matAnm_c::offMabaFlg();
|
||||
daPy_matAnm_c::setMabaTimer(1);
|
||||
setSingleMoveAnime(ANM_WAITTAKT, daPy_HIO_tact_c0::m.mAnmRate, 0.0f, -1, daPy_HIO_tact_c0::m.field_0x4);
|
||||
|
||||
m3570 = dComIfGp_event_getTactFreeMStick(m34D0);
|
||||
|
||||
@@ -319,8 +319,7 @@ BOOL daPy_lk_c::procWHideReady() {
|
||||
cLib_addCalc(¤t.pos.x, m370C.x, 0.25f, 10.0f, 4.0f);
|
||||
cLib_addCalc(¤t.pos.z, m370C.z, 0.25f, 10.0f, 4.0f);
|
||||
if (!cLib_addCalcAngleS(&shape_angle.y, m34D4, 2, 0x2000, 0x800)) {
|
||||
daPy_matAnm_c::m_maba_flg = 0;
|
||||
daPy_matAnm_c::m_maba_timer = 1;
|
||||
daPy_matAnm_c::offMabaFlg();
|
||||
procWHideWait_init();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -224,8 +224,8 @@ BOOL daRaceItem_c::execute() {
|
||||
if (hitObj->ChkAtType(AT_TYPE_BOOMERANG)) {
|
||||
cLib_onBit(field_0x645, (u8)0x01);
|
||||
} else if (hitObj->ChkAtType(AT_TYPE_HOOKSHOT)) {
|
||||
cXyz pos(0.0f, dItem_data::getH(m_itemNo) / 2.0f, 0.0f);
|
||||
daPy_getPlayerActorClass()->setHookshotCarryOffset(fopAcM_GetID(this), &pos);
|
||||
cXyz offset(0.0f, dItem_data::getH(m_itemNo) / 2.0f, 0.0f);
|
||||
daPy_getPlayerActorClass()->setHookshotCarryOffset(fopAcM_GetID(this), &offset);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user