Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
d_a_obj_swchain.h
Go to the documentation of this file.
1#ifndef D_A_OBJ_SWCHAIN_H
2#define D_A_OBJ_SWCHAIN_H
3
5#include "d/d_com_inf_game.h"
6#include "d/d_model.h"
8
18class daObjSwChain_c : public fopAc_ac_c {
19public:
20 struct chain_s {
21 /* 0x00 */ dMdl_obj_c mModel;
22 /* 0x34 */ cXyz field_0x34;
23 /* 0x40 */ csXyz field_0x40;
24 /* 0x48 */ f32 field_0x48;
25 /* 0x4C */ u8 field_0x4c;
26 };
27
28 int Create();
29 int CreateHeap();
30 int create1st();
31 int execute();
38 void setTension();
41 int draw();
42 int _delete();
43
44 u8 getSwbit() { return fopAcM_GetParamBit(this, 0, 8); }
45 u8 getSwbit2() { return (mHookshotLength & 0xff00) >> 8; }
46 u8 getChainNum() { return fopAcM_GetParamBit(this, 8, 8); }
47 u8 getOutNum() { return fopAcM_GetParamBit(this, 16, 8); }
48 u8 getChainID() { return fopAcM_GetParamBit(this, 28, 4); }
50 int getCurrentChainNum() { return mOutNum; }
53 return (getCurrentChainNum() - 1) * 35.0f +
54 mChains[0].field_0x34.abs(chain_p->field_0x34);
55 }
56 BOOL checkDispEmphasis() { return fopAcM_isSwitch(this, getSwbit()) == FALSE; }
57 bool checkCarry() { return mCarry == 1; }
58 void setRatioForChandelier(f32 ratio) { mRatio = ratio; }
59
61 if (mCarry != 0 && (home.roomNo == 4 || home.roomNo == 6) && mOutNum >= field_0xa69 &&
62 field_0xa9c == 0)
63 {
65 chain_s* swChain = &mChains[mChainNum] - mOutNum + 1;
66 cXyz cStack_54;
67 cXyz cStack_60;
68 cStack_54 = swChain->field_0x34;
69 cStack_60 = mChains[mChainNum].field_0x34;
70 f32 dVar10 = cStack_60.abs(cStack_54);
71 f32 dVar13 = (field_0xa67 - 2) * 35.0f;
72 cXyz local_6c;
74 local_6c.x = player->getSpeedF() * cM_ssin(player->current.angle.y);
75 local_6c.z = player->getSpeedF() * cM_scos(player->current.angle.y);
76 if (cStack_78.inprodXZ(local_6c) < 0.0f && dVar10 > dVar13 - 35.0f) {
77 return TRUE;
78 }
79 }
80 return FALSE;
81 }
82
83private:
85 /* 0x570 */ J3DModel* mpModel;
87 /* 0x578 */ dMdl_c mModel;
88 /* 0x598 */ dCcD_Stts mStts;
89 /* 0x5D4 */ dCcD_Sph mSph1;
90 /* 0x70C */ dCcD_Sph mSph2;
91 /* 0x844 */ dBgS_ObjAcch mBgc;
93 /* 0xA5C */ u16 mHookshotLength;
94 /* 0xA5E */ u16 field_0xa5e;
95 /* 0xA60 */ u8 field_0xa60;
96 /* 0xA60 */ u8 field_0xa61;
97 /* 0xA62 */ u8 mCarry;
98 /* 0xA63 */ u8 mChainID;
99 /* 0xA64 */ u8 mOutNum;
100 /* 0xA65 */ u8 mChainNum;
101 /* 0xA66 */ u8 mHookShotLength;
102 /* 0xA67 */ u8 field_0xa67;
103 /* 0xA68 */ u8 field_0xa68;
104 /* 0xA69 */ u8 field_0xa69;
105 /* 0xA6A */ u8 field_0xa6a;
106 /* 0xA6A */ u8 field_0xa6b;
107 /* 0xA6C */ u8 field_0xa6c;
108 /* 0xA6D */ u8 field_0xa6d;
109 /* 0xA6E */ s16 field_0xa6e;
110 /* 0xA70 */ s16 field_0xa70;
111 /* 0xA74 */ chain_s* mChains;
112 /* 0xA78 */ cXyz field_0xa78;
113 /* 0xA84 */ u8 field_0xa84[0xa90 - 0xa84];
114 /* 0xA90 */ f32 pow;
115 /* 0xA94 */ f32 field_0xa94;
116 /* 0xA98 */ f32 mRatio;
117 /* 0xA9C */ u8 field_0xa9c;
118 /* 0xA9D */ u8 field_0xa9d;
119 /* 0xA9E */ u8 field_0xa9e;
120#if DEBUG
121 /* 0xAA0 */ cXyz field_0xac0;
122#endif
123};
124
126
127#endif /* D_A_OBJ_SWCHAIN_H */
f32 cM_ssin(s16 x)
Definition c_math.h:23
f32 cM_scos(s16 x)
Definition c_math.h:19
Definition J3DModelData.h:17
Definition J3DModel.h:43
Definition c_sxyz.h:10
Definition d_bg_s_acch.h:15
Definition d_bg_s_acch.h:247
Definition d_cc_d.h:473
Definition d_cc_d.h:269
Definition d_model.h:20
Definition d_model.h:10
Chain Switch.
Definition d_a_obj_swchain.h:18
u8 mOutNum
Definition d_a_obj_swchain.h:99
cXyz field_0xac0
Definition d_a_obj_swchain.h:121
dCcD_Stts mStts
Definition d_a_obj_swchain.h:88
void chain_control2()
u8 getSwbit2()
Definition d_a_obj_swchain.h:45
u8 field_0xa84[0xa90 - 0xa84]
Definition d_a_obj_swchain.h:113
u8 field_0xa9e
Definition d_a_obj_swchain.h:119
f32 pow
Definition d_a_obj_swchain.h:114
u8 field_0xa68
Definition d_a_obj_swchain.h:103
u8 getOutNum()
Definition d_a_obj_swchain.h:47
int Create()
Definition d_a_obj_swchain.cpp:157
void setChainMtx()
u8 getChainID()
Definition d_a_obj_swchain.h:48
dMdl_c mModel
Definition d_a_obj_swchain.h:87
u8 field_0xa60
Definition d_a_obj_swchain.h:95
dCcD_Sph mSph2
Definition d_a_obj_swchain.h:90
f32 mRatio
Definition d_a_obj_swchain.h:116
s16 field_0xa6e
Definition d_a_obj_swchain.h:109
void getChainBasePos(cXyz *)
f32 field_0xa94
Definition d_a_obj_swchain.h:115
int CreateHeap()
Definition d_a_obj_swchain.cpp:205
u8 field_0xa9d
Definition d_a_obj_swchain.h:118
void setRatioForChandelier(f32 ratio)
Definition d_a_obj_swchain.h:58
request_of_phase_process_class mPhase
Definition d_a_obj_swchain.h:84
chain_s * mChains
Definition d_a_obj_swchain.h:111
dBgS_ObjAcch mBgc
Definition d_a_obj_swchain.h:91
u8 getSwbit()
Definition d_a_obj_swchain.h:44
BOOL checkTight()
Definition d_a_obj_swchain.h:60
u8 field_0xa61
Definition d_a_obj_swchain.h:96
u8 getHookShotLength()
Definition d_a_obj_swchain.h:49
u8 mChainNum
Definition d_a_obj_swchain.h:100
u8 field_0xa6a
Definition d_a_obj_swchain.h:105
u8 mHookShotLength
Definition d_a_obj_swchain.h:101
void chain_control()
u8 field_0xa67
Definition d_a_obj_swchain.h:102
BOOL checkDispEmphasis()
Definition d_a_obj_swchain.h:56
u8 mCarry
Definition d_a_obj_swchain.h:97
f32 getCurrentChainLength()
Definition d_a_obj_swchain.h:51
BOOL checkPlayerPull()
void initChainMtx()
u8 field_0xa9c
Definition d_a_obj_swchain.h:117
u8 field_0xa6c
Definition d_a_obj_swchain.h:107
int getCurrentChainNum()
Definition d_a_obj_swchain.h:50
cXyz field_0xa78
Definition d_a_obj_swchain.h:112
u8 field_0xa69
Definition d_a_obj_swchain.h:104
u16 mHookshotLength
Definition d_a_obj_swchain.h:93
J3DModelData * mChainModelData
Definition d_a_obj_swchain.h:86
s16 field_0xa70
Definition d_a_obj_swchain.h:110
dBgS_AcchCir mAcchCir
Definition d_a_obj_swchain.h:92
u16 field_0xa5e
Definition d_a_obj_swchain.h:94
u8 getChainNum()
Definition d_a_obj_swchain.h:46
dCcD_Sph mSph1
Definition d_a_obj_swchain.h:89
int execute()
Definition d_a_obj_swchain.cpp:304
u8 mChainID
Definition d_a_obj_swchain.h:98
void chain_count_control()
int create1st()
Definition d_a_obj_swchain.cpp:234
u8 field_0xa6b
Definition d_a_obj_swchain.h:106
u8 field_0xa6d
Definition d_a_obj_swchain.h:108
J3DModel * mpModel
Definition d_a_obj_swchain.h:85
bool checkCarry()
Definition d_a_obj_swchain.h:57
Definition d_a_player.h:299
f32 getSpeedF() const
Definition d_a_player.h:893
Definition f_op_actor.h:230
actor_place home
Definition f_op_actor.h:249
actor_place current
Definition f_op_actor.h:251
static cXyz chain_p[4]
Definition d_a_obj_msima.cpp:256
STATIC_ASSERT(sizeof(daObjSwChain_c)==0xaa0)
daPy_py_c * daPy_getPlayerActorClass()
Definition d_a_player.h:1260
int BOOL
Definition types.h:33
signed short int s16
Definition types.h:9
float f32
Definition types.h:25
unsigned short int u16
Definition types.h:10
unsigned char u8
Definition types.h:8
BOOL fopAcM_isSwitch(const fopAc_ac_c *i_actor, int sw)
Definition f_op_actor_mng.h:459
u32 fopAcM_GetParamBit(void *ac, u8 shift, u8 bit)
Definition f_op_actor_mng.h:196
s16 y
Definition c_sxyz.h:7
f32 z
Definition mtx.h:14
f32 x
Definition mtx.h:14
csXyz angle
Definition f_op_actor.h:206
s8 roomNo
Definition f_op_actor.h:207
Definition c_xyz.h:7
f32 inprodXZ(const Vec &other) const
Definition c_xyz.h:147
f32 abs() const
Definition c_xyz.h:137
Definition d_a_obj_swchain.h:20
dMdl_obj_c mModel
Definition d_a_obj_swchain.h:21
f32 field_0x48
Definition d_a_obj_swchain.h:24
cXyz field_0x34
Definition d_a_obj_swchain.h:22
u8 field_0x4c
Definition d_a_obj_swchain.h:25
csXyz field_0x40
Definition d_a_obj_swchain.h:23
Definition c_phase.h:17