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