Skip to content

Commit ca69176

Browse files
committed
some garbage pumpkin
1 parent bdefadd commit ca69176

File tree

2 files changed

+250
-14
lines changed

2 files changed

+250
-14
lines changed

include/d/a/d_a_pumpkin.h

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,17 @@
33

44
#include "d/a/obj/d_a_obj_base.h"
55
#include "s/s_State.hpp"
6+
#include "d/d_message.h"
7+
#include "d/col/bg/d_bg_s_acch.h"
8+
#include "toBeSorted/d_emitter.h"
9+
#include "nw4r/math/math_triangular.h"
10+
#include "egg/math/eggMath.h"
11+
612

713
class dAcPumpkin_c : public dAcObjBase_c {
814
public:
915
dAcPumpkin_c() : mStateMgr(*this) {}
10-
virtual ~dAcPumpkin_c() {}
16+
//virtual ~dAcPumpskin_c() {}??
1117

1218
STATE_FUNC_DECLARE(dAcPumpkin_c, Stick);
1319
STATE_FUNC_DECLARE(dAcPumpkin_c, Wait);
@@ -17,9 +23,33 @@ class dAcPumpkin_c : public dAcObjBase_c {
1723
STATE_FUNC_DECLARE(dAcPumpkin_c, Roll);
1824
STATE_FUNC_DECLARE(dAcPumpkin_c, CarryBeetle);
1925
STATE_FUNC_DECLARE(dAcPumpkin_c, CarryWhip);
26+
void fn_19_2C20();
27+
void fn_19_31B0();
28+
void fn_19_2FC0(u8 temp);
29+
void fn_19_30C0();
2030

2131
private:
2232
/* 0x??? */ STATE_MGR_DECLARE(dAcPumpkin_c);
33+
/* 0x3cc?*/ dBgS_AcchCir* field_0x3cc;
34+
/* 0x40c?*/ u8 field_0x40c;
35+
/* spacer*/ u8 spacer[1370];
36+
/* 0x744?*/ u8 field_0x744;
37+
/* 0x7ec?*/ u8 field_7ec;
38+
/* 0x7d8?*/ cCcD_GAtTgCoCommonBase* field_7d8;
39+
/* 0x79C?*/ u32 pumpkinState;//??
40+
/* 0x8cc?*/ dFlowBase_c* something;
41+
/* 0x870?*/ u32 field_0x870;
42+
/* 0x908?*/ f32 field_0x908;
43+
/* 0x90C?*/ f32 field_0x90C;
44+
/* 0x914?*/ float field0x914[21];
45+
/* 0x9b8?*/ u32 field0x9b8;
46+
/* 0x9db?*/ u8 field_0x9db;
47+
/* 0x99c?*/ u8 field_99c;
48+
/* 0xa14?*/ u8 field_a14;
49+
/* 0xa15?*/ u8 field_a15;
50+
/* 0xa16?*/ u8 field_a16;
51+
/* 0xa17?*/ u8 field_a17;
52+
2353
};
2454

2555
#endif

src/REL/d/a/d_a_pumpkin.cpp

Lines changed: 219 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,232 @@ STATE_DEFINE(dAcPumpkin_c, Roll);
1111
STATE_DEFINE(dAcPumpkin_c, CarryBeetle);
1212
STATE_DEFINE(dAcPumpkin_c, CarryWhip);
1313

14-
void dAcPumpkin_c::initializeState_Stick() {}
15-
void dAcPumpkin_c::executeState_Stick() {}
16-
void dAcPumpkin_c::finalizeState_Stick() {}
17-
void dAcPumpkin_c::initializeState_Wait() {}
18-
void dAcPumpkin_c::executeState_Wait() {}
14+
void dAcPumpkin_c::initializeState_Stick() {
15+
16+
pumpkinState = pumpkinState & 0xfffffffe;
17+
18+
}
19+
20+
void dAcPumpkin_c::executeState_Stick() {
21+
22+
fn_19_31B0();
23+
24+
bool temp = (mLinkage.mState == 1 && mLinkage.mType == 6);
25+
if (temp) {
26+
startSound(0x9f4);
27+
something->vt_0x18();
28+
return;
29+
}
30+
31+
temp = (mLinkage.mState == 1 && mLinkage.mType == 5);
32+
if (temp) {
33+
startSound(0x9f4);
34+
something->vt_0x18();
35+
return;
36+
}
37+
38+
temp = (mLinkage.mState == 1 && mLinkage.mType == 7);
39+
if (temp) {
40+
startSound(0x9f4);
41+
something->vt_0x18();
42+
return;
43+
}
44+
45+
if (mLinkage.mState == 1) {
46+
startSound(0x9f4);
47+
field_a15 = 0;
48+
something->vt_0x18();
49+
return;
50+
}
51+
52+
temp = false;
53+
if ((field_7ec & 1) && field_7d8->GetActor() != nullptr) {
54+
temp = true;
55+
}
56+
if (temp && field_a17 != 0) {
57+
fn_19_2C20();
58+
}
59+
60+
61+
62+
}
63+
64+
65+
void dAcPumpkin_c::finalizeState_Stick() {
66+
67+
mViewClipIdx = -1;
68+
69+
}
70+
void dAcPumpkin_c::initializeState_Wait() {
71+
72+
field_0x908 = 0;
73+
mActorProperties = mActorProperties | 1;
74+
fn_19_2FC0(10);
75+
pumpkinState = pumpkinState & 0xfffffffe;
76+
77+
}
78+
void dAcPumpkin_c::executeState_Wait() {
79+
80+
bool temp = (mLinkage.mState == 1 && mLinkage.mType == 6);
81+
if (temp) {
82+
//startSound(0x9f4);
83+
something->vt_0x18();
84+
return;
85+
}
86+
temp = (mLinkage.mState == 1 && mLinkage.mType == 5);
87+
if (temp) {
88+
//startSound(0x9f4);
89+
something->vt_0x18();
90+
return;
91+
}
92+
temp = (mLinkage.mState == 1 && mLinkage.mType == 1);
93+
if (temp) {
94+
//startSound(0x9f4);
95+
int temp2 = 0;
96+
if (field_0x40c && mPosition.y < field_0x744) {
97+
temp2 = 1;
98+
}
99+
field_a15 = temp2;
100+
something->vt_0x18();
101+
return;
102+
}
103+
temp = (mLinkage.mState == 1 && mLinkage.mType == 7);
104+
if (temp) {
105+
//startSound(0x9f4);
106+
something->vt_0x18();
107+
return;
108+
}
109+
if ((field_7ec & 1) && field_7d8->GetActor() != nullptr) {
110+
temp = true;
111+
}
112+
if (temp && field_a17 != 0) {
113+
fn_19_2C20();
114+
return;
115+
}
116+
temp = field_0x40c & 0x800 && mPosition.y < field_0x744;
117+
if (temp) {
118+
if (field_0x40c & 0x80 && mPosition.y + 50 < field_0x744) {
119+
fn_19_2C20();
120+
}
121+
return;
122+
123+
/*if (angleToRotate(mVec3_c::Zero)) {
124+
125+
}*/
126+
mSpeed = mSpeed * 0.93;
127+
u32 temp5 = field0x9b8 << 0x10;
128+
s32 temp11 = temp5 / 0x32 + temp5 >> 0x1f;
129+
float temp15 = nw4r::math::SinFIdx(temp11 - (temp11 >> 0x1f) * 1.0f * 0.00390625);
130+
mVelocity.y = (mSpeed * 0.8 + (field_0x744 - mPosition.y) * fabs(field_0x744)) / (temp15 * 3.0 + 20.0);
131+
if (mVelocity.y > 20.0) {
132+
mVelocity.y = 20.0;
133+
}
134+
if (mVelocity.y < -20.0) {
135+
mVelocity.y = -20.0;
136+
}
137+
if (field_0x9db == 0) {
138+
field_0x908 = cM::rndInt(0x200) + 0x800;
139+
field_0x90C = cM::rndInt(0x100) + 0xa00;
140+
startSound(0x9a0);
141+
mRotation.x = (mRotation.x & 0xfffffffe) >> 0x10;
142+
mRotation.y = (mRotation.y & 0xfffffffe);
143+
}
144+
fn_19_31B0();
145+
mVelocity.y = 0;
146+
sLib::addCalcAngle((short*) & (mRotation.x), 0, 5, 0x100);
147+
sLib::addCalcAngle((short*) &(mRotation.z), 0, 5, 0x100);
148+
}
149+
}
19150
void dAcPumpkin_c::finalizeState_Wait() {}
20-
void dAcPumpkin_c::initializeState_CarryGrab() {}
151+
void dAcPumpkin_c::initializeState_CarryGrab() {
152+
153+
fn_19_30C0();
154+
fn_19_2FC0(4);
155+
mVelocity = mVec3_c::Zero;
156+
mSpeed = 0;
157+
field_0x870 = field_0x870 | 0x400;
158+
pumpkinState = pumpkinState & 0xfffffffe;
159+
unsetActorProperty(AC_PROP_0x1);
160+
field_99c = 0;
161+
field_a14 = 0;
162+
field_a16 = 0;
163+
}
21164
void dAcPumpkin_c::executeState_CarryGrab() {}
22-
void dAcPumpkin_c::finalizeState_CarryGrab() {}
23-
void dAcPumpkin_c::initializeState_StickSword() {}
165+
void dAcPumpkin_c::finalizeState_CarryGrab() {
166+
167+
field_0x870 = field_0x870 & 0xfffffbff;
168+
169+
}
170+
void dAcPumpkin_c::initializeState_StickSword() {
171+
172+
fn_19_30C0();
173+
mVelocity = mVec3_c::Zero;
174+
field_0x870 = field_0x870 | 0x400;
175+
pumpkinState = pumpkinState & 0xfffffffe;
176+
field0x914[0] = 0;
177+
field0x914[1] = 0;
178+
field0x914[2] = 0;
179+
field0x914[3] = 0;
180+
field0x914[4] = 0;
181+
field0x914[5] = 0;
182+
field0x914[6] = 0;
183+
field0x914[7] = 0;
184+
field0x914[8] = 0;
185+
field0x914[9] = 0;
186+
field0x914[10] = 0;
187+
field0x914[11] = 0;
188+
field0x914[12] = 0;
189+
field0x914[13] = 0;
190+
field0x914[14] = 0;
191+
field0x914[15] = 0;
192+
field0x914[16] = 0;
193+
field0x914[17] = 0;
194+
field0x914[18] = 0;
195+
field0x914[19] = 0;
196+
field0x914[20] = 0;
197+
field0x914[21] = 0;
198+
}
24199
void dAcPumpkin_c::executeState_StickSword() {}
25-
void dAcPumpkin_c::finalizeState_StickSword() {}
26-
void dAcPumpkin_c::initializeState_Throw() {}
200+
void dAcPumpkin_c::finalizeState_StickSword() {
201+
202+
field_0x870 = field_0x870 & 0xfffffbff;
203+
204+
}
205+
void dAcPumpkin_c::initializeState_Throw() {
206+
207+
mActorProperties = mActorProperties & 0xfffffffe;
208+
209+
}
27210
void dAcPumpkin_c::executeState_Throw() {}
28211
void dAcPumpkin_c::finalizeState_Throw() {}
29-
void dAcPumpkin_c::initializeState_Roll() {}
212+
void dAcPumpkin_c::initializeState_Roll() {
213+
214+
field_0x908 = 0;
215+
pumpkinState = pumpkinState & 0xfffffffe;
216+
217+
}
30218
void dAcPumpkin_c::executeState_Roll() {}
31219
void dAcPumpkin_c::finalizeState_Roll() {}
32-
void dAcPumpkin_c::initializeState_CarryBeetle() {}
33-
void dAcPumpkin_c::executeState_CarryBeetle() {}
220+
void dAcPumpkin_c::initializeState_CarryBeetle() {
221+
222+
fn_19_30C0();
223+
224+
mVelocity.x = mVec3_c::Zero.x;
225+
mVelocity.z = mVec3_c::Zero.z;
226+
mVelocity.y = mVec3_c::Zero.y;
227+
mSpeed = 0;
228+
field_0x870 = field_0x870 | 0x400;
229+
pumpkinState = pumpkinState & 0xfffffffe;
230+
mActorProperties = mActorProperties & 0xfffffffe;
231+
232+
}
233+
void dAcPumpkin_c::executeState_CarryBeetle() {
234+
235+
if (field_0x40c & 0x80 || field_0x3cc->ChkWallHit()) {
236+
dJEffManager_c::spawnGroundEffect(mPosition, mPolyAttr0, mPolyAttr1, field_0x1B4, 0, 1.0f, field_0x1B0);
237+
}
238+
239+
}
34240
void dAcPumpkin_c::finalizeState_CarryBeetle() {}
35241
void dAcPumpkin_c::initializeState_CarryWhip() {}
36242
void dAcPumpkin_c::executeState_CarryWhip() {}

0 commit comments

Comments
 (0)