mirror of
https://github.com/encounter/tp.git
synced 2026-07-11 06:18:46 -07:00
obj_Iceleaf almost done / d_a_alink work (#2217)
* obj_iceleaf almost done * fix up d_a_alink procvars * more d_a_alink work * some d_a_alink error cleanup * some more cleanup
This commit is contained in:
@@ -1,2 +1,12 @@
|
||||
CompileFlags:
|
||||
Add: [-Wno-c++11-compat-deprecated-writable-strings, -Wno-extern-initializer]
|
||||
---
|
||||
If:
|
||||
PathMatch: .*/*.inc
|
||||
Diagnostics:
|
||||
Suppress:
|
||||
- "undeclared_var_use"
|
||||
- "undeclared_var_use_suggest"
|
||||
- "bound_member_function"
|
||||
- "typecheck_subscript_value"
|
||||
- "unknown_typename"
|
||||
|
||||
Vendored
+16
-3
@@ -11,13 +11,26 @@
|
||||
"editor.defaultFormatter": "ms-python.black-formatter"
|
||||
},
|
||||
"editor.tabSize": 4,
|
||||
"files.autoSave": "onFocusChange",
|
||||
// "files.autoSave": "onFocusChange",
|
||||
"files.insertFinalNewline": true,
|
||||
"files.trimFinalNewlines": true,
|
||||
"files.associations": {
|
||||
"*.inc": "c",
|
||||
".clangd": "yaml"
|
||||
"*.inc": "cpp",
|
||||
".clangd": "yaml",
|
||||
},
|
||||
// Disable C/C++ IntelliSense, use clangd instead
|
||||
"C_Cpp.intelliSenseEngine": "disabled",
|
||||
"search.useIgnoreFiles": false,
|
||||
"search.exclude": {
|
||||
"build/*/config.json": true,
|
||||
"build/**/*.MAP": true,
|
||||
"build.ninja": true,
|
||||
".ninja_*": true,
|
||||
"objdiff.json": true,
|
||||
".cache/**": true,
|
||||
},
|
||||
"clangd.arguments": [
|
||||
"--function-arg-placeholders=0",
|
||||
"-header-insertion=never",
|
||||
],
|
||||
}
|
||||
|
||||
@@ -55,6 +55,7 @@ public:
|
||||
void setYounger(J3DJoint* pYounger) { mYounger = pYounger; }
|
||||
void setCurrentMtxCalc(J3DMtxCalc* pMtxCalc) { mCurrentMtxCalc = pMtxCalc; }
|
||||
J3DTransformInfo& getTransformInfo() { return mTransformInfo; }
|
||||
void setTransformInfo(J3DTransformInfo& i_info) { mTransformInfo = i_info; }
|
||||
Vec* getMax() { return &mMax; }
|
||||
Vec* getMin() { return &mMin; }
|
||||
void setCallBack(J3DJointCallBack callback) { mCallBack = callback; }
|
||||
|
||||
@@ -15,11 +15,36 @@ struct J3DTransformInfo {
|
||||
/* 0x00 */ Vec mScale;
|
||||
/* 0x0C */ SVec mRotation;
|
||||
/* 0x14 */ Vec mTranslate;
|
||||
inline J3DTransformInfo& operator=(const J3DTransformInfo& b) {
|
||||
|
||||
/* inline J3DTransformInfo& operator=(const J3DTransformInfo& b) {
|
||||
mScale = b.mScale;
|
||||
mRotation = b.mRotation;
|
||||
mTranslate = b.mTranslate;
|
||||
return *this;
|
||||
} */
|
||||
|
||||
inline J3DTransformInfo& operator=(const register J3DTransformInfo& b) {
|
||||
register const J3DTransformInfo& var_r31 = b;
|
||||
register J3DTransformInfo& var_r30 = *this;
|
||||
|
||||
register f32 var_f31;
|
||||
register f32 var_f0;
|
||||
register int var_r0;
|
||||
asm {
|
||||
psq_l var_f31, 0x0(var_r31), 0, 0
|
||||
psq_st var_f31, 0x0(var_r30), 0, 0
|
||||
lfs var_f0, 0x8(var_r31)
|
||||
stfs var_f0, 0x8(var_r30)
|
||||
lwz var_r0, 0xc(var_r31)
|
||||
stw var_r0, 0xc(var_r30)
|
||||
lha var_r0, 0x10(var_r31)
|
||||
sth var_r0, 0x10(var_r30)
|
||||
psq_l var_f31, 0x14(var_r31), 0, 0
|
||||
psq_st var_f31, 0x14(var_r30), 0, 0
|
||||
lfs var_f0, 0x1c(var_r31)
|
||||
stfs var_f0, 0x1c(var_r30)
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
}; // Size: 0x20
|
||||
|
||||
|
||||
@@ -2,18 +2,17 @@
|
||||
#define D_A_D_A_ALINK_H
|
||||
|
||||
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
|
||||
#include "JSystem/J3DGraphBase/J3DMaterial.h"
|
||||
#include "JSystem/J3DGraphBase/J3DMatBlock.h"
|
||||
#include "Z2AudioLib/Z2Creature.h"
|
||||
#include "Z2AudioLib/Z2WolfHowlMgr.h"
|
||||
#include "d/actor/d_a_player.h"
|
||||
#include "d/d_eye_hl.h"
|
||||
#include "d/d_jnt_col.h"
|
||||
#include "d/d_meter2_info.h"
|
||||
#include "d/d_msg_flow.h"
|
||||
#include "d/d_particle_copoly.h"
|
||||
#include "d/d_save.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "d/actor/d_a_kytag05.h"
|
||||
#include "d/actor/d_a_tag_mmsg.h"
|
||||
|
||||
class J2DAnmColorKey;
|
||||
@@ -157,6 +156,12 @@ public:
|
||||
/* 0x104 */ int mSetFlag;
|
||||
};
|
||||
|
||||
// this class is mostly a complete guess
|
||||
class daAlink_hsChainLight_c : public dKy_tevstr_c {
|
||||
public:
|
||||
GXLightObj* getLightObj() { return &mLightObj.mLightObj; }
|
||||
};
|
||||
|
||||
struct daAlink_BckData {
|
||||
/* 0x0 */ u16 m_underID;
|
||||
/* 0x2 */ u16 m_upperID;
|
||||
@@ -1704,7 +1709,7 @@ public:
|
||||
/* 800D1788 */ static BOOL notSwordHitVibActor(fopAc_ac_c*);
|
||||
/* 800D17EC */ BOOL setSwordHitVibration(dCcD_GObjInf*);
|
||||
/* 800D1920 */ BOOL checkAtShieldHit(dCcD_GObjInf&);
|
||||
/* 800D1978 */ bool checkCutReverseAt(dCcD_GObjInf*);
|
||||
/* 800D1978 */ BOOL checkCutReverseAt(dCcD_GObjInf*);
|
||||
/* 800D19C8 */ BOOL changeCutReverseProc(daAlink_c::daAlink_ANM);
|
||||
/* 800D1E1C */ void setCutDash(int, int);
|
||||
/* 800D20B4 */ BOOL checkForceSwordSwing();
|
||||
@@ -2492,7 +2497,7 @@ public:
|
||||
/* 8011078C */ BOOL checkWaterInKandelaarOffset(f32);
|
||||
/* 801107BC */ void checkWaterInKandelaar(f32);
|
||||
/* 80110840 */ void offKandelaarModel();
|
||||
/* 801108EC */ void kandelaarModelCallBack();
|
||||
/* 801108EC */ int kandelaarModelCallBack();
|
||||
/* 80110C6C */ BOOL checkKandelaarEquipAnime() const;
|
||||
/* 80110C94 */ void preKandelaarDraw();
|
||||
/* 80110E84 */ void setKandelaarModel();
|
||||
@@ -3173,7 +3178,7 @@ public:
|
||||
BOOL checkBarkAnime() const { return 0; }
|
||||
bool checkWolfGrabAnimeObj() const { return checkUpperAnime(0x2DA); }
|
||||
bool checkWolfGrabAnimeStick() const { return checkUpperAnime(0x2DB); }
|
||||
bool checkWolfGrabAnime() const { return checkWolfGrabAnimeObj() || checkWolfGrabAnimeStick(); }
|
||||
BOOL checkWolfGrabAnime() const { return checkWolfGrabAnimeObj() || checkWolfGrabAnimeStick(); }
|
||||
bool checkWolfSwimDashAnime() const { return checkUnderMove0BckNoArcWolf(WANM_SWIM_DASH); }
|
||||
bool checkKandelaarSwingAnime() const { return false; }
|
||||
bool checkBowChargeWaitAnime() const { return checkUpperAnime(0xA); }
|
||||
@@ -3386,6 +3391,11 @@ public:
|
||||
}
|
||||
|
||||
const cXyz& getHsChainTopPos() const { return mHookshotTopPos; }
|
||||
const cXyz& getHsChainRootPos() const { return mHeldItemRootPos; }
|
||||
|
||||
const cXyz& getHsSubChainRootPos() const { return field_0x3810; }
|
||||
|
||||
s16 getHookshotStopTime() const { return field_0x3026; }
|
||||
|
||||
static int getBallModelIdx() { return 0x25; }
|
||||
static int getBallBtkIdx() { return 0x49; }
|
||||
@@ -3395,12 +3405,18 @@ public:
|
||||
bool checkRootTransZClearMode() { return field_0x2f99 & 4; }
|
||||
bool checkRootTransXClearMode() { return field_0x2f99 & 1; }
|
||||
bool checkRootTransYClearMode() { return field_0x2f99 & 2; }
|
||||
s16 checkWindStoneHowl() {return mProcVar3.field_0x300e.y; }
|
||||
s16 checkWindStoneHowl() {return mProcVar4.field_0x3010; }
|
||||
u8 getCorrectCurveID() { return mZ2WolfHowlMgr.getCorrectCurveID(); }
|
||||
u8 getCorrectLineNum() { return mZ2WolfHowlMgr.getCorrectLineNum(); }
|
||||
u32 getWolfHowlTimer() { return mZ2WolfHowlMgr.getTimer(); }
|
||||
s8 getOnLineNum() { return mZ2WolfHowlMgr.getOnLineNum(); }
|
||||
SongNote getCorrectLine(u8 param_0) { return mZ2WolfHowlMgr.getCorrectLine(param_0); }
|
||||
J3DModelData* getItemModelData() { return mpItemModelData; }
|
||||
|
||||
cXyz* getIronBallChainPos() const { return mIronBallChainPos; }
|
||||
csXyz* getIronBallChainAngle() const { return mIronBallChainAngle; }
|
||||
int getIronBallHandChainNum() const { return mItemMode; }
|
||||
const cXyz& getIronBallChainHandRootPos() const { return mHookshotTopPos; }
|
||||
|
||||
void itemHitSE(u32 param_1, u32 param_2, Z2SoundObjBase* param_3) { mZ2Link.startHitItemSE(param_1, param_2, param_3, -1.0f); }
|
||||
|
||||
@@ -3494,7 +3510,7 @@ public:
|
||||
/* 0x0072C */ J3DAnmTexPattern* field_0x072c;
|
||||
/* 0x00730 */ mDoExt_bckAnm mItemBck;
|
||||
/* 0x0074C */ mDoExt_bckAnm mHookTipBck;
|
||||
/* 0x00768 */ J3DModelData* mpHookKusariModelData;
|
||||
/* 0x00768 */ J3DModelData* mpItemModelData;
|
||||
/* 0x0076C */ Z2SoundObjSimple* mpHookSound;
|
||||
/* 0x00770 */ hsChainShape_c* mpHookChain;
|
||||
/* 0x00774 */ dBgS_AcchCir* field_0x0774;
|
||||
@@ -3652,7 +3668,7 @@ public:
|
||||
/* 0x02FA5 */ u8 mPolySound;
|
||||
/* 0x02FA6 */ u8 field_0x2fa6;
|
||||
/* 0x02FA7 */ u8 field_0x2fa7;
|
||||
/* 0x02FA8 */ u8 field_0x2fa8;
|
||||
/* 0x02FA8 */ u8 mGndPolySpecialCode;
|
||||
/* 0x02FA9 */ u8 mWolfEyeUpTimer;
|
||||
/* 0x02FAA */ u8 mRideStatus;
|
||||
/* 0x02FAB */ u8 field_0x2fab;
|
||||
@@ -3733,14 +3749,21 @@ public:
|
||||
} /* 0x03008 */ mProcVar0;
|
||||
union {
|
||||
s16 field_0x300a;
|
||||
s16 mBoardSwordChargeTime;
|
||||
} /* 0x0300A */ mProcVar1;
|
||||
union {
|
||||
s16 field_0x300c;
|
||||
s16 mPuzzleAimAngle;
|
||||
} /* 0x0300C */ mProcVar2;
|
||||
union {
|
||||
SVec field_0x300e;
|
||||
s16 field_0x300e;
|
||||
} /* 0x0300E */ mProcVar3;
|
||||
union {
|
||||
s16 field_0x3010;
|
||||
} /* 0x03010 */ mProcVar4;
|
||||
union {
|
||||
s16 field_0x3012;
|
||||
} /* 0x03012 */ mProcVar5;
|
||||
/* 0x03014 */ s16 mFallVoiceInit;
|
||||
/* 0x03016 */ u8 field_0x3016[2];
|
||||
union {
|
||||
@@ -4049,6 +4072,16 @@ static bool daAlink_checkLightBallA(fopAc_ac_c* p_actor);
|
||||
static bool daAlink_checkLightBallB(fopAc_ac_c* p_actor);
|
||||
static fopAc_ac_c* daAlink_searchCoach(fopAc_ac_c* param_0, void* param_1);
|
||||
|
||||
struct daAlink_cutParamTbl {
|
||||
/* 0x0 */ daAlink_c::daAlink_ANM m_anmID;
|
||||
/* 0x4 */ int field_0x4;
|
||||
/* 0x8 */ u8 m_cutType;
|
||||
/* 0x9 */ u8 m_atSe;
|
||||
/* 0xA */ u8 field_0xa;
|
||||
/* 0xB */ u8 field_0xb;
|
||||
/* 0xC */ f32 m_morf;
|
||||
}; // Size: 0x10
|
||||
|
||||
struct daAlinkHIO_anm_c {
|
||||
/* 0x00 */ s16 mEndFrame;
|
||||
/* 0x04 */ f32 mSpeed;
|
||||
|
||||
@@ -47,6 +47,8 @@ public:
|
||||
u8 getSW_0() { return fopAcM_GetParamBit(this, 4, 8); }
|
||||
s32 getArg_0() { return fopAcM_GetParamBit(this, 0, 4); }
|
||||
|
||||
void moveHookOn() { field_0x60a = 1; }
|
||||
|
||||
private:
|
||||
/* 0x5A8 */ cXyz field_0x5a8;
|
||||
/* 0x5B4 */ Mtx mMtx;
|
||||
|
||||
@@ -15,13 +15,27 @@
|
||||
*/
|
||||
class daObjIceLeaf_c : public fopAc_ac_c {
|
||||
public:
|
||||
enum daObjIceLeaf_MODE {
|
||||
MODE_DROP_WAIT_e,
|
||||
MODE_DROP_e,
|
||||
MODE_PLAYER_WAIT_e,
|
||||
MODE_RIDE_e,
|
||||
};
|
||||
|
||||
enum daObjIceLeaf_ACTION {
|
||||
ACT_WAIT_e,
|
||||
ACT_ORDER_EVENT_e,
|
||||
ACT_EVENT_e,
|
||||
ACT_DEAD_e,
|
||||
};
|
||||
|
||||
/* 80C24738 */ void initBaseMtx();
|
||||
/* 80C24774 */ void setBaseMtx();
|
||||
/* 80C249E4 */ void Create();
|
||||
/* 80C249E4 */ int Create();
|
||||
/* 80C24BC4 */ void setAnmPos();
|
||||
/* 80C24C9C */ void CreateHeap();
|
||||
/* 80C24E14 */ void create();
|
||||
/* 80C25158 */ void execute();
|
||||
/* 80C24C9C */ int CreateHeap();
|
||||
/* 80C24E14 */ int create();
|
||||
/* 80C25158 */ int execute();
|
||||
/* 80C25360 */ void action();
|
||||
/* 80C2541C */ void modeDropWait();
|
||||
/* 80C25614 */ void modeDrop();
|
||||
@@ -33,13 +47,19 @@ public:
|
||||
/* 80C25A68 */ void actionEvent();
|
||||
/* 80C25AC4 */ void actionDead();
|
||||
/* 80C25AC8 */ void setFallSE();
|
||||
/* 80C25BB8 */ void draw();
|
||||
/* 80C25C50 */ void _delete();
|
||||
/* 80C25BB8 */ int draw();
|
||||
/* 80C25C50 */ int _delete();
|
||||
|
||||
void offRide() { mRide = false; }
|
||||
void onRide() { mRide = true; }
|
||||
void setBreakEffect() { mBreakEffect = true; }
|
||||
void deleteActor() { field_0x961 = 1; }
|
||||
void deleteActor() { mDeleteActor = true; }
|
||||
void setAction(u8 i_action) { mAction = i_action; }
|
||||
void setMode(u8 i_mode) { mMode = i_mode; }
|
||||
|
||||
u8 getEvId() { return fopAcM_GetParamBit(this, 0, 8); }
|
||||
u8 checkRideStatus() { return fopAcM_GetParamBit(this, 0x10, 8); }
|
||||
u8 getSwbit() { return fopAcM_GetParamBit(this, 8, 8); }
|
||||
|
||||
private:
|
||||
/* 0x568 */ request_of_phase_process_class mPhase;
|
||||
@@ -49,18 +69,18 @@ private:
|
||||
/* 0x78C */ dCcD_Stts mStts;
|
||||
/* 0x7C8 */ dCcD_Cyl mCyl;
|
||||
/* 0x904 */ mDoExt_bckAnm* mpBck;
|
||||
/* 0x908 */ J3DTransformInfo field_0x908;
|
||||
/* 0x928 */ u8 mAction;
|
||||
/* 0x929 */ u8 field_0x929;
|
||||
/* 0x92A */ u8 field_0x92a;
|
||||
/* 0x908 */ J3DTransformInfo mTransformInfo;
|
||||
/* 0x928 */ u8 mMode;
|
||||
/* 0x929 */ u8 mAction;
|
||||
/* 0x92A */ u8 mEvId;
|
||||
/* 0x92B */ u8 field_0x92b;
|
||||
/* 0x92C */ s16 mEventID;
|
||||
/* 0x930 */ Mtx field_0x930;
|
||||
/* 0x930 */ Mtx mMtx;
|
||||
/* 0x960 */ u8 mRide;
|
||||
/* 0x961 */ u8 field_0x961;
|
||||
/* 0x961 */ u8 mDeleteActor;
|
||||
/* 0x962 */ u8 mBreakEffect;
|
||||
/* 0x964 */ cXyz field_0x964;
|
||||
/* 0x970 */ cXyz field_0x970;
|
||||
/* 0x964 */ cXyz mFallSEPos;
|
||||
/* 0x970 */ cXyz mFallStartSEPos;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daObjIceLeaf_c) == 0x97c);
|
||||
|
||||
@@ -784,6 +784,7 @@ public:
|
||||
bool checkSwimUp() const { return checkNoResetFlg0(FLG0_SWIM_UP); }
|
||||
BOOL checkHorseZelda() const { return checkNoResetFlg2(FLG2_HORSE_ZELDA); }
|
||||
BOOL checkSpecialHorseRide() { return checkNoResetFlg2(daPy_FLG2(FLG2_HORSE_ZELDA | FLG2_UNK_1000000 | FLG2_UNK_800000)); }
|
||||
BOOL checkBoardNoFootAngle() const { return checkResetFlg1(RFLG1_UNK_40); }
|
||||
|
||||
void onBossRoomWait() { onEndResetFlg0(ERFLG0_BOSS_ROOM_WAIT); }
|
||||
void onBeeFollow() { onEndResetFlg0(ERFLG0_BEE_FOLLOW); }
|
||||
|
||||
@@ -16,6 +16,13 @@ class dBgS_SphChk;
|
||||
class dBgS_SplGrpChk;
|
||||
class fopAc_ac_c;
|
||||
|
||||
enum dBgW_SpecialCode {
|
||||
dBgW_SPCODE_NORMAL,
|
||||
dBgW_SPCODE_LIGHT_SNOW = 5,
|
||||
dBgW_SPCODE_HEAVY_SNOW = 6,
|
||||
dBgW_SPCODE_ICE = 8,
|
||||
};
|
||||
|
||||
class dBgW_Base : public cBgW_BgId {
|
||||
public:
|
||||
enum PushPullLabel {
|
||||
|
||||
+2
-2
@@ -116,7 +116,7 @@ public:
|
||||
dDemo_system_c() { mpObject = NULL; }
|
||||
|
||||
/* 80039AAC */ virtual ~dDemo_system_c();
|
||||
/* 80039528 */ virtual bool JSGFindObject(JStage::TObject**, char const*,
|
||||
/* 80039528 */ virtual int JSGFindObject(JStage::TObject**, char const*,
|
||||
JStage::TEObject) const;
|
||||
|
||||
void setObject(dDemo_object_c* i_object) { mpObject = i_object; }
|
||||
@@ -131,7 +131,7 @@ public:
|
||||
: JStudio_JParticle::TCreateObject(p_emitMgr, p_system) {}
|
||||
|
||||
/* 80039F9C */ virtual ~dDemo_particle_c();
|
||||
/* 80039F1C */ virtual void emitter_create(u32);
|
||||
/* 80039F1C */ virtual JPABaseEmitter* emitter_create(u32);
|
||||
};
|
||||
|
||||
class dDemo_light_c : public JStage::TLight {
|
||||
|
||||
@@ -9,7 +9,7 @@ typedef struct Vec Vec;
|
||||
struct ResTIMG;
|
||||
|
||||
struct mDoLib_clipper {
|
||||
/* 8001528C */ void setup(f32, f32, f32, f32);
|
||||
/* 8001528C */ static void setup(f32, f32, f32, f32);
|
||||
|
||||
static void changeFar(f32 far) {
|
||||
mClipper.setFar(far);
|
||||
@@ -32,8 +32,6 @@ struct mDoLib_clipper {
|
||||
mClipper.calcViewFrustum();
|
||||
}
|
||||
|
||||
static void setup(f32, f32, f32, f32);
|
||||
|
||||
static J3DUClipper mClipper;
|
||||
static f32 mSystemFar;
|
||||
static f32 mFovyRate;
|
||||
|
||||
+20
-3620
File diff suppressed because it is too large
Load Diff
@@ -1,3 +1,5 @@
|
||||
#include "d/actor/d_a_alink.h"
|
||||
|
||||
// clang-format off
|
||||
/* 8038D664-8038D6BC 019CC4 0058+00 41/50 0/0 0/0 .rodata m__19daAlinkHIO_basic_c0 */
|
||||
const daAlinkHIO_basic_c1 daAlinkHIO_basic_c0::m = {
|
||||
@@ -2036,8 +2038,6 @@ const daAlinkHIO_copyRod_c1 daAlinkHIO_copyRod_c0::m = {
|
||||
};
|
||||
|
||||
/* 8038EB34-8038EB50 01B194 001C+00 0/0 0/0 0/0 .rodata m__21daAlinkHIO_zwLight_c0 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
const daAlinkHIO_zwLight_c1 daAlinkHIO_zwLight_c0::m = {
|
||||
771,
|
||||
0,
|
||||
@@ -2050,9 +2050,6 @@ const daAlinkHIO_zwLight_c1 daAlinkHIO_zwLight_c0::m = {
|
||||
131.83594f,
|
||||
0.0f,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x8038EB34,
|
||||
&daAlinkHIO_zwLight_c0::m);
|
||||
#pragma pop
|
||||
|
||||
/* 8038EB50-8038EB8C 01B1B0 003C+00 3/3 0/0 0/0 .rodata m__18daAlinkHIO_item_c0 */
|
||||
const daAlinkHIO_item_c1 daAlinkHIO_item_c0::m = {
|
||||
@@ -3433,4 +3430,4 @@ const daAlinkHIO_wolf_c1 daAlinkHIO_wolf_c0::m = {
|
||||
0.7f,
|
||||
};
|
||||
|
||||
// clang-format on
|
||||
// clang-format on
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
* Player Bomb action handling
|
||||
*/
|
||||
|
||||
#include "d/actor/d_a_alink.h"
|
||||
|
||||
/* 800E3760-800E3770 0DE0A0 0010+00 0/0 0/0 7/7 .text getBombExplodeTime__9daAlink_cCFv
|
||||
*/
|
||||
s16 daAlink_c::getBombExplodeTime() const {
|
||||
@@ -71,4 +73,4 @@ f32 daAlink_c::getBombExplodeWaterEffectLimit() const {
|
||||
/* 800E3820-800E3830 0DE160 0010+00 0/0 0/0 1/1 .text getBombInsectLimitAngle__9daAlink_cCFv */
|
||||
s16 daAlink_c::getBombInsectLimitAngle() const {
|
||||
return daAlinkHIO_bomb_c0::m.mBombInsectLimitAngle;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
* Player Boomerang action handling
|
||||
*/
|
||||
|
||||
#include "d/actor/d_a_alink.h"
|
||||
#include "d/actor/d_a_boomerang.h"
|
||||
|
||||
/* 800DFFE0-800E0010 0DA920 0030+00 0/0 0/0 1/1 .text checkBoomerangLockAccept__9daAlink_cFv */
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "d/actor/d_a_alink.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_insect.h"
|
||||
#include "SSystem/SComponent/c_math.h"
|
||||
|
||||
/* 8010E48C-8010E52C 108DCC 00A0+00 1/1 0/0 0/0 .text bottleModelCallBack__9daAlink_cFv
|
||||
*/
|
||||
@@ -394,16 +395,16 @@ int daAlink_c::procBottleDrinkInit(u16 i_itemNo) {
|
||||
u32 id = fopAcM_GetID(this);
|
||||
dCam_getBody()->StartEventCamera(0x12, id, "Type", 1, &field_0x3194, 0);
|
||||
mProcVar2.field_0x300c = 0;
|
||||
mProcVar3.field_0x300e.x = 0;
|
||||
mProcVar3.field_0x300e = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 8010F698-8010F6F4 109FD8 005C+00 1/0 0/0 0/0 .text procBottleDrink__9daAlink_cFv */
|
||||
int daAlink_c::procBottleDrink() {
|
||||
if (mProcVar3.field_0x300e.x != 0) {
|
||||
if (mProcVar3.field_0x300e != 0) {
|
||||
dComIfGp_evmng_cutEnd(field_0x3184);
|
||||
} else {
|
||||
mProcVar3.field_0x300e.x = commonBottleDrink(0);
|
||||
mProcVar3.field_0x300e = commonBottleDrink(0);
|
||||
}
|
||||
|
||||
return 1;
|
||||
@@ -443,7 +444,7 @@ int daAlink_c::procBottleOpenInit(u16 param_0) {
|
||||
}
|
||||
}
|
||||
|
||||
mProcVar3.field_0x300e.x = 0;
|
||||
mProcVar3.field_0x300e = 0;
|
||||
|
||||
u32 id = fopAcM_GetID(this);
|
||||
dCam_getBody()->StartEventCamera(0x12, id, "Type", 1, &field_0x3194, 0);
|
||||
@@ -454,7 +455,7 @@ int daAlink_c::procBottleOpenInit(u16 param_0) {
|
||||
if (param_0 == 0x67) {
|
||||
setCylAtParam(0x200, dCcG_At_Spl_UNK_0, 0, 0, 0, 30.0f, 30.0f);
|
||||
}
|
||||
mProcVar3.field_0x300e.y = 0;
|
||||
mProcVar4.field_0x3010 = 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -484,9 +485,9 @@ int daAlink_c::procBottleOpen() {
|
||||
|
||||
if (mEquipItem == WATER_BOTTLE) {
|
||||
if (mWaterY > mLeftHandPos.y) {
|
||||
mProcVar3.field_0x300e.x = 0;
|
||||
mProcVar3.field_0x300e = 0;
|
||||
} else {
|
||||
mProcVar3.field_0x300e.x = 1;
|
||||
mProcVar3.field_0x300e = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -517,13 +518,13 @@ int daAlink_c::procBottleOpen() {
|
||||
mProcVar2.field_0x300c = 2;
|
||||
dComIfGs_setEquipBottleItemEmpty(mSelectItemId);
|
||||
|
||||
if (mEquipItem == WATER_BOTTLE && mProcVar3.field_0x300e.x != 0) {
|
||||
if (mEquipItem == WATER_BOTTLE && mProcVar3.field_0x300e != 0) {
|
||||
seStartOnlyReverb(Z2SE_LK_SPRINKLE_WATER);
|
||||
}
|
||||
} else if (frameCtrl_p->getFrame() > 16.0f && frameCtrl_p->getFrame() < 31.0f) {
|
||||
mProcVar3.field_0x300e.y = 1;
|
||||
mProcVar4.field_0x3010 = 1;
|
||||
} else {
|
||||
mProcVar3.field_0x300e.y = 0;
|
||||
mProcVar4.field_0x3010 = 0;
|
||||
}
|
||||
|
||||
if (mProcVar0.field_0x3008 == 0 && frameCtrl_p->getFrame() >= 25.0f) {
|
||||
@@ -561,7 +562,7 @@ int daAlink_c::procBottleSwingInit(fopAc_ac_c* param_0, int param_1) {
|
||||
current.angle.y = shape_angle.y;
|
||||
mNormalSpeed = 0.0f;
|
||||
field_0x2f98 = 4;
|
||||
mProcVar3.field_0x300e.y = param_1;
|
||||
mProcVar4.field_0x3010 = param_1;
|
||||
|
||||
if (var_r31 != NULL) {
|
||||
field_0x280c.setData(var_r31);
|
||||
@@ -630,7 +631,7 @@ int daAlink_c::procBottleSwingInit(fopAc_ac_c* param_0, int param_1) {
|
||||
mProcVar2.field_0x300c = 0;
|
||||
voiceStart(Z2SE_AL_V_SWING_BOTTLE);
|
||||
seStartOnlyReverb(Z2SE_AL_SWING_BOTTLE);
|
||||
mProcVar3.field_0x300e.x = 0;
|
||||
mProcVar3.field_0x300e = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -641,9 +642,9 @@ int daAlink_c::procBottleSwing() {
|
||||
|
||||
if (mProcVar2.field_0x300c == 0) {
|
||||
if (eventInfo.i_checkCommandCatch()) {
|
||||
if (mProcVar3.field_0x300e.x == 0) {
|
||||
if (mProcVar3.field_0x300e == 0) {
|
||||
dComIfGp_getVibration().StartShock(1, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
mProcVar3.field_0x300e.x = 1;
|
||||
mProcVar3.field_0x300e = 1;
|
||||
}
|
||||
|
||||
dComIfGp_setPlayerStatus1(0, 0x4000000);
|
||||
@@ -703,7 +704,7 @@ int daAlink_c::procBottleSwing() {
|
||||
|
||||
if (checkAnmEnd(frameCtrl_p)) {
|
||||
if (mProcVar2.field_0x300c != 0) {
|
||||
procBottleGetInit(mProcVar3.field_0x300e.y);
|
||||
procBottleGetInit(mProcVar4.field_0x3010);
|
||||
} else {
|
||||
checkNextAction(0);
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "d/actor/d_a_alink.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/actor/d_a_arrow.h"
|
||||
#include "d/actor/d_a_horse.h"
|
||||
|
||||
/* 800DE64C-800DE740 0D8F8C 00F4+00 1/1 0/0 2/2 .text getArrowFlyData__9daAlink_cCFPfPfi
|
||||
*/
|
||||
|
||||
@@ -130,11 +130,11 @@ BOOL daAlink_c::checkCanoeFishingRodGrabOrPut() const {
|
||||
|
||||
/* 800F3FC4-800F4008 0EE904 0044+00 2/2 0/0 0/0 .text initCanoeRide__9daAlink_cFv */
|
||||
void daAlink_c::initCanoeRide() {
|
||||
mProcVar3.field_0x300e.z = 1;
|
||||
mProcVar5.field_0x3012 = 1;
|
||||
field_0x3588 = l_waitBaseAnime;
|
||||
field_0x384c = (cXyz*)&l_canoeBaseAnime;
|
||||
mRideStatus = 3;
|
||||
mProcVar3.field_0x300e.y = 0;
|
||||
mProcVar4.field_0x3010 = 0;
|
||||
}
|
||||
|
||||
/* 800F4008-800F40E4 0EE948 00DC+00 2/2 0/0 0/0 .text checkCanoeJumpRide__9daAlink_cFv */
|
||||
@@ -149,7 +149,7 @@ BOOL daAlink_c::checkCanoeJumpRide() {
|
||||
|
||||
if (speed.y < 0.0f && canoe != NULL && fopAcM_GetName(canoe) == PROC_CANOE &&
|
||||
canoe->checkJumpRideFlg() && !checkDeadHP() &&
|
||||
(mProcID != PROC_FALL || mProcVar3.field_0x300e.y != 0)) {
|
||||
(mProcID != PROC_FALL || mProcVar4.field_0x3010 != 0)) {
|
||||
return procCanoeJumpRideInit(canoe);
|
||||
}
|
||||
|
||||
@@ -283,8 +283,8 @@ void daAlink_c::setSyncCanoePos() {
|
||||
|
||||
s16 var_r29;
|
||||
f32 var_f31;
|
||||
if ((canoe->speedF < 0.0f && mProcID == PROC_CANOE_WAIT) || (mProcID == PROC_CANOE_ROW && mProcVar3.field_0x300e.x == 1)) {
|
||||
if (mProcVar3.field_0x300e.z == 0) {
|
||||
if ((canoe->speedF < 0.0f && mProcID == PROC_CANOE_WAIT) || (mProcID == PROC_CANOE_ROW && mProcVar3.field_0x300e == 1)) {
|
||||
if (mProcVar5.field_0x3012 == 0) {
|
||||
var_r29 = 0x5000;
|
||||
var_f31 = 1.0f;
|
||||
} else {
|
||||
@@ -301,8 +301,8 @@ void daAlink_c::setSyncCanoePos() {
|
||||
}
|
||||
}
|
||||
|
||||
daPy_addCalcShort(&mProcVar3.field_0x300e.y, var_r29, 3, 0x1000, 0x100);
|
||||
field_0x30a2 = mProcVar3.field_0x300e.y;
|
||||
daPy_addCalcShort(&mProcVar4.field_0x3010, var_r29, 3, 0x1000, 0x100);
|
||||
field_0x30a2 = mProcVar4.field_0x3010;
|
||||
cLib_chaseF(&field_0x33f0, var_f31, 0.2f);
|
||||
}
|
||||
|
||||
@@ -391,7 +391,7 @@ int daAlink_c::procCanoeRideInit() {
|
||||
current.angle.y = shape_angle.y;
|
||||
|
||||
initCanoeRide();
|
||||
mProcVar3.field_0x300e.x = 0x80;
|
||||
mProcVar3.field_0x300e = 0x80;
|
||||
swimOutAfter(1);
|
||||
return 1;
|
||||
}
|
||||
@@ -409,12 +409,12 @@ int daAlink_c::procCanoeRide() {
|
||||
if (frameCtrl->checkAnmEnd()) {
|
||||
procCanoeWaitInit(1);
|
||||
} else if (frameCtrl->getFrame() < 9.0f) {
|
||||
mProcVar3.field_0x300e.x += 0x180;
|
||||
mProcVar3.field_0x300e += 0x180;
|
||||
|
||||
if (mProcVar0.field_0x3008 == 0) {
|
||||
canoe->incShapeAngleZ(-mProcVar3.field_0x300e.x);
|
||||
canoe->incShapeAngleZ(-mProcVar3.field_0x300e);
|
||||
} else {
|
||||
canoe->incShapeAngleZ(mProcVar3.field_0x300e.x);
|
||||
canoe->incShapeAngleZ(mProcVar3.field_0x300e);
|
||||
}
|
||||
canoe->incShapeOffsetY(-4.0f);
|
||||
}
|
||||
@@ -529,7 +529,7 @@ int daAlink_c::procCanoeGetOffInit() {
|
||||
field_0x37c8.z -= -35.0f;
|
||||
|
||||
cMtx_multVec(canoe->getModelMtx(), &field_0x37c8, ¤t.pos);
|
||||
mProcVar3.field_0x300e.x = 0;
|
||||
mProcVar3.field_0x300e = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -553,9 +553,9 @@ int daAlink_c::procCanoeGetOff() {
|
||||
field_0x2f99 = 7;
|
||||
}
|
||||
} else {
|
||||
if (mProcVar3.field_0x300e.x == 0) {
|
||||
if (mProcVar3.field_0x300e == 0) {
|
||||
if (field_0x2060->getOldFrameRate() < 0.01f) {
|
||||
mProcVar3.field_0x300e.x = 1;
|
||||
mProcVar3.field_0x300e = 1;
|
||||
setSingleAnimeParam(ANM_VJUMP_START, &daAlinkHIO_smallJump_c0::m.mSmallJumpAnm);
|
||||
field_0x33b0 = l_waitBaseAnime.y;
|
||||
field_0x3588 = l_waitBaseAnime;
|
||||
@@ -577,7 +577,7 @@ int daAlink_c::procCanoeGetOff() {
|
||||
*/
|
||||
int daAlink_c::procCanoeWaitInit(int param_0) {
|
||||
if (mProcID == PROC_CANOE_FISHING_WAIT) {
|
||||
mProcVar3.field_0x300e.z = 1;
|
||||
mProcVar5.field_0x3012 = 1;
|
||||
return procCanoePaddleGrabInit();
|
||||
}
|
||||
|
||||
@@ -626,7 +626,7 @@ int daAlink_c::procCanoeWaitInit(int param_0) {
|
||||
|
||||
if (mEquipItem == NO_ITEM || (mEquipItem != 0x10B && !checkFisingRodLure())) {
|
||||
var_r27 = ANM_WAIT_SIT;
|
||||
} else if (mProcVar3.field_0x300e.z == 0) {
|
||||
} else if (mProcVar5.field_0x3012 == 0) {
|
||||
var_r27 = ANM_WAIT_CANOE_LEFT;
|
||||
} else {
|
||||
var_r27 = ANM_WAIT_CANOE_RIGHT;
|
||||
@@ -686,9 +686,9 @@ int daAlink_c::procCanoeWait() {
|
||||
|
||||
if (mThrowBoomerangAcKeep.getActor() != NULL || mProcVar1.field_0x300a != 0) {
|
||||
if ((s16)(field_0x2fe2 - shape_angle.y) >= 0) {
|
||||
mProcVar3.field_0x300e.z = 1;
|
||||
mProcVar5.field_0x3012 = 1;
|
||||
} else {
|
||||
mProcVar3.field_0x300e.z = 0;
|
||||
mProcVar5.field_0x3012 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,9 +702,9 @@ int daAlink_c::procCanoeWait() {
|
||||
allUnequip(0);
|
||||
|
||||
if ((s16)(field_0x2fe2 - shape_angle.y) >= 0) {
|
||||
mProcVar3.field_0x300e.z = 1;
|
||||
mProcVar5.field_0x3012 = 1;
|
||||
} else {
|
||||
mProcVar3.field_0x300e.z = 0;
|
||||
mProcVar5.field_0x3012 = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -742,7 +742,7 @@ int daAlink_c::procCanoeRowInit(int param_0) {
|
||||
int var_r28;
|
||||
if (temp_r3 < 0x40 || temp_r3 > 0x7F80) {
|
||||
if (param_0 == -3) {
|
||||
if (mProcVar3.field_0x300e.z == 0) {
|
||||
if (mProcVar5.field_0x3012 == 0) {
|
||||
var_r28 = 2;
|
||||
} else {
|
||||
var_r28 = 3;
|
||||
@@ -752,7 +752,7 @@ int daAlink_c::procCanoeRowInit(int param_0) {
|
||||
field_0x3198 = -3;
|
||||
}
|
||||
|
||||
if (mProcVar3.field_0x300e.z == 0) {
|
||||
if (mProcVar5.field_0x3012 == 0) {
|
||||
var_r28 = 3;
|
||||
} else {
|
||||
var_r28 = 2;
|
||||
@@ -767,20 +767,20 @@ int daAlink_c::procCanoeRowInit(int param_0) {
|
||||
if (spC == 1) {
|
||||
var_r29 = var_r28 == 2 ? ANM_CANOE_ROW_RIGHT_BACK : ANM_CANOE_ROW_LEFT_BACK;
|
||||
|
||||
if ((var_r29 == ANM_CANOE_ROW_RIGHT_BACK && mProcVar3.field_0x300e.z == 0) || (var_r29 == ANM_CANOE_ROW_LEFT_BACK && mProcVar3.field_0x300e.z == 1)) {
|
||||
if ((var_r29 == ANM_CANOE_ROW_RIGHT_BACK && mProcVar5.field_0x3012 == 0) || (var_r29 == ANM_CANOE_ROW_LEFT_BACK && mProcVar5.field_0x3012 == 1)) {
|
||||
return procCanoePaddleShiftInit(var_r29);
|
||||
}
|
||||
} else {
|
||||
var_r29 = var_r28 == 2 ? ANM_CANOE_ROW_RIGHT : ANM_CANOE_ROW_LEFT;
|
||||
|
||||
if ((var_r29 == ANM_CANOE_ROW_RIGHT && mProcVar3.field_0x300e.z == 0) || (var_r29 == ANM_CANOE_ROW_LEFT && mProcVar3.field_0x300e.z == 1)) {
|
||||
if ((var_r29 == ANM_CANOE_ROW_RIGHT && mProcVar5.field_0x3012 == 0) || (var_r29 == ANM_CANOE_ROW_LEFT && mProcVar5.field_0x3012 == 1)) {
|
||||
return procCanoePaddleShiftInit(var_r29);
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
if (param_0 == -3) {
|
||||
if (mProcVar3.field_0x300e.z == 1) {
|
||||
if (mProcVar5.field_0x3012 == 1) {
|
||||
return procCanoePaddleShiftInit(ANM_CANOE_ROW_LEFT);
|
||||
}
|
||||
return procCanoePaddleShiftInit(ANM_CANOE_ROW_RIGHT);
|
||||
@@ -788,7 +788,7 @@ int daAlink_c::procCanoeRowInit(int param_0) {
|
||||
field_0x3198 = -3;
|
||||
}
|
||||
|
||||
if (mProcVar3.field_0x300e.z == 1) {
|
||||
if (mProcVar5.field_0x3012 == 1) {
|
||||
var_r29 = ANM_CANOE_ROW_RIGHT;
|
||||
} else {
|
||||
var_r29 = ANM_CANOE_ROW_LEFT;
|
||||
@@ -803,7 +803,7 @@ int daAlink_c::procCanoeRowInit(int param_0) {
|
||||
BOOL var_r24 = 0;
|
||||
|
||||
if (var_r29 == ANM_CANOE_ROW_LEFT_BACK || var_r29 == ANM_CANOE_ROW_RIGHT_BACK) {
|
||||
mProcVar3.field_0x300e.x = 1;
|
||||
mProcVar3.field_0x300e = 1;
|
||||
if (temp_r26->speedF > 0.5f * (-var_f31 * daAlinkHIO_canoe_c0::m.mBackSpeedRate)) {
|
||||
var_r24 = 1;
|
||||
}
|
||||
@@ -811,7 +811,7 @@ int daAlink_c::procCanoeRowInit(int param_0) {
|
||||
field_0x3478 = 32.0f;
|
||||
mProcVar0.field_0x3008 = 0;
|
||||
} else {
|
||||
mProcVar3.field_0x300e.x = 0;
|
||||
mProcVar3.field_0x300e = 0;
|
||||
if (temp_r26->speedF < 0.5f * (var_f31 * getCanoeSpeedRate())) {
|
||||
var_r24 = 1;
|
||||
}
|
||||
@@ -854,7 +854,7 @@ int daAlink_c::procCanoeRow() {
|
||||
}
|
||||
} else {
|
||||
f32 var_f30 = daAlinkHIO_canoe_c0::m.mBtnRowAnmSpeed;
|
||||
if ((mProcVar3.field_0x300e.x == 1 && temp_r29->speedF > 0.5f * (-var_f30 * daAlinkHIO_canoe_c0::m.mBackSpeedRate)) || (mProcVar3.field_0x300e.x == 0 && temp_r29->speedF < 0.5f * (var_f30 * getCanoeSpeedRate()))) {
|
||||
if ((mProcVar3.field_0x300e == 1 && temp_r29->speedF > 0.5f * (-var_f30 * daAlinkHIO_canoe_c0::m.mBackSpeedRate)) || (mProcVar3.field_0x300e == 0 && temp_r29->speedF < 0.5f * (var_f30 * getCanoeSpeedRate()))) {
|
||||
var_f30 = daAlinkHIO_canoe_c0::m.mBtnRowStartAnmSpeed;
|
||||
}
|
||||
|
||||
@@ -867,13 +867,13 @@ int daAlink_c::procCanoeRow() {
|
||||
if (checkInputOnR()) {
|
||||
s16 temp_r0 = field_0x2fe2 - shape_angle.y;
|
||||
s16 var_r25;
|
||||
if (mProcVar3.field_0x300e.x == 1) {
|
||||
if (mProcVar3.field_0x300e == 1) {
|
||||
var_r25 = field_0x2fe2 + 0x8000;
|
||||
} else {
|
||||
var_r25 = field_0x2fe2;
|
||||
}
|
||||
|
||||
if (temp_r0 == -0x8000 || (temp_r0 > 0 && mProcVar3.field_0x300e.z == 1) || (temp_r0 < 0 && mProcVar3.field_0x300e.z == 0)) {
|
||||
if (temp_r0 == -0x8000 || (temp_r0 > 0 && mProcVar5.field_0x3012 == 1) || (temp_r0 < 0 && mProcVar5.field_0x3012 == 0)) {
|
||||
temp_r29->setAimAngle(var_r25);
|
||||
}
|
||||
var_r28 = mStickAngle;
|
||||
@@ -892,7 +892,7 @@ int daAlink_c::procCanoeRow() {
|
||||
var_f31 *= fabsf(cM_scos(var_r28));
|
||||
}
|
||||
|
||||
if (mProcVar3.field_0x300e.x == 0) {
|
||||
if (mProcVar3.field_0x300e == 0) {
|
||||
temp_r29->setAimSpeed(var_f31 * getCanoeSpeedRate());
|
||||
} else {
|
||||
temp_r29->setAimSpeed(-var_f31 * daAlinkHIO_canoe_c0::m.mBackSpeedRate);
|
||||
@@ -900,7 +900,7 @@ int daAlink_c::procCanoeRow() {
|
||||
}
|
||||
|
||||
if (temp_r27->checkPass(field_0x3478)) {
|
||||
if (mProcVar3.field_0x300e.z == 1) {
|
||||
if (mProcVar5.field_0x3012 == 1) {
|
||||
temp_r29->setPaddleOffsetRight();
|
||||
} else {
|
||||
temp_r29->setPaddleOffsetLeft();
|
||||
@@ -917,7 +917,7 @@ int daAlink_c::procCanoePaddleShiftInit(int param_0) {
|
||||
commonProcInit(PROC_CANOE_PADDLE_SHIFT);
|
||||
|
||||
f32 speed;
|
||||
if (mProcVar3.field_0x300e.z == 0) {
|
||||
if (mProcVar5.field_0x3012 == 0) {
|
||||
speed = daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mSpeed;
|
||||
} else {
|
||||
speed = -daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mSpeed;
|
||||
@@ -925,7 +925,7 @@ int daAlink_c::procCanoePaddleShiftInit(int param_0) {
|
||||
|
||||
setSingleAnime(ANM_CANOE_CHANGE_HAND, speed, daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mStartFrame, daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mEndFrame, daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mInterpolation);
|
||||
|
||||
if (mProcVar3.field_0x300e.z == 1) {
|
||||
if (mProcVar5.field_0x3012 == 1) {
|
||||
field_0x2f92 = 0;
|
||||
field_0x2f93 = 0xFE;
|
||||
}
|
||||
@@ -950,14 +950,14 @@ int daAlink_c::procCanoePaddleShift() {
|
||||
} else if (checkAnmEnd(frame_ctrl)) {
|
||||
procCanoeRowInit(field_0x3198);
|
||||
} else if (frame_ctrl->checkPass(11)) {
|
||||
if (mProcVar3.field_0x300e.z == 0) {
|
||||
if (mProcVar5.field_0x3012 == 0) {
|
||||
field_0x2f92 = 0;
|
||||
field_0x2f93 = 0xFE;
|
||||
mProcVar3.field_0x300e.z = 1;
|
||||
mProcVar5.field_0x3012 = 1;
|
||||
} else {
|
||||
field_0x2f92 = 0xFE;
|
||||
field_0x2f93 = 5;
|
||||
mProcVar3.field_0x300e.z = 0;
|
||||
mProcVar5.field_0x3012 = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -979,7 +979,7 @@ int daAlink_c::procCanoePaddlePutInit(int param_0) {
|
||||
commonProcInit(PROC_CANOE_PADDLE_PUT);
|
||||
|
||||
f32 var_f31;
|
||||
if (mProcVar3.field_0x300e.z == 0) {
|
||||
if (mProcVar5.field_0x3012 == 0) {
|
||||
var_f31 = daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mSpeed;
|
||||
} else {
|
||||
var_f31 = -daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mSpeed;
|
||||
@@ -987,12 +987,12 @@ int daAlink_c::procCanoePaddlePutInit(int param_0) {
|
||||
|
||||
setSingleAnime(ANM_CANOE_CHANGE_HAND, var_f31, daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mStartFrame, daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mEndFrame, daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mInterpolation);
|
||||
|
||||
if (mProcVar3.field_0x300e.z == 1) {
|
||||
if (mProcVar5.field_0x3012 == 1) {
|
||||
field_0x2f92 = 0;
|
||||
field_0x2f93 = 0xFE;
|
||||
}
|
||||
|
||||
mProcVar3.field_0x300e.x = param_0;
|
||||
mProcVar3.field_0x300e = param_0;
|
||||
|
||||
setSyncCanoePos();
|
||||
((daCanoe_c*)mRideAcKeep.getActor())->setAimSpeed(0.0f);
|
||||
@@ -1021,7 +1021,7 @@ int daAlink_c::procCanoePaddlePut() {
|
||||
daPy_frameCtrl_c* temp_r29 = &mUnderFrameCtrl[0];
|
||||
|
||||
if (checkAnmEnd(temp_r29)) {
|
||||
if (mProcVar3.field_0x300e.x != 0) {
|
||||
if (mProcVar3.field_0x300e != 0) {
|
||||
return procCanoeGetOffInit();
|
||||
}
|
||||
|
||||
@@ -1068,7 +1068,7 @@ int daAlink_c::procCanoePaddleGrab() {
|
||||
|
||||
if (checkAnmEnd(temp_r29) != 0) {
|
||||
f32 var_f31;
|
||||
if (mProcVar3.field_0x300e.z == 0) {
|
||||
if (mProcVar5.field_0x3012 == 0) {
|
||||
var_f31 = -daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mSpeed;
|
||||
} else {
|
||||
var_f31 = daAlinkHIO_canoe_c0::m.mLeftRightChangeAnm.mSpeed;
|
||||
@@ -1078,7 +1078,7 @@ int daAlink_c::procCanoePaddleGrab() {
|
||||
mUpperFrameCtrl[0].setFrame(11.0f);
|
||||
getNowAnmPackUpper(UPPER_0)->setFrame(11.0f);
|
||||
|
||||
if (mProcVar3.field_0x300e.z == 1) {
|
||||
if (mProcVar5.field_0x3012 == 1) {
|
||||
field_0x2f92 = 0;
|
||||
field_0x2f93 = 0xFE;
|
||||
} else {
|
||||
@@ -1173,9 +1173,9 @@ int daAlink_c::procCanoeFishingWaitInit() {
|
||||
setSyncCanoePos();
|
||||
|
||||
mProcVar2.field_0x300c = 0;
|
||||
mProcVar3.field_0x300e.x = 0;
|
||||
mProcVar3.field_0x300e = 0;
|
||||
mProcVar0.field_0x3008 = 0;
|
||||
mProcVar3.field_0x300e.x = cLib_minMaxLimit<s16>((s16)(field_0x311a - shape_angle.y), -0x3800, 0x3800);
|
||||
mProcVar3.field_0x300e = cLib_minMaxLimit<s16>((s16)(field_0x311a - shape_angle.y), -0x3800, 0x3800);
|
||||
field_0x311a = 0;
|
||||
return 1;
|
||||
}
|
||||
@@ -1207,7 +1207,7 @@ int daAlink_c::procCanoeFishingWait() {
|
||||
}
|
||||
} else if (!checkNextActionCanoe() && checkCanoeFishingWaitAnime()) {
|
||||
if (mProcVar0.field_0x3008 == 0) {
|
||||
if (daPy_addCalcShort(&mBodyAngle.y, mProcVar3.field_0x300e.x, 2, 0x800, 0x200) == 0) {
|
||||
if (daPy_addCalcShort(&mBodyAngle.y, mProcVar3.field_0x300e, 2, 0x800, 0x200) == 0) {
|
||||
mProcVar0.field_0x3008 = 1;
|
||||
}
|
||||
} else if (checkInputOnR() && ((mStickAngle > 0x2000 && mStickAngle < 0x6000) || (mStickAngle < -0x2000 && mStickAngle > -0x6000))) {
|
||||
@@ -1287,12 +1287,12 @@ int daAlink_c::procCanoeFishingGetInit() {
|
||||
var_r30 = ANM_CANOE_FISH_LEFT;
|
||||
field_0x3478 = 14.0f;
|
||||
field_0x347c = 30.0f;
|
||||
mProcVar3.field_0x300e.x = 0;
|
||||
mProcVar3.field_0x300e = 0;
|
||||
} else {
|
||||
var_r30 = ANM_CANOE_FISH_RIGHT;
|
||||
field_0x3478 = 24.0f;
|
||||
field_0x347c = 45.0f;
|
||||
mProcVar3.field_0x300e.x = 1;
|
||||
mProcVar3.field_0x300e = 1;
|
||||
}
|
||||
|
||||
setSyncCanoePos();
|
||||
@@ -1717,7 +1717,7 @@ int daAlink_c::procFishingCastInit() {
|
||||
mNormalSpeed = 0.0f;
|
||||
|
||||
mProcVar2.field_0x300c = 0;
|
||||
mProcVar3.field_0x300e.x = 0;
|
||||
mProcVar3.field_0x300e = 0;
|
||||
mItemVar0.field_0x3018 = 1;
|
||||
|
||||
if (checkFishingRodItem(mEquipItem)) {
|
||||
@@ -1758,7 +1758,7 @@ int daAlink_c::procFishingCast() {
|
||||
current.angle.y = shape_angle.y;
|
||||
}
|
||||
|
||||
if (mProcVar3.field_0x300e.x != 0) {
|
||||
if (mProcVar3.field_0x300e != 0) {
|
||||
mUpperFrameCtrl[2].setRate(0.0f);
|
||||
mUpperFrameCtrl[2].setFrame(0.0f);
|
||||
getNowAnmPackUpper(UPPER_2)->setFrame(0.0f);
|
||||
@@ -1784,13 +1784,13 @@ int daAlink_c::procFishingFoodInit() {
|
||||
mDemo.setSpecialDemoType();
|
||||
commonProcInit(PROC_FISHING_FOOD);
|
||||
setSingleAnime(ANM_BOTTLE_OPEN, 1.0f, 0.0f, 21, 3.0f);
|
||||
mProcVar3.field_0x300e.x = mSelectItemId;
|
||||
mProcVar3.field_0x300e = mSelectItemId;
|
||||
|
||||
if (checkFishingRodItem(mEquipItem)) {
|
||||
mProcVar3.field_0x300e.y = 0;
|
||||
mProcVar4.field_0x3010 = 0;
|
||||
mSelectItemId = checkItemSetButton(mEquipItem);
|
||||
} else {
|
||||
mProcVar3.field_0x300e.y = 1;
|
||||
mProcVar4.field_0x3010 = 1;
|
||||
keepItemData();
|
||||
deleteEquipItem(0, 0);
|
||||
mSelectItemId = checkItemSetButton(0x108);
|
||||
@@ -1808,7 +1808,7 @@ int daAlink_c::procFishingFoodInit() {
|
||||
int daAlink_c::procFishingFood() {
|
||||
if (mUnderFrameCtrl[0].checkAnmEnd()) {
|
||||
if (mProcVar2.field_0x300c != 0) {
|
||||
if (mProcVar3.field_0x300e.y != 0) {
|
||||
if (mProcVar4.field_0x3010 != 0) {
|
||||
returnKeepItemData();
|
||||
}
|
||||
resetSpecialEvent();
|
||||
@@ -1816,17 +1816,17 @@ int daAlink_c::procFishingFood() {
|
||||
setSingleAnime(ANM_BOTTLE_OPEN, -1.0f, 0.0f, mUnderFrameCtrl[0].getEnd(), -1.0f);
|
||||
mProcVar2.field_0x300c = 1;
|
||||
|
||||
u32 temp_r3 = dComIfGp_getSelectItem(mProcVar3.field_0x300e.x);
|
||||
if (temp_r3 == WORM || dComIfGp_getSelectItemNum(mProcVar3.field_0x300e.x) == 1) {
|
||||
dComIfGs_setEquipBottleItemEmpty(mProcVar3.field_0x300e.x);
|
||||
u32 temp_r3 = dComIfGp_getSelectItem(mProcVar3.field_0x300e);
|
||||
if (temp_r3 == WORM || dComIfGp_getSelectItemNum(mProcVar3.field_0x300e) == 1) {
|
||||
dComIfGs_setEquipBottleItemEmpty(mProcVar3.field_0x300e);
|
||||
} else {
|
||||
dComIfGp_addSelectItemNum(mProcVar3.field_0x300e.x, -1);
|
||||
dComIfGp_addSelectItemNum(mProcVar3.field_0x300e, -1);
|
||||
}
|
||||
|
||||
if (mItemMode != NO_ITEM) {
|
||||
dComIfGs_setEquipBottleItemIn(mProcVar3.field_0x300e.x, mItemMode);
|
||||
dComIfGs_setEquipBottleItemIn(mProcVar3.field_0x300e, mItemMode);
|
||||
if (mItemMode == BEE_CHILD) {
|
||||
dComIfGp_setSelectItemNum(mProcVar3.field_0x300e.x, 1);
|
||||
dComIfGp_setSelectItemNum(mProcVar3.field_0x300e, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
* Player Dominion Rod action handling
|
||||
*/
|
||||
|
||||
#include "d/actor/d_a_alink.h"
|
||||
#include "d/actor/d_a_crod.h"
|
||||
#include "d/actor/d_a_cstatue.h"
|
||||
|
||||
/* 800E12E0-800E1310 0DBC20 0030+00 1/1 0/0 0/0 .text checkLv6BossRoom__9daAlink_cFv */
|
||||
@@ -34,7 +36,7 @@ f32 daAlink_c::getCopyRodBallDisMax() const {
|
||||
/* 800E1374-800E1390 0DBCB4 001C+00 6/6 0/0 7/7 .text getCopyRodControllActor__9daAlink_cFv */
|
||||
fopAc_ac_c* daAlink_c::getCopyRodControllActor() {
|
||||
if (mCopyRodAcKeep.getActor() != NULL) {
|
||||
return static_cast<daCrod_c*>(mCopyRodAcKeep.getActor())->getControllActor();
|
||||
return ((daCrod_c*)mCopyRodAcKeep.getActor())->getControllActor();
|
||||
}
|
||||
|
||||
return NULL;
|
||||
@@ -44,7 +46,7 @@ fopAc_ac_c* daAlink_c::getCopyRodControllActor() {
|
||||
*/
|
||||
fopAc_ac_c* daAlink_c::getCopyRodCameraActor() {
|
||||
if (mCopyRodAcKeep.getActor() != NULL) {
|
||||
return static_cast<daCrod_c*>(mCopyRodAcKeep.getActor())->getCameraActor();
|
||||
return ((daCrod_c*)mCopyRodAcKeep.getActor())->getCameraActor();
|
||||
}
|
||||
|
||||
return NULL;
|
||||
@@ -54,10 +56,9 @@ fopAc_ac_c* daAlink_c::getCopyRodCameraActor() {
|
||||
void daAlink_c::initCopyRodUpperAnimeSpeed(int param_0) {
|
||||
if (!checkCopyRodThrowAnime()) {
|
||||
if (param_0) {
|
||||
f32 tmp_0 = 0.0f;
|
||||
mUpperFrameCtrl[2].setRate(tmp_0);
|
||||
mUpperFrameCtrl[2].setFrame(tmp_0);
|
||||
getNowAnmPackUpper(UPPER_2)->setFrame(tmp_0);
|
||||
mUpperFrameCtrl[2].setRate(0.0f);
|
||||
mUpperFrameCtrl[2].setFrame(0.0f);
|
||||
getNowAnmPackUpper(UPPER_2)->setFrame(0.0f);
|
||||
} else {
|
||||
mUpperFrameCtrl[2].setRate(daAlinkHIO_boom_c0::m.mIdleAnmSpeed);
|
||||
}
|
||||
@@ -73,7 +74,7 @@ BOOL daAlink_c::checkForestOldCentury() {
|
||||
/* 800E145C-800E1530 0DBD9C 00D4+00 1/0 0/0 0/0 .text checkCopyRodTopUse__9daAlink_cFv */
|
||||
BOOL daAlink_c::checkCopyRodTopUse() {
|
||||
// Event flag 0x2580: Dominion Rod power restored
|
||||
return (dComIfGs_isEventBit(0x2580) && !(mProcID == PROC_UNEQUIP && mProcVar3.field_0x300e.x != 0)) ||
|
||||
return (dComIfGs_isEventBit(0x2580) && !(mProcID == PROC_UNEQUIP && mProcVar3.field_0x300e != 0)) ||
|
||||
i_dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x15 ||
|
||||
checkForestOldCentury();
|
||||
}
|
||||
@@ -96,7 +97,30 @@ void daAlink_c::setCopyRodControllAnime() {
|
||||
/* 800E15FC-800E1748 0DBF3C 014C+00 1/1 0/0 0/0 .text
|
||||
* setCopyRodControllUpperSpeedRate__9daAlink_cFv */
|
||||
void daAlink_c::setCopyRodControllUpperSpeedRate() {
|
||||
// NONMATCHING
|
||||
f32 var_f31;
|
||||
if (checkAttentionLock()) {
|
||||
var_f31 = 1.0f;
|
||||
} else {
|
||||
if (mProcID == PROC_STEP_MOVE) {
|
||||
var_f31 = fabsf(field_0x3478 / daAlinkHIO_move_c0::m.mMaxSpeed);
|
||||
} else {
|
||||
var_f31 = fabsf(mNormalSpeed / daAlinkHIO_move_c0::m.mMaxSpeed);
|
||||
}
|
||||
|
||||
if (checkHeavyStateOn(1, 1)) {
|
||||
var_f31 *= 1.0f / (mHeavySpeedMultiplier * mHeavySpeedMultiplier);
|
||||
}
|
||||
}
|
||||
|
||||
if (var_f31 > 1.0f) {
|
||||
var_f31 = 1.0f;
|
||||
}
|
||||
|
||||
cLib_chaseF(&field_0x33e8, var_f31, 0.15f);
|
||||
|
||||
daPy_frameCtrl_c* frame_ctrl = &mUpperFrameCtrl[2];
|
||||
frame_ctrl->setFrame(field_0x33e8 * frame_ctrl->getEnd());
|
||||
getNowAnmPackUpper(UPPER_2)->setFrame(frame_ctrl->getFrame());
|
||||
}
|
||||
|
||||
/* 800E1748-800E1840 0DC088 00F8+00 2/2 0/0 0/0 .text setCopyRodModel__9daAlink_cFv */
|
||||
@@ -106,8 +130,10 @@ void daAlink_c::setCopyRodModel() {
|
||||
mHeldItemModel = initModel(mdl_data, 0x80000, 0x1000000);
|
||||
field_0x0724 = loadAramItemBrk(0x323, mHeldItemModel);
|
||||
mDoExt_setCurrentHeap(heap);
|
||||
|
||||
field_0x0724->setFrame(0.0f);
|
||||
field_0x2f94 = 2;
|
||||
|
||||
mAtCps[0].SetAtSpl(dCcG_At_Spl_UNK_0);
|
||||
mAtCps[0].SetAtAtp(0);
|
||||
mAtCps[0].SetAtSe(20);
|
||||
@@ -115,6 +141,7 @@ void daAlink_c::setCopyRodModel() {
|
||||
mAtCps[0].OnAtSetBit();
|
||||
mAtCps[0].SetAtHitCallback(NULL);
|
||||
mAtCps[0].SetAtMtrl(dCcD_MTRL_NONE);
|
||||
|
||||
mHeldItemModel->setBaseTRMtx(mpLinkModel->getAnmMtx(field_0x30c0));
|
||||
mHeldItemModel->calc();
|
||||
}
|
||||
@@ -144,7 +171,7 @@ void daAlink_c::setCopyRodReadyAnime() {
|
||||
|
||||
/* 800E191C-800E1A30 0DC25C 0114+00 1/1 0/0 0/0 .text throwCopyRod__9daAlink_cFv */
|
||||
void daAlink_c::throwCopyRod() {
|
||||
daCrod_c* copy_rod = static_cast<daCrod_c*>(mItemAcKeep.getActor());
|
||||
daCrod_c* copy_rod = ((daCrod_c*)mItemAcKeep.getActor());
|
||||
onNoResetFlg1(FLG1_UNK_10000);
|
||||
|
||||
if (checkCopyRodTopUse()) {
|
||||
@@ -372,7 +399,7 @@ int daAlink_c::procCopyRodSwingInit() {
|
||||
mNormalSpeed = 0.0f;
|
||||
current.angle.y = shape_angle.y;
|
||||
mProcVar2.field_0x300c = 1;
|
||||
mProcVar3.field_0x300e.x = 0;
|
||||
mProcVar3.field_0x300e = 0;
|
||||
|
||||
voiceStart(Z2SE_AL_V_ATTACK_S);
|
||||
mAtCps[0].SetR(40.0f);
|
||||
@@ -394,16 +421,16 @@ int daAlink_c::procCopyRodSwing() {
|
||||
setCopyRodControllAnime();
|
||||
}
|
||||
} else if (frameCtrl->getFrame() >= field_0x3478 && frameCtrl->getFrame() < field_0x347c) {
|
||||
if (mProcVar3.field_0x300e.x == 0) {
|
||||
if (mProcVar3.field_0x300e == 0) {
|
||||
seStartSwordCut(Z2SE_AL_COPYROD_SWING);
|
||||
}
|
||||
|
||||
mProcVar3.field_0x300e.x = 1;
|
||||
mProcVar3.field_0x300e = 1;
|
||||
if (changeCutReverseProc(ANM_CUT_RECOIL_A)) {
|
||||
return 1;
|
||||
}
|
||||
} else {
|
||||
mProcVar3.field_0x300e.x = 0;
|
||||
mProcVar3.field_0x300e = 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
||||
@@ -287,8 +287,7 @@ int daAlink_c::procCrawlMove() {
|
||||
}
|
||||
|
||||
/* 800F99FC-800F9ABC 0F433C 00C0+00 1/1 0/0 0/0 .text procCrawlAutoMoveInit__9daAlink_cFiP4cXyz */
|
||||
// r30 / r31 swap
|
||||
#ifdef NONMATCHING
|
||||
// NONMATCHING - r30 / r31 swap
|
||||
int daAlink_c::procCrawlAutoMoveInit(int param_0, cXyz* param_1) {
|
||||
BOOL var_r30 = dComIfGp_checkPlayerStatus0(0, 0x2000);
|
||||
commonProcInit(PROC_CRAWL_AUTO_MOVE);
|
||||
@@ -309,12 +308,6 @@ int daAlink_c::procCrawlAutoMoveInit(int param_0, cXyz* param_1) {
|
||||
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
int daAlink_c::procCrawlAutoMoveInit(int param_0, cXyz* param_1) {
|
||||
// NONMATCHING
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* 800F9ABC-800F9D7C 0F43FC 02C0+00 1/0 0/0 0/0 .text procCrawlAutoMove__9daAlink_cFv */
|
||||
int daAlink_c::procCrawlAutoMove() {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user