Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
d_a_passer_mng.h
Go to the documentation of this file.
1#ifndef D_A_PASSER_MNG_H
2#define D_A_PASSER_MNG_H
3
5#include "d/d_kankyo.h"
7
8class dPath;
9
18class daPasserMng_c : public fopAc_ac_c {
19public:
20 int execute();
21 int getPasserParam();
23 int create();
24 void create_init();
26
28 u8 getPathID() { return fopAcM_GetParam(this); }
29 u8 getIntervalTime() { return fopAcM_GetParam(this) >> 24; }
30 int getStartTime() { return (fopAcM_GetParam(this) >> 8) & 0xff; }
31 u8 getEndTime() { return (fopAcM_GetParam(this) >> 16) & 0xff; }
32 u8 getMaxNum() { return shape_angle.x & 0xFF; }
33 u8 getGroupNo() { return (shape_angle.x >> 8) & 0xff; }
34
38
42
43 int getTime() {
44 return getTimeHour() * 60 + getTimeMinute();
45 }
46
50
52 int childNum = 0;
53 fopAc_ac_c* pActor = NULL;
54 for (int i = 0; i < getMaxNum(); i++) {
56 if (pActor != NULL) {
57 childNum++;
58 }
59 }
60 return childNum;
61 }
62
63 bool checkOverlapping(int param_1, int param_2) {
64 int iVar1;
65 if ((u32)param_2 <= 6) {
66 iVar1 = (u8)param_2 - 1;
67 } else {
68 iVar1 = 6;
69 }
70 for (int i = 0; i < iVar1; i++) {
71 if (field_0x58a[i] == param_1) {
72 return true;
73 }
74 }
75 return false;
76 }
77
78 int getLuggageParamLow(u32 param_1) {
79 int paramLow;
80
81 paramLow = 0;
82 switch (param_1) {
83 case 0:
84 case 1:
85 if (cLib_getRndValue(0, 2) != 0) {
86 paramLow = 2;
87 }
88 break;
89 case 2:
90 case 8:
91 case 9:
92 case 10:
93 case 15:
94 switch(cLib_getRndValue(0, 3)) {
95 case 0:
96 paramLow = 0;
97 break;
98 case 1:
99 paramLow = 1;
100 break;
101 case 2:
102 paramLow = 4;
103 break;
104 }
105 break;
106 case 3:
107 case 11:
108 switch(cLib_getRndValue(0, 2)) {
109 case 0:
110 paramLow = 0;
111 break;
112 case 1:
113 paramLow = 4;
114 break;
115 }
116 break;
117 case 4:
118 case 5:
119 case 12:
120 case 13:
121 switch(cLib_getRndValue(0, 3)) {
122 case 0:
123 paramLow = 0;
124 break;
125 case 1:
126 paramLow = 1;
127 break;
128 case 2:
129 paramLow = 4;
130 break;
131 }
132 break;
133 case 6:
134 case 14:
135 switch (cLib_getRndValue(0, 2)) {
136 case 0:
137 paramLow = 0;
138 break;
139 case 1:
140 paramLow = 1;
141 break;
142 }
143 break;
144 case 7:
145 switch (cLib_getRndValue(0, 2)) {
146 case 0:
147 paramLow = 0;
148 break;
149 case 1:
150 paramLow = 4;
151 break;
152 }
153 break;
154 case 0x10:
155 case 0x17:
156 switch(cLib_getRndValue(0, 3)) {
157 case 0:
158 paramLow = 0;
159 break;
160 case 1:
161 paramLow = 8;
162 break;
163 case 2:
164 paramLow = 5;
165 break;
166 }
167 break;
168 case 0x11:
169 case 0x18:
170 switch(cLib_getRndValue(0, 3)) {
171 case 0:
172 paramLow = 0;
173 break;
174 case 1:
175 paramLow = 8;
176 break;
177 case 2:
178 paramLow = 5;
179 break;
180 }
181 break;
182 case 0x12:
183 case 0x19:
184 switch(cLib_getRndValue(0, 4)) {
185 case 0:
186 paramLow = 0;
187 break;
188 case 1:
189 paramLow = 8;
190 break;
191 case 2:
192 paramLow = 5;
193 break;
194 case 3:
195 paramLow = 3;
196 break;
197 }
198 break;
199 case 0x13:
200 case 0x1a:
201 switch (cLib_getRndValue(0, 2)) {
202 case 0:
203 paramLow = 0;
204 break;
205 case 1:
206 paramLow = 5;
207 break;
208 }
209 break;
210 case 0x14:
211 case 0x1b:
212 switch (cLib_getRndValue(0, 2)) {
213 case 0:
214 paramLow = 0;
215 break;
216 case 1:
217 paramLow = 5;
218 break;
219 }
220 break;
221 case 0x15:
222 case 0x1c:
223 switch (cLib_getRndValue(0, 2)) {
224 case 0:
225 paramLow = 0;
226 break;
227 case 1:
228 paramLow = 5;
229 break;
230 }
231 break;
232 case 0x16:
233 case 0x1d:
234 switch(cLib_getRndValue(0, 3)) {
235 case 0:
236 paramLow = 0;
237 break;
238 case 1:
239 paramLow = 5;
240 break;
241 case 2:
242 paramLow = 3;
243 break;
244 }
245 break;
246 default:
247 OS_REPORT("%s: Line.%d arg=%d\n", "d_a_passer_mng.cpp", 1049, param_1);
248 JUT_ASSERT(1050, FALSE);
249 break;
250 }
251 return paramLow << 8;
252 }
253
254 struct Group {
257 };
258
259 static Group* mGroupTbl[4];
260
261private:
263 /* 0x56C */ dPath* mPath;
264 /* 0x570 */ int startTime;
265 /* 0x574 */ int endTime;
266 /* 0x578 */ int intervalTime;
267 /* 0x57C */ int mTime;
268 /* 0x580 */ int dayOfWeek;
269 /* 0x584 */ int currentChildIndex;
270 /* 0x588 */ s16 npcId;
271 /* 0x58A */ s16 field_0x58a[5];
272 /* 0x594 */ s16 field_0x594;
273 /* 0x596 */ u8 field_0x596;
274 /* 0x597 */ u8 field_0x597;
275 };
276
277STATIC_ASSERT(sizeof(daPasserMng_c) == 0x598);
278
279
280#endif /* D_A_PASSER_MNG_H */
T cLib_getRndValue(T min, T range)
Definition c_lib.h:88
Hylian Passerby Manager?
Definition d_a_passer_mng.h:18
s16 field_0x594
Definition d_a_passer_mng.h:272
~daPasserMng_c()
Definition d_a_passer_mng.h:25
u8 getEndTime()
Definition d_a_passer_mng.h:31
int getTimeMinute()
Definition d_a_passer_mng.h:39
int getLuggageParamHigh(u32)
Definition d_a_passer_mng.cpp:114
int getTime()
Definition d_a_passer_mng.h:43
int intervalTime
Definition d_a_passer_mng.h:266
static Group * mGroupTbl[4]
Definition d_a_passer_mng.h:63
u8 getPathID()
Definition d_a_passer_mng.h:28
u8 getMaxNum()
Definition d_a_passer_mng.h:32
int getLuggageParamLow(u32 param_1)
Definition d_a_passer_mng.h:78
int getTimeHour()
Definition d_a_passer_mng.h:35
int currentChildIndex
Definition d_a_passer_mng.h:269
int dayOfWeek
Definition d_a_passer_mng.h:268
void create_init()
Definition d_a_passer_mng.cpp:520
bool checkOverlapping(int param_1, int param_2)
Definition d_a_passer_mng.h:63
int getPasserParam()
Definition d_a_passer_mng.cpp:70
u8 field_0x597
Definition d_a_passer_mng.h:274
int startTime
Definition d_a_passer_mng.h:264
fpc_ProcID * childProcIds
Definition d_a_passer_mng.h:262
dPath * mPath
Definition d_a_passer_mng.h:263
u8 getDetailLevel()
Definition d_a_passer_mng.h:27
int create()
Definition d_a_passer_mng.cpp:514
int getStartTime()
Definition d_a_passer_mng.h:30
s16 npcId
Definition d_a_passer_mng.h:270
s16 field_0x58a[5]
Definition d_a_passer_mng.h:271
u8 getIntervalTime()
Definition d_a_passer_mng.h:29
int endTime
Definition d_a_passer_mng.h:265
int getDayOfWeek()
Definition d_a_passer_mng.h:47
u8 getGroupNo()
Definition d_a_passer_mng.h:33
u8 field_0x596
Definition d_a_passer_mng.h:273
int mTime
Definition d_a_passer_mng.h:267
int execute()
Definition d_a_passer_mng.cpp:17
int getChildNum()
Definition d_a_passer_mng.h:51
Definition f_op_actor.h:230
s8 argument
Definition f_op_actor.h:244
csXyz shape_angle
Definition f_op_actor.h:252
STATIC_ASSERT(sizeof(daPasserMng_c)==0x598)
int dKy_getdaytime_hour()
Definition d_kankyo.cpp:1711
u8 dKy_getDarktime_week()
Definition d_kankyo.cpp:1742
int dKy_getDarktime_hour()
Definition d_kankyo.cpp:1731
u8 dKy_darkworld_check()
Definition d_kankyo.cpp:11379
int dKy_getdaytime_minute()
Definition d_kankyo.cpp:1716
int dKy_getDarktime_minute()
Definition d_kankyo.cpp:1736
int dKy_get_dayofweek()
Definition d_kankyo.cpp:9938
unsigned long u32
Definition types.h:12
signed short int s16
Definition types.h:9
unsigned char u8
Definition types.h:8
int i
Definition e_pow.c:165
s32 fopAcM_SearchByID(fpc_ProcID i_actorID, fopAc_ac_c **i_outActor)
Definition f_op_actor_mng.cpp:123
u32 fopAcM_GetParam(const void *i_actor)
Definition f_op_actor_mng.h:192
unsigned int fpc_ProcID
Definition f_pc_base.h:10
s16 x
Definition c_sxyz.h:7
Definition d_path.h:18
Definition d_a_passer_mng.h:254
u8 field_0x00
Definition d_a_passer_mng.h:255
int field_0x04[0]
Definition d_a_passer_mng.h:256