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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
#ifndef D_A_D_A_ITEM_STATIC_H
#define D_A_D_A_ITEM_STATIC_H
#include "SSystem/SComponent/c_lib.h"
#include "d/actor/d_a_itembase.h"
#include "d/d_particle.h"
#include "d/actor/d_a_player.h"
class daItem_c;
typedef void (daItem_c::*procFunc)();
class daItem_c : public daItemBase_c {
public:
enum Type_e {
TYPE_LAUNCH_e,
TYPE_FIXED_PLACE_e,
TYPE_UNK2_e,
TYPE_WAIT_e,
TYPE_SIMPLE_GET_e,
TYPE_BOOM_HIT_e,
TYPE_LAUNCH_NO_RND_e,
TYPE_FORCE_GET_e,
TYPE_LAUNCH_SMALL_e,
TYPE_LAUNCH_FROM_PLAYER_e,
};
enum Flag_e {
FLAG_UNK_2_e = (1 << 1),
FLAG_NO_MOVE_e = (1 << 2),
FLAG_NO_TIMER_e = (1 << 3),
FLAG_INIT_GET_ITEM_e = (1 << 4),
FLAG_DELETE_ITEM_e = (1 << 5),
};
enum Mode_e {
MODE_WAIT_e,
MODE_WATER_e,
};
enum Status_e {
STATUS_NORMAL_e,
STATUS_ENEMY_CARRY_e,
STATUS_SIMPLE_GET_DEMO_e,
STATUS_WAIT_GET_DEMO_EVENT_e,
STATUS_GET_DEMO_EVENT_e,
STATUS_BOOMERANG_CARRY_e,
STATUS_SW_ON_WAIT_e,
STATUS_BOOM_HIT_WAIT_e,
STATUS_FORCE_GET_e,
};
daItem_c() : mSparkleEmtr(0, 0) {}
void initBaseMtx();
void setBaseMtx();
void setBaseMtx_0();
void setBaseMtx_1();
void CreateInit();
void setCullInfo();
int _daItem_create();
int _daItem_execute();
int _daItem_draw();
int _daItem_delete();
void procInitNormal();
void procMainNormal();
void procMainEnemyCarry();
void procInitForceGet();
void procMainForceGet();
void procInitSimpleGetDemo();
void procMainSimpleGetDemo();
void procInitGetDemoEvent();
void procWaitGetDemoEvent();
void procMainGetDemoEvent();
void procInitBoomerangCarry();
void procMainBoomerangCarry();
void procInitSwOnWait();
void procMainSwOnWait();
void procInitBoomHitWait();
void procMainBoomHitWait();
void move_proc_call();
void mode_wait_init();
void mode_water_init();
void mode_wait();
void mode_water();
void itemGetNextExecute();
void itemGet();
BOOL checkCountTimer();
BOOL checkPlayerGet();
void checkYogan();
void deleteItem();
int itemActionForRupee();
int itemActionForHeart();
int itemActionForArrow();
int itemActionForBoomerang();
void bg_check();
void set_bound_se();
int CountTimer();
int initAction();
void initFlag();
void initScale();
void initSpeed(int);
void initAngle();
u32 startCtrl();
u32 startControl();
u32 endControl();
virtual void setTevStr();
void setStatus(u8 status) { mStatus = status; }
int getStatus() { return mStatus; }
void setFlag(u8 pFlag) { cLib_onBit(mFlag, pFlag); }
bool checkFlag(u8 flag) { return cLib_checkBit(mFlag, flag); }
void clrFlag(u8 flag) { cLib_offBit(mFlag, flag); }
bool checkBoomWindTgTimer() { return mBoomWindTgTimer == 0; }
static procFunc mFuncPtr[];
static const dCcD_SrcCyl m_cyl_src;
static s32 m_timer_max;
/* 0x92C */ s16 field_0x92c;
/* 0x92E */ u16 field_0x92e;
/* 0x930 */ cXyz mItemScale;
/* 0x93C */ int mSwitchNo;
/* 0x940 */ u16 field_0x940;
/* 0x942 */ s16 mWaitTimer;
/* 0x944 */ s16 mDisappearTimer;
/* 0x946 */ s16 mSimpleExistTimer;
/* 0x948 */ u8 mFlag;
/* 0x949 */ u8 mMode;
/* 0x94A */ u8 mStatus;
/* 0x94B */ u8 field_0x94b;
/* 0x94C */ u32 m_item_id;
/* 0x950 */ cXyz field_0x950;
/* 0x95C */ u8 mSwOnWaitTimer;
/* 0x95D */ bool field_0x95d;
/* 0x95E */ u8 mBoomWindTgTimer;
/* 0x95F */ u8 field_0x95f;
/* 0x960 */ daPy_boomerangMove_c mBoomerangMove;
/* 0x96C */ cXyz mLastPos;
/* 0x978 */ Z2SoundObjSimple mSound;
/* 0x998 */ dPa_followEcallBack mSparkleEmtr;
/* 0x9AC */ cXyz mSparklePos;
/* 0x9B8 */ u32 field_0x9b8;
/* 0x9BC */ u8 field_0x9bc[4];
/* 0x9C0 */ u8 field_0x9c0;
/* 0x9C1 */ u8 field_0x9c1;
}; // Size: 0x9C4
#endif /* D_A_D_A_ITEM_STATIC_H */
|