Skip to content

Commit 1a7b145

Browse files
authored
d_a_obj_kbacket matching (#2479)
1 parent 3318b5e commit 1a7b145

File tree

3 files changed

+744
-663
lines changed

3 files changed

+744
-663
lines changed

configure.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1562,7 +1562,7 @@ def MatchingFor(*versions) -> bool:
15621562
ActorRel(NonMatching, "d_a_obj_gpTaru"),
15631563
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_hhashi"),
15641564
ActorRel(NonMatching, "d_a_obj_kanban2"),
1565-
ActorRel(NonMatching, "d_a_obj_kbacket"),
1565+
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_kbacket"),
15661566
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_kgate"),
15671567
ActorRel(Equivalent, "d_a_obj_klift00"), # vtable order
15681568
ActorRel(NonMatching, "d_a_obj_ktOnFire"),

include/d/actor/d_a_obj_kbacket.h

Lines changed: 119 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,46 @@
11
#ifndef D_A_OBJ_KBACKET_H
22
#define D_A_OBJ_KBACKET_H
33

4+
#include "SSystem/SComponent/c_math.h"
5+
#include "d/d_bg_s_acch.h"
6+
#include "d/d_cc_d.h"
47
#include "f_op/f_op_actor_mng.h"
58

9+
struct daObj_KBacket_HIOParam
10+
{
11+
f32 field_0x0;
12+
f32 field_0x4;
13+
f32 field_0x8;
14+
f32 field_0xc;
15+
f32 field_0x10;
16+
f32 field_0x14;
17+
f32 field_0x18;
18+
f32 field_0x1c;
19+
f32 field_0x20;
20+
f32 field_0x24;
21+
f32 field_0x28;
22+
};
23+
24+
class daObj_KBacket_HIO_c
25+
#ifdef DEBUG
26+
: public mDoHIO_entry_c
27+
#endif
28+
{
29+
public:
30+
#ifdef DEBUG
31+
void genMessage(JORMContext*);
32+
33+
daObj_KBacket_HIOParam param;
34+
#endif
35+
};
36+
37+
class daObj_KBacket_Param_c {
38+
public:
39+
/* 80587D18 */ virtual ~daObj_KBacket_Param_c() {}
40+
41+
static const daObj_KBacket_HIOParam m;
42+
};
43+
644
/**
745
* @ingroup actors-objects
846
* @class daObj_KBacket_c
@@ -13,35 +51,96 @@
1351
*/
1452
class daObj_KBacket_c : public fopAc_ac_c {
1553
public:
16-
/* 80585E4C */ ~daObj_KBacket_c();
17-
/* 80586048 */ void create();
18-
/* 80586604 */ void CreateHeap();
19-
/* 80586704 */ void Delete();
20-
/* 80586738 */ void Execute();
21-
/* 8058742C */ void Draw();
22-
/* 805875A0 */ void createHeapCallBack(fopAc_ac_c*);
54+
/* 0x568 */ daObj_KBacket_HIO_c* mHIO;
55+
/* 0x56C */ request_of_phase_process_class field_0x56c;
56+
/* 0x574 */ J3DModel* mpModel;
57+
/* 0x578 */ dBgS_ObjAcch mObjAcch;
58+
/* 0x750 */ dCcD_Stts mStts;
59+
/* 0x78C */ dBgS_AcchCir mAcchCir;
60+
/* 0x7CC */ cBgS_GndChk mGndChk;
61+
/* 0x808 */ dCcD_Cyl mCyl;
62+
/* 0x90C */ cM3dGLin mLine;
63+
/* 0x960 */ dBgS_LinChk mLinChk;
64+
/* 0x9D0 */ u8 field_0x9d0;
65+
/* 0x9D4 */ cXyz field_0x9d4;
66+
/* 0x9E0 */ cXyz field_0x9e0;
67+
/* 0x9EC */ csXyz field_0x9ec;
68+
/* 0x9F4 */ int field_0x9f4;
69+
/* 0x9F8 */ int field_0x9f8;
70+
/* 0x9FC */ f32 field_0x9fc;
71+
/* 0xA00 */ f32 field_0xa00;
72+
/* 0xA04 */ f32 field_0xa04;
73+
/* 0xA08 */ u8 field_0xa08[0xa0c - 0xa08];
74+
/* 0xA0C */ f32 field_0xa0c;
75+
/* 0xA10 */ f32 field_0xa10;
76+
/* 0xA14 */ s16 field_0xa14;
77+
/* 0xA18 */ s16 field_0xa16;
78+
/* 0xA18 */ s16 field_0xa18;
79+
/* 0xA1A */ s16 field_0xa1a;
80+
/* 0xA1A */ s16 field_0xa1c;
81+
/* 0xA1A */ u8 field_0xa1e[0xa24 - 0xa1e];
82+
/* 0xA24 */ u32 field_0xa24[4];
83+
/* 0xA34 */ u32 field_0xa34;
84+
/* 0xA38 */ u8 field_0xa38[0xa3c - 0xa38];
85+
/* 0xA3C */ u32 field_0xa3c;
86+
/* 0xA40 */ u32 field_0xa40;
87+
/* 0xA44 */ u8 field_0xa44;
88+
/* 0xA45 */ u8 field_0xa45;
89+
/* 0xA46 */ u8 field_0xa46;
90+
/* 0xA47 */ u8 field_0xa47;
91+
/* 0xA48 */ u8 field_0xa48;
92+
/* 0xA49 */ u8 field_0xa49;
93+
/* 0xA49 */ u8 field_0xa4a;
94+
/* 0xA4B */ u8 field_0xa4b;
95+
/* 0xA4C */ u8 field_0xa4c[0xa50 - 0xa4c];
96+
97+
/* 80585E4C */ virtual ~daObj_KBacket_c();
98+
/* 80586048 */ int create();
99+
int setLaunchParam(float param_0, float param_1, short param_2) {
100+
float fVar2;
101+
102+
s16 iVar1 = cM_deg2s(param_1);
103+
speed.setall(0.0f);
104+
speed.y = param_0 * cM_ssin(iVar1);
105+
speedF = param_0 * cM_scos(iVar1);
106+
if (field_0x9d0 == 0x0) {
107+
current.angle.y = param_2 + 0x4000;
108+
}
109+
if (field_0x9d0 == 0x1) {
110+
current.angle.y = param_2 + -0x4000;
111+
}
112+
shape_angle.y = param_2;
113+
field_0xa18 = 0x800;
114+
field_0xa44 = 1;
115+
field_0xa47 = 1;
116+
}
117+
u8 getType() {
118+
u8 param = fopAcM_GetParam(this);
119+
switch (param & 0xff) {
120+
case 0:
121+
return 0;
122+
case 1:
123+
return 1;
124+
default:
125+
return 0;
126+
}
127+
}
128+
/* 80586604 */ int CreateHeap();
129+
/* 80586704 */ int Delete();
130+
/* 80586738 */ int Execute();
131+
/* 8058742C */ int Draw();
132+
/* 805875A0 */ static void createHeapCallBack(fopAc_ac_c*);
23133
/* 805875C0 */ void setEnvTevColor();
24134
/* 8058761C */ void setRoomNo();
25135
/* 80587660 */ void reset();
26136
/* 80587694 */ void setMtx();
27-
/* 805877C4 */ void calcRollAngle(s16, int);
28-
/* 80587864 */ void getWallAngle(s16, s16*);
137+
/* 805877C4 */ s16 calcRollAngle(s16, int);
138+
/* 80587864 */ int getWallAngle(s16, s16*);
29139
/* 805879F4 */ void setSmokePrtcl();
30140
/* 80587A70 */ void setWaterPrtcl();
31141
/* 80587B68 */ void setHamonPrtcl();
32-
33-
private:
34-
/* 0x568 */ u8 field_0x568[0xa54 - 0x568];
35142
};
36143

37144
STATIC_ASSERT(sizeof(daObj_KBacket_c) == 0xa54);
38145

39-
class daObj_KBacket_Param_c {
40-
public:
41-
/* 80587D18 */ ~daObj_KBacket_Param_c();
42-
43-
static u8 const m[44];
44-
};
45-
46-
47146
#endif /* D_A_OBJ_KBACKET_H */

0 commit comments

Comments
 (0)