Skip to content

Commit 556f5ca

Browse files
authored
passer_mng work (#2328)
1 parent 60748d0 commit 556f5ca

File tree

4 files changed

+807
-178
lines changed

4 files changed

+807
-178
lines changed

include/d/actor/d_a_passer_mng.h

Lines changed: 264 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
#ifndef D_A_PASSER_MNG_H
22
#define D_A_PASSER_MNG_H
33

4+
#include "SSystem/SComponent/c_lib.h"
45
#include "f_op/f_op_actor_mng.h"
56

7+
class dPath;
8+
69
/**
710
* @ingroup actors-unsorted
811
* @class daPasserMng_c
@@ -13,17 +16,271 @@
1316
*/
1417
class daPasserMng_c : public fopAc_ac_c {
1518
public:
16-
/* 80D45738 */ void execute();
17-
/* 80D4597C */ void getPasserParam();
18-
/* 80D45E14 */ void getLuggageParamHigh(u32);
19-
/* 80D46768 */ void create();
19+
/* 80D45738 */ int execute();
20+
/* 80D4597C */ int getPasserParam();
21+
/* 80D45E14 */ int getLuggageParamHigh(u32);
22+
/* 80D46768 */ int create();
2023
/* 80D467C0 */ void create_init();
24+
~daPasserMng_c() { delete [] childProcIds; }
25+
26+
u8 getDetailLevel() { return subtype; }
27+
u8 getPathID() { return fopAcM_GetParam(this); }
28+
u8 getIntervalTime() { return fopAcM_GetParam(this) >> 24; }
29+
int getStartTime() { return (fopAcM_GetParam(this) >> 8) & 0xff; }
30+
u8 getEndTime() { return (fopAcM_GetParam(this) >> 16) & 0xff; }
31+
u8 getMaxNum() { return shape_angle.x; }
32+
u8 getGroupNo() { return (shape_angle.x >> 8) & 0xff; }
33+
34+
int getTimeHour() {
35+
if (dKy_darkworld_check()) {
36+
return dKy_getDarktime_hour();
37+
}
38+
return dKy_getdaytime_hour();
39+
}
40+
41+
int getTimeMinute() {
42+
if (dKy_darkworld_check()) {
43+
return dKy_getDarktime_minute();
44+
}
45+
return dKy_getdaytime_minute();
46+
}
47+
48+
int getTime() {
49+
return getTimeHour() * 60 + getTimeMinute();
50+
}
51+
52+
int getDayOfWeek() {
53+
if (dKy_darkworld_check()) {
54+
return dKy_getDarktime_week();
55+
}
56+
return dKy_get_dayofweek();
57+
}
58+
59+
int getChildNum() {
60+
int childNum = 0;
61+
fopAc_ac_c* pActor = NULL;
62+
for (int i = 0; i < getMaxNum(); i++) {
63+
fopAcM_SearchByID(childProcIds[i], &pActor);
64+
if (pActor != NULL) {
65+
childNum++;
66+
}
67+
}
68+
return childNum;
69+
}
70+
71+
bool checkOverlapping(int param_1, int param_2) {
72+
int iVar1;
73+
if ((u32)param_2 <= 6) {
74+
iVar1 = (u8)param_2 - 1;
75+
} else {
76+
iVar1 = 6;
77+
}
78+
for (int i = 0; i < iVar1; i++) {
79+
if (field_0x58a[i] == param_1) {
80+
return true;
81+
}
82+
}
83+
return false;
84+
}
85+
86+
int getLuggageParamLow(u32 param_1) {
87+
int paramLow;
88+
89+
paramLow = 0;
90+
switch (param_1) {
91+
case 0:
92+
case 1:
93+
if (cLib_getRndValue(0, 2) != 0) {
94+
paramLow = 2;
95+
}
96+
break;
97+
case 2:
98+
case 8:
99+
case 9:
100+
case 10:
101+
case 15:
102+
switch(cLib_getRndValue(0, 3)) {
103+
case 0:
104+
paramLow = 0;
105+
break;
106+
case 1:
107+
paramLow = 1;
108+
break;
109+
case 2:
110+
paramLow = 4;
111+
break;
112+
}
113+
break;
114+
case 3:
115+
case 11:
116+
switch(cLib_getRndValue(0, 2)) {
117+
case 0:
118+
paramLow = 0;
119+
break;
120+
case 1:
121+
paramLow = 4;
122+
break;
123+
}
124+
break;
125+
case 4:
126+
case 5:
127+
case 12:
128+
case 13:
129+
switch(cLib_getRndValue(0, 3)) {
130+
case 0:
131+
paramLow = 0;
132+
break;
133+
case 1:
134+
paramLow = 1;
135+
break;
136+
case 2:
137+
paramLow = 4;
138+
break;
139+
}
140+
break;
141+
case 6:
142+
case 14:
143+
switch (cLib_getRndValue(0, 2)) {
144+
case 0:
145+
paramLow = 0;
146+
break;
147+
case 1:
148+
paramLow = 1;
149+
break;
150+
}
151+
break;
152+
case 7:
153+
switch (cLib_getRndValue(0, 2)) {
154+
case 0:
155+
paramLow = 0;
156+
break;
157+
case 1:
158+
paramLow = 4;
159+
break;
160+
}
161+
break;
162+
case 0x10:
163+
case 0x17:
164+
switch(cLib_getRndValue(0, 3)) {
165+
case 0:
166+
paramLow = 0;
167+
break;
168+
case 1:
169+
paramLow = 8;
170+
break;
171+
case 2:
172+
paramLow = 5;
173+
break;
174+
}
175+
break;
176+
case 0x11:
177+
case 0x18:
178+
switch(cLib_getRndValue(0, 3)) {
179+
case 0:
180+
paramLow = 0;
181+
break;
182+
case 1:
183+
paramLow = 8;
184+
break;
185+
case 2:
186+
paramLow = 5;
187+
break;
188+
}
189+
break;
190+
case 0x12:
191+
case 0x19:
192+
switch(cLib_getRndValue(0, 4)) {
193+
case 0:
194+
paramLow = 0;
195+
break;
196+
case 1:
197+
paramLow = 8;
198+
break;
199+
case 2:
200+
paramLow = 5;
201+
break;
202+
case 3:
203+
paramLow = 3;
204+
break;
205+
}
206+
break;
207+
case 0x13:
208+
case 0x1a:
209+
switch (cLib_getRndValue(0, 2)) {
210+
case 0:
211+
paramLow = 0;
212+
break;
213+
case 1:
214+
paramLow = 5;
215+
break;
216+
}
217+
break;
218+
case 0x14:
219+
case 0x1b:
220+
switch (cLib_getRndValue(0, 2)) {
221+
case 0:
222+
paramLow = 0;
223+
break;
224+
case 1:
225+
paramLow = 5;
226+
break;
227+
}
228+
break;
229+
case 0x15:
230+
case 0x1c:
231+
switch (cLib_getRndValue(0, 2)) {
232+
case 0:
233+
paramLow = 0;
234+
break;
235+
case 1:
236+
paramLow = 5;
237+
break;
238+
}
239+
break;
240+
case 0x16:
241+
case 0x1d:
242+
switch(cLib_getRndValue(0, 3)) {
243+
case 0:
244+
paramLow = 0;
245+
break;
246+
case 1:
247+
paramLow = 5;
248+
break;
249+
case 2:
250+
paramLow = 3;
251+
break;
252+
}
253+
break;
254+
default:
255+
OS_REPORT("%s: Line.%d arg=%d\n", "d_a_passer_mng.cpp", 1049, param_1);
256+
JUT_PANIC(1050, 0);
257+
break;
258+
}
259+
return paramLow << 8;
260+
}
261+
262+
struct Group {
263+
u8 field_0x00;
264+
int field_0x04[0];
265+
};
21266

22-
static void* mGroupTbl[4];
267+
static Group* mGroupTbl[4];
23268

24269
private:
25-
/* 0x568 */ u8 field_0x568[0x598 - 0x568];
26-
};
270+
/* 0x568 */ fpc_ProcID* childProcIds;
271+
/* 0x56C */ dPath* mPath;
272+
/* 0x570 */ int startTime;
273+
/* 0x574 */ int endTime;
274+
/* 0x578 */ int intervalTime;
275+
/* 0x57C */ int mTime;
276+
/* 0x580 */ int dayOfWeek;
277+
/* 0x584 */ int currentChildIndex;
278+
/* 0x588 */ s16 npcId;
279+
/* 0x58A */ s16 field_0x58a[5];
280+
/* 0x594 */ s16 field_0x594;
281+
/* 0x596 */ u8 field_0x596;
282+
/* 0x597 */ u8 field_0x597;
283+
};
27284

28285
STATIC_ASSERT(sizeof(daPasserMng_c) == 0x598);
29286

include/d/d_kankyo.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -563,6 +563,7 @@ int dKy_getdaytime_minute();
563563
int dKy_get_dayofweek();
564564
int dKy_getDarktime_minute();
565565
int dKy_getDarktime_hour();
566+
u8 dKy_getDarktime_week();
566567
void dKy_Sound_init();
567568
void dKy_setLight_nowroom(char room_no);
568569
void dKy_setLight_nowroom_actor(dKy_tevstr_c* tevstr_p);

0 commit comments

Comments
 (0)