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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
|
#ifndef D_D_TIMER_H
#define D_D_TIMER_H
#include "d/d_msg_object.h"
#include "f_op/f_op_msg.h"
class CPaneMgr;
class JKRArchive;
class JKRExpHeap;
s32 dTimer_createStockTimer();
fpc_ProcID dTimer_createTimer(s32 i_mode, u32 i_limitMs, u8 i_type, u8 param_3, f32 param_4, f32 param_5,
f32 param_6, f32 param_7);
u32 dTimer_createGetIn2D(s32 param_0, cXyz i_pos);
int dTimer_getRestTimeMs();
bool dTimer_isStart();
void dTimer_show();
void dTimer_hide();
u8 dTimer_isReadyFlag();
class dDlst_TimerScrnDraw_c : public dDlst_base_c {
public:
struct getin_info {
/* 0x0 */ f32 bck_frame;
/* 0x4 */ f32 pikari_frame;
/* 0x8 */ s16 pos_x;
/* 0xA */ s16 pos_y;
/* 0xC */ u8 field_0xc;
/* 0xD */ u8 field_0xd;
}; // Size: 0x10
dDlst_TimerScrnDraw_c();
void setHIO();
void setScreen(s32, JKRArchive*);
void setScreenBase();
void setScreenBoatRace();
void setScreenRider();
void hideDenominator();
void deleteScreen();
void changeNumberTexture(J2DPane*, int);
const char* getNumber(int);
void setTimer(int);
void setCounter(u8, u8);
void setParentPos(f32, f32);
void setTimerPos(f32, f32);
void setCounterPos(f32, f32);
void setImagePos(f32, f32);
void setShowType(u8);
void anime();
BOOL closeAnime();
int createGetIn(cXyz);
s32 createStart(u16);
bool checkStartAnimeEnd();
void playBckAnimation(f32);
#if VERSION == VERSION_GCN_JPN
bool isLeadByte(int);
#endif
void drawPikari(int);
virtual void draw();
virtual ~dDlst_TimerScrnDraw_c();
void show() { mTimerVisible = 1; }
void hide() { mTimerVisible = 0; }
void setHIOType(u8 i_type) { mHIOType = i_type; }
u8 getHIOType() { return field_0x3e2; }
f32 getTimerTransY() { return mTimerTransY; }
void resetCowID() { mCowID = 0; }
bool isVisible() { return mTimerVisible; }
f32 acc(s16 param_0, s16 param_1, s16 param_2) {
return ((f32)(param_1 - param_2) * (f32)(param_1 - param_2)) / ((f32)(param_0 - param_2) * (f32)(param_0 - param_2));
}
void setTimerTrans(f32 x, f32 y) {
mTimerTransX = x;
mTimerTransY = y;
}
private:
/* 0x004 */ J2DScreen* mpScreen;
/* 0x008 */ J2DScreen* mpGetInScreen;
/* 0x00C */ J2DAnmTransform* mpGetInBck;
/* 0x010 */ CPaneMgr* mpParent;
/* 0x014 */ CPaneMgr* mpCowParent;
/* 0x018 */ CPaneMgr* mpTimeParent;
/* 0x01C */ CPaneMgr* mpImageParent;
/* 0x020 */ CPaneMgr* mpGetInParent;
/* 0x024 */ CPaneMgr* mpGetInRoot;
/* 0x028 */ CPaneMgr* mpGetInText;
/* 0x02C */ J2DPane* mTimerText[6][2];
/* 0x05C */ J2DPane* field_0x5c[2][2];
/* 0x06C */ J2DPicture* field_0x6c[2];
/* 0x074 */ J2DPicture* field_0x74[2];
/* 0x07C */ JKRArchive* mpArchive;
/* 0x080 */ getin_info m_getin_info[51];
/* 0x3B0 */ f32 mParentAlpha;
/* 0x3B4 */ f32 mTimerAlpha;
/* 0x3B8 */ f32 mCounterAlpha;
/* 0x3BC */ f32 mImageAlpha;
/* 0x3C0 */ f32 mTimerTransX;
/* 0x3C4 */ f32 mTimerTransY;
/* 0x3C8 */ s32 field_0x3C8;
/* 0x3CC */ int field_0x3CC;
/* 0x3D0 */ int field_0x3D0;
/* 0x3D4 */ int field_0x3D4;
/* 0x3D8 */ int field_0x3D8;
/* 0x3DC */ u8 mCowID;
/* 0x3DD */ u8 mHIOType;
/* 0x3DE */ u8 field_0x3DE;
/* 0x3DF */ u8 field_0x3DF;
/* 0x3E0 */ u8 field_0x3E0;
/* 0x3E1 */ u8 mTimerVisible;
/* 0x3E2 */ u8 field_0x3e2;
};
class dTimer_c : public msg_class {
public:
int _create();
int _execute();
int _draw();
int _delete();
int deleteCheck();
int start(int, s16);
int start(int);
int stock_start(s16);
bool stock_start();
int stop(u8);
int restart(u8);
int end(int);
int deleteRequest();
int getTimeMs();
int getLimitTimeMs();
int getRestTimeMs();
bool isStart();
int createGetIn(cXyz);
s32 createStart(u16 param_0) { return mp_tm_scrn->createStart(param_0); }
void show() { mp_tm_scrn->show(); }
void hide() { mp_tm_scrn->hide(); }
void setShowType(u8 i_type) { mp_tm_scrn->setShowType(i_type); }
void setCounterPos(f32 param_0, f32 param_1) { mp_tm_scrn->setCounterPos(param_0, param_1); }
void setImagePos(f32 param_0, f32 param_1) { mp_tm_scrn->setImagePos(param_0, param_1); }
void setTimerPos(f32 param_0, f32 param_1) { mp_tm_scrn->setTimerPos(param_0, param_1); }
u8 isReadyFlag() { return m_is_ready; }
private:
/* 0x0FC */ dDlst_TimerScrnDraw_c* mp_tm_scrn;
/* 0x100 */ JKRExpHeap* mp_heap;
/* 0x104 */ u8 field_0x104[4];
/* 0x108 */ request_of_phase_process_class m_phase;
/* 0x110 */ OSTime m_start_time;
/* 0x118 */ OSTime m_time;
/* 0x120 */ OSTime field_0x120;
/* 0x128 */ OSTime field_0x128;
/* 0x130 */ OSTime field_0x130;
/* 0x138 */ OSTime field_0x138;
/* 0x140 */ OSTime mLimitTime;
/* 0x148 */ u8 field_0x148[0x150 - 0x148];
/* 0x150 */ int field_0x150;
/* 0x154 */ int m_timer_mode;
/* 0x158 */ int field_0x158;
/* 0x15C */ int field_0x15c;
/* 0x160 */ int field_0x160;
/* 0x164 */ int m_se_idx;
/* 0x168 */ s16 field_0x168;
/* 0x16A */ u8 field_0x16A;
/* 0x16B */ u8 field_0x16B;
/* 0x16C */ u8 m_mode;
/* 0x16D */ u8 field_0x16D;
/* 0x16E */ u8 m_is_ready;
};
#endif /* D_D_TIMER_H */
|