New Super Mario Bros. U Headers
Loading...
Searching...
No Matches
KuriboBase.h
Go to the documentation of this file.
1#pragma once
2
3#include <actor/Profile.h>
4#include <collision/ActorCollisionDrcTouchCallback.h>
5#include <enemy/Enemy.h>
6#include <enemy/EnemyBoyoMgr.h>
7#include <enemy/EnemyChibiYoshiEatData.h>
8#include <enemy/EnemyEatData.h>
9#include <enemy/MiddleKuribo.h>
10#include <graphics/AnimExpDecayCalcRatio.h>
11
12class JointBlendModel;
13class ModelResource;
15
16// vtbl Address: 0x100916DC
17class KuriboBase : public Enemy
18{
19 // getRuntimeTypeInfoStatic()::typeInfo initialization guard variable Address: 0x101EA144
20 // getRuntimeTypeInfoStatic()::typeInfo Address: 0x101EA140
21 SEAD_RTTI_OVERRIDE(KuriboBase, Enemy)
22
23protected:
24 // vtbl Address: 0x10091CD4
26 {
27 public:
28 // Address: 0x023DDBF8
30 // Address: 0x023DDC90
32 };
33 static_assert(sizeof(DrcTouchCB) == sizeof(ActorCollisionDrcTouchCallback));
34
41
42public:
43 // Address: 0x023DAF04
44 KuriboBase(const ActorCreateParameter& param);
45
46protected:
47 // Address: 0x023DB070
48 Result create() override;
49 // Address: 0x023DBC70
51 // Address: 0x023DBE14
52 bool draw() override;
53 // Address: 0x023DE5F4
54 Result doDelete() override;
55
57 {
59 return;
60
61 Enemy::blockHitInit_();
62 }
63
64public:
65 // Address: 0x023DBE44
67
68 // Address: 0x023DBE54
69 static void normal_collcheck(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other);
70
71 // Address: 0x023DBF0C
72 void vsEnemyHitCheck_Normal(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other) override;
73
74 // Address: 0x023DBFB0
75 void vsPlayerHitCheck_Normal(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other) override;
76
77 // Address: 0x023DC0C4
78 void vsYoshiHitCheck_Normal(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other) override;
79 // Address: 0x023DC1E8
80 void hitYoshiEat(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other) override;
81 // Address: 0x023DC2B4
82 bool hitCallback_YoshiHipAttk(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other) override;
83
84 // Address: 0x023DC3B4
85 void vsChibiYoshiHitCheck_Normal(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other) override;
86 // Address: 0x023DC3C4
87 bool hitCallback_ChibiYoshiUnk(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other) override;
88 // Address: 0x023DC490
89 void setAwaHit(Actor* awa) override;
90
91 virtual void initialize()
92 {
93 }
94
95 virtual void calcModel()
96 {
97 }
98
99 virtual void drawModel()
100 {
101 }
102
103 virtual void setTurnByEnemyHit(Actor* actor_self, Actor* actor_other)
104 {
105 }
106
107 // Address: 0x023DC9B4
108 virtual void setTurnByPlayerHit(Actor*);
109
110 virtual void setWalkSpeed()
111 {
112 }
113
114 virtual void walkEffect()
115 {
116 }
117
118 // Address: 0x023DCA88
119 virtual void reactFumiProc(Actor* player);
120
121 // Address: Deleted
122 virtual void reactMameFumiProc(Actor* player)
123 {
124 }
125
126 virtual void reactSpinFumiProc(Actor* player)
127 {
128 setDeathInfo_SpinFumi(player);
129 }
130
131 virtual void reactYoshiFumiProc(Actor* yoshi)
132 {
133 if (mParentMiddleKuribo != nullptr)
134 mParentMiddleKuribo->_1b0c++;
135
136 setDeathInfo_YoshiFumi(yoshi);
137 }
138
139 virtual void balloonCollCheck(ActorCollisionCheck* cc_other) // Seems to detach the actor from its balloon in Kuribo
140 {
141 }
142
143 virtual bool disallowDrcTouchOnGround() // I think
144 {
145 return false;
146 }
147
148 virtual bool vf54C()
149 {
150 return false;
151 }
152
153 virtual bool vf554() // Checks if current state ID is StateID_Touch in Kuribo
154 {
155 return false;
156 }
157
158 // Address: 0x023DCAC4
159 void yoganSplashEffect(const sead::Vector3f& pos) override;
160
161 // StateID_Walk Address: 0x10204814
162 // initializeState_Walk Address: 0x023DCB48
163 // executeState_Walk Address: 0x023DCC38
164 // finalizeState_Walk Address: 0x023DE660
165 DECLARE_STATE_VIRTUAL_ID_BASE(KuriboBase, Walk)
166 // StateID_Turn Address: 0x10204838
167 // initializeState_Turn Address: 0x023DCDC4
168 // executeState_Turn Address: 0x023DCE60
169 // finalizeState_Turn Address: 0x023DE664
171 // StateID_Touch Address: 0x1020485C
172 // initializeState_Touch Address: 0x023DCF90
173 // executeState_Touch Address: 0x023DCFE8
174 // finalizeState_Touch Address: 0x023DD288
175 DECLARE_STATE_VIRTUAL_ID_BASE(KuriboBase, Touch) // I believe this is the state for bouncing back when touched using DRC
176 // StateID_TrplnJump Address: 0x10204880
177 // initializeState_TrplnJump Address: 0x023DD294
178 // executeState_TrplnJump Address: 0x023DD2D8
179 // finalizeState_TrplnJump Address: 0x023DE668
181
182 // StateID_DieOther Address: 0x102048A4
183 // initializeState_DieOther Address: 0x023DD444
184 // executeState_DieOther Address: 0x023DD620
185 // finalizeState_DieOther Address: 0x023DD63C
187 // StateID_DieFall Address: 0x102048C8
188 // initializeState_DieFall Address: 0x023DD640
189 // executeState_DieFall Address: 0x023DD6D0
190 // finalizeState_DieFall Address: 0x023DD704
192
193 // Address: 0x023DD708
195
196 // Address: 0x023DD7E4
197 virtual void setWalkAnm();
198
199 virtual bool isWakidashi() const
200 {
201 return false;
202 }
203
204 // Address: Deleted
205 virtual u32 vf5CC()
206 {
207 return 0;
208 }
209
210 virtual bool isBgmSync() const
211 {
212 return true;
213 }
214
215 virtual void onDrcTouch()
216 {
217 }
218
219 // Address: Deleted
220 virtual void resetCcDrcTouch()
221 {
222 }
223
224 virtual void calcDrcTouch()
225 {
226 }
227
228 virtual void setWalkState()
229 {
230 }
231
232 // Address: 0x023DD97C
234 // Address: 0x023DDA28
236
237 // Address: 0x023DDAB4
238 bool setDamage(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other) override;
239
240 // Address: 0x023DDBA8
242
243protected:
244 // Address: 0x023DC4AC
245 void calcModelBase_(JointBlendModel* blend_model);
246
251
252 // Address: 0x023DB42C
254
255 // Address: 0x023DB388
257
258 // Address: 0x023DB1F0
260
261 // Address: 0x023DB4E8
263
264 // Address: 0x023DB588
266
267 // Address: 0x023DBA74
269
270 // Address: 0x023DBB48
272
273protected:
280 f32 mWalkAnmRate; // Stored, but never read
285 bool mForceLanded; // Controlled externally by Maruta (Floating Log)
298
299public:
300 static const s32 cTurnSpeed = 0x2000000;
301
302 /**
303 * @brief 1.0f
304 * @par Address: 0x10091658
305 */
306 static const f32 cMaxSpeedX;
307 /**
308 * @brief -4.0f
309 * @par Address: 0x1009165C
310 */
311 static const f32 cMaxSpeedY;
312
313 // Address: 0x10091660
315
316 // Address: 0x10091684
318 // Address: 0x100916B0
320};
321static_assert(sizeof(KuriboBase) == 0x1A88);
Definition JointBlendModel.h:7
Definition KuriboBase.h:18
void yoganSplashEffect(const sead::Vector3f &pos) override
bool checkGround_()
virtual void reactFumiProc(Actor *player)
void calcMdl_Base() override
virtual void resetCcDrcTouch()
Definition KuriboBase.h:220
virtual void drawModel()
Definition KuriboBase.h:99
s8 mSubstate
Definition KuriboBase.h:291
virtual void reactMameFumiProc(Actor *player)
Definition KuriboBase.h:122
ActorCollisionCheck mCollisionCheckDrcTouch
Definition KuriboBase.h:279
virtual void initialize()
Definition KuriboBase.h:91
void blockHitInit_() override
Definition KuriboBase.h:56
bool mDisableScreenOutCheck
Definition KuriboBase.h:292
MiddleKuribo * mParentMiddleKuribo
Definition KuriboBase.h:278
virtual void onDrcTouch()
Definition KuriboBase.h:215
bool hitCallback_ChibiYoshiUnk(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
virtual void calcModel()
Definition KuriboBase.h:95
void setLayerPos_()
static const ActorData cActorCreateInfo
Definition KuriboBase.h:314
virtual void setTurnByEnemyHit(Actor *actor_self, Actor *actor_other)
Definition KuriboBase.h:103
bool execute() override
Main execution/logic callback for the actor. Called every frame (the game runs at exactly 60 FPS).
virtual bool isWakidashi() const
Definition KuriboBase.h:199
static const f32 cMaxSpeedY
-4.0f
Definition KuriboBase.h:311
f32 mEnemyHitRevX
Definition KuriboBase.h:293
ModelResource * mModelResource
Definition KuriboBase.h:274
bool mForceLanded
Definition KuriboBase.h:285
virtual bool vf54C()
Definition KuriboBase.h:148
void vsYoshiHitCheck_Normal(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
EnemyEatData mEatData
Definition KuriboBase.h:294
Angle mKakiboHaAngleZ
Definition KuriboBase.h:283
void setCcLine_()
static const s32 cTurnSpeed
Definition KuriboBase.h:300
TexturePatternAnimation * mTexAnim
Definition KuriboBase.h:276
void vsPlayerHitCheck_Normal(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
virtual void setTurnByPlayerHit(Actor *)
void allEnemyDeathEffSet() override
virtual bool vf554()
Definition KuriboBase.h:153
virtual void calcDrcTouch()
Definition KuriboBase.h:224
void removeCollisionCheck() override
AnimExpDecayCalcRatio mCalcRatio
Definition KuriboBase.h:277
u8 checkBgIn_()
bool setDamage(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
u8 mModelType
Definition KuriboBase.h:290
virtual u32 vf5CC()
Definition KuriboBase.h:205
virtual void setWalkState()
Definition KuriboBase.h:228
virtual bool isBgmSync() const
Definition KuriboBase.h:210
f32 mWalkAnmRate
Definition KuriboBase.h:280
static const f32 cMaxSpeedX
1.0f
Definition KuriboBase.h:306
static void normal_collcheck(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
bool draw() override
Main rendering callback for the actor. Called every frame (the game runs at exactly 60 FPS).
void setDeathInfo_Hasami_()
DrcTouchCB mDrcTouchCallback
Definition KuriboBase.h:297
virtual void setWalkSpeed()
Definition KuriboBase.h:110
virtual void reactSpinFumiProc(Actor *player)
Definition KuriboBase.h:126
KuriboBase(const ActorCreateParameter &param)
bool mAllowDrcTouchInAir
Definition KuriboBase.h:286
Result create() override
Main initialization/setup callback for the actor.
JointBlendModel * mBlendModel
Definition KuriboBase.h:275
EnemyBoyoMgr mBoyoMgr
Definition KuriboBase.h:296
void calcModelBase_(JointBlendModel *blend_model)
void reviveCollisionCheck() override
Result doDelete() override
bool mHasLanded
Definition KuriboBase.h:284
EnemyChibiYoshiEatData mChibiYoshiEatData
Definition KuriboBase.h:295
void setAwaHit(Actor *awa) override
void hitYoshiEat(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
void vsEnemyHitCheck_Normal(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
bool hitCallback_YoshiHipAttk(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
void calcModelBase_()
Definition KuriboBase.h:247
bool mBlockHitImmune
Definition KuriboBase.h:287
ModelType
Definition KuriboBase.h:36
@ cModelType_Kakibo
Definition KuriboBase.h:38
@ cModelType_Normal
Definition KuriboBase.h:37
@ cModelType_Num
Definition KuriboBase.h:39
bool checkRyusa_()
f32 mKakiboHaScale
Definition KuriboBase.h:282
virtual bool disallowDrcTouchOnGround()
Definition KuriboBase.h:143
void vsChibiYoshiHitCheck_Normal(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
virtual void walkEffect()
Definition KuriboBase.h:114
void landonEffect_()
virtual void reactYoshiFumiProc(Actor *yoshi)
Definition KuriboBase.h:131
virtual void balloonCollCheck(ActorCollisionCheck *cc_other)
Definition KuriboBase.h:139
bool mIsKakibo
Definition KuriboBase.h:289
static const ActorCollisionCheck::CollisionData cCcData_Normal
Definition KuriboBase.h:317
bool mIsDrcTouch
Definition KuriboBase.h:288
virtual void setWalkAnm()
f32 mZOffset
Definition KuriboBase.h:281
static const ActorCollisionCheck::CollisionData cCcData_DrcTouch
Definition KuriboBase.h:319
Definition ModelResource.h:14
Definition TexturePatternAnimation.h:15