blob: 99f23557e42e146436acef61bee151352f57cee5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
#ifndef D_A_OBJ_BKY_ROCK_H
#define D_A_OBJ_BKY_ROCK_H
#include "d/d_cc_d.h"
#include "d/d_model.h"
#include "f_op/f_op_actor_mng.h"
/**
* @ingroup actors-objects
* @class daBkyRock_c
* @brief Bomb Shack Rock
*
* @details
*
*/
class daBkyRock_c : public fopAc_ac_c, public request_of_phase_process_class {
public:
struct _pieceData {
public:
/* 0x00 */ dMdl_obj_c mMdlObj;
/* 0x34 */ Vec position;
/* 0x40 */ f32 targetX;
/* 0x44 */ f32 targetZ;
/* 0x48 */ f32 scale;
/* 0x4C */ f32 speedY;
/* 0x50 */ s16 rotationX;
/* 0x52 */ s16 rotationZ;
/* 0x54 */ s16 rotationSpeed;
};
typedef void (daBkyRock_c::*exeProc)();
enum Mode {
MODE_0,
MODE_1,
MODE_2,
};
daBkyRock_c();
virtual ~daBkyRock_c();
int create();
int execute();
int draw();
int Delete();
void setModelMtx();
int createHeap();
void init();
void middleExe();
void exeModeNoDamage();
void exeModeDamage();
void exeModePiece();
bool chkHitBombArrow();
void initChangeModeBefore();
void initChangeModeAfter();
void pieceMove();
void pieceMoveInit();
void callBombEmt(int, u16 const*);
u8 getSwBit0() { return fopAcM_GetParamBit(this, 4, 8); }
u8 getSwBit1() { return fopAcM_GetParamBit(this, 12, 8); }
s8 getNameNo() { return fopAcM_GetParamBit(this, 0, 4); }
static dCcD_SrcCyl const s_CcDCyl;
static exeProc s_exeProc[3];
private:
/* 0x568 */ int mVibrationTimer;
/* 0x578 */ u8 mMode;
/* 0x579 */ bool field_0x579;
/* 0x57A */ bool field_0x57a;
/* 0x57B */ Mtx mMtx;
/* 0x5AC */ dBgW* mBgW;
/* 0x5B0 */ dCcD_Stts mStts;
/* 0x5EC */ dCcD_Cyl mCyls[2];
/* 0x864 */ J3DModel* mModels[3];
/* 0x870 */ _pieceData mPieces[20];
};
//STATIC_ASSERT(sizeof(daBkyRock_c) == 0xf50);
#endif /* D_A_OBJ_BKY_ROCK_H */
|