New Super Mario Bros. U Headers
Loading...
Searching...
No Matches
Kuribo.h
Go to the documentation of this file.
1#pragma once
2
3#include <enemy/KuriboBase.h>
4#include <graphics/JointBlendModel.h>
5#include <graphics/SkeletalAnimation.h>
6
8
9class Kuribo : public KuriboBase // vtbl Address: 0x10090E2C
10{
11 // getRuntimeTypeInfoStatic()::typeInfo initialization guard variable Address: 0x101EA150
12 // getRuntimeTypeInfoStatic()::typeInfo Address: 0x101EA14C
13 SEAD_RTTI_OVERRIDE(Kuribo, KuriboBase)
14
15protected:
22
31 static_assert(sizeof(WakiDir) == 4);
32 static_assert(cWakiDir_Num == 4);
33
34public:
35 // Address: 0x102045F0
37
38public:
39 // Address: 0x023D60C8
40 Kuribo(const ActorCreateParam& param);
41
42 // Address: 0x023D66F0
44 // Address: 0x023D6F18
46 // Address: 0x023D6F64
48
49protected:
50 // Address: 0x023D6F74
51 Result doDelete() override;
52
54 {
55 mBlendModel->getCurSklAnim()->getFrameCtrl().setRate(3.0f);
56 mPreFunsuiSpeedX = mSpeed.x;
57 mSpeed.set(0.0f, 0.0f, 0.0f);
58 mIsFunsui = true;
59 }
60
61 void endFunsui_(f32 speed_y) override
62 {
63 mBlendModel->getCurSklAnim()->getFrameCtrl().setRate(2.0f);
64 mSpeed.x = mPreFunsuiSpeedX;
65 mIsFunsui = false;
66 }
67
68 bool isFunsui_() const override
69 {
70 return mIsFunsui;
71 }
72
73public:
74 // Address: 0x023D6FDC
75 void setTurnByEnemyHit(Actor* actor_self, Actor* actor_other) override;
76
77 // Address: 0x023D7310
79
80 // Address: 0x023D732C
82
83 // Address: 0x023D7798
85
86 // Address: 0x023D7A00
87 void down();
88
89 // Address: 0x023D7B58
90 void vsEnemyHitCheck_Normal(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other) override;
91
92 // Address: 0x023D7BD8
93 bool hitCallback_HipAttk(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other) override;
94 // Address: 0x023D7C80
95 bool hitCallback_Spin(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other) override;
96
97 // Address: 0x023D7D18
99
101 {
102 }
103
105 {
106 }
107
108 // Address: 0x023D7DAC
110
111 // Address: 0x023D806C
112 void balloonCollCheck(ActorCollisionCheck* cc_other) override;
113
115 {
116 return isState(StateID_BalloonHang);
117 }
118
120 {
121 return mKuriboType == 4 || mKuriboType == 5;
122 }
123
125 {
126 return isOldState(StateID_Touch);
127 }
128
130 {
131 return isState(StateID_Auto_Walk) ||
132 isState(StateID_Down);
133 }
134
135 // Address: 0x023D8170
137 // Address: 0x023D82B0
139 // Address: 0x023D82DC
141
143 {
144 if (!mIsKakibo)
145 changeState(StateID_Walk);
146 else
147 changeState(StateID_KakiboWalk);
148 }
149
150public:
151 // StateID_KakiboWalk Address: 0x10204644
152 // initializeState_KakiboWalk Address: 0x023D839C
153 // executeState_KakiboWalk Address: 0x023D8428
154 // finalizeState_KakiboWalk Address: 0x023DAD90
155 DECLARE_STATE_ID(Kuribo, KakiboWalk)
156 // StateID_KakiboTurn Address: 0x10204664
157 // initializeState_KakiboTurn Address: 0x023D86BC
158 // executeState_KakiboTurn Address: 0x023D86D8
159 // finalizeState_KakiboTurn Address: 0x023DAD94
161
162 // StateID_Touch Address: 0x102047D4
163 // initializeState_Touch Address: 0x023D88C4
164 // executeState_Touch Address: 0x023D8910
165 // finalizeState_Touch Address: 0x023DAD98
167
168 // StateID_Down Address: 0x10204684
169 // initializeState_Down Address: 0x023D8914
170 // executeState_Down Address: 0x023D8948
171 // finalizeState_Down Address: 0x023DAD9C
173 // StateID_Auto_Walk Address: 0x102046A4
174 // initializeState_Auto_Walk Address: 0x023D89B0
175 // executeState_Auto_Walk Address: 0x023D8B14
176 // finalizeState_Auto_Walk Address: 0x023DADA0
178 // StateID_Dokan_Down Address: 0x102046C4
179 // initializeState_Dokan_Down Address: 0x023D8D84
180 // executeState_Dokan_Down Address: 0x023D8DD0
181 // finalizeState_Dokan_Down Address: 0x023DADA4
183 // StateID_BlockAppear Address: 0x102046E4
184 // initializeState_BlockAppear Address: 0x023D8E78
185 // executeState_BlockAppear Address: 0x023D8F0C
186 // finalizeState_BlockAppear Address: 0x023D8F48
188 // StateID_Born_Split1 Address: 0x10204704
189 // initializeState_Born_Split1 Address: 0x023D8FF4
190 // executeState_Born_Split1 Address: 0x023D9488
191 // finalizeState_Born_Split1 Address: 0x023D948C
193 // StateID_Born_Split2 Address: 0x10204724
194 // initializeState_Born_Split2 Address: 0x023D9498
195 // executeState_Born_Split2 Address: 0x023D9224
196 // finalizeState_Born_Split2 Address: 0x023D9734
198 // StateID_EatOut_Ready Address: 0x10204744
199 // initializeState_EatOut_Ready Address: 0x023D9740
200 // executeState_EatOut_Ready Address: 0x023D97D4
201 // finalizeState_EatOut_Ready Address: 0x023DADA8
203 // StateID_BalloonHang Address: 0x10204764
204 // initializeState_BalloonHang Address: 0x023D98D4
205 // executeState_BalloonHang Address: 0x023D9970
206 // finalizeState_BalloonHang Address: 0x023DADAC
208 // StateID_KameckIce Address: 0x10204784
209 // initializeState_KameckIce Address: 0x023D9A40
210 // executeState_KameckIce Address: 0x023DADB0
211 // finalizeState_KameckIce Address: 0x023D9AA0
213
214protected:
215 // Address: 0x023D6580
217
218 // Address: 0x023D61A4
219 void setKakiboAnm(KakiboAnmID anm_id);
220
221 // Address: 0x023D6634
223
224 // Address: 0x023D7434
225 bool checkGroundKakibo_(f32 check_dist);
226
227 // Address: 0x023D7584
229
231 {
232 if (mKakiboBgmHoldTimer != 0)
233 {
234 mKakiboBgmHoldTimer--;
235 mKakiboHaAngleZ = 0x15555555; // 30 degrees
236 mKakiboHaScale = 1.2f;
237 }
238 else
239 {
240 Angle angle = mKakiboHaAngleZ;
241 angle.chaseRest(0, 0x2222222); // 3 degrees per frame
242 mKakiboHaAngleZ = angle;
243 sead::Mathf::chase(&mKakiboHaScale, 1.0f, 0.02f);
244 }
245 }
246
247protected:
259 f32 mGroundDistance; // When Kuribo is set to spawn on ground
262
263 // Address: 0x102047A4
264 static const f32 cWalkSpeed[cDirType_NumX]; // 0.5f, -0.5f
265
267 {
268 return 0.5f;
269 }
270};
271static_assert(sizeof(Kuribo) == 0x1AC8);
Definition BalloonHangActor.h:6
Definition Kuribo.h:10
u8 mKuriboType
Definition Kuribo.h:249
void initialize() override
static const sead::SafeString cModelName[cModelType_Num]
Definition Kuribo.h:36
void calcDrcTouch() override
void beginFunsui_() override
Definition Kuribo.h:53
Result doDelete() override
Main deletion callback for the actor.
bool createIceActor() override
Callback for spawning ice blocks when frozen by an ice flower.
bool vf554() override
Definition Kuribo.h:124
bool hitCallback_HipAttk(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
bool mIsKakiboWalk1
Definition Kuribo.h:253
f32 mPreFunsuiSpeedX
Definition Kuribo.h:258
static f32 getWalkSpeed()
Definition Kuribo.h:266
u8 _1a97
Definition Kuribo.h:252
void setWalkState() override
Definition Kuribo.h:142
u8 _1a96
Definition Kuribo.h:251
void setWalkSpeed() override
sead::Vector3f mWakiTargetPos
Definition Kuribo.h:254
f32 mGroundDistance
Definition Kuribo.h:259
void drawModel() override
static const f32 cWalkSpeed[cDirType_NumX]
Definition Kuribo.h:264
u8 mKakiboAnm
Definition Kuribo.h:250
ActorBgCollisionCheck::Sensor mBcSensorFootDown
Definition Kuribo.h:248
bool isWakidashi() const override
Definition Kuribo.h:129
WakiDir mWakiDir
Definition Kuribo.h:255
void returnState_Ice() override
bool checkGroundKakiboTurn()
void setKakiboAnm(KakiboAnmID anm_id)
bool checkGroundKakibo_(f32 check_dist)
void vsEnemyHitCheck_Normal(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
bool disallowDrcTouchOnGround() override
Definition Kuribo.h:114
void calcKakiboHa_()
Definition Kuribo.h:230
bool hitCallback_Spin(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
void setTurnByEnemyHit(Actor *actor_self, Actor *actor_other) override
Kuribo(const ActorCreateParam &param)
void balloonCollCheck(ActorCollisionCheck *cc_other) override
ActorUniqueID mBalloonID
Definition Kuribo.h:261
void setFrozenAnm()
bool mIsFunsui
Definition Kuribo.h:257
s32 mKakiboBgmHoldTimer
Definition Kuribo.h:256
void returnAnm_Ice() override
Definition Kuribo.h:104
bool checkGroundCreate_()
void resetCcDrcTouch() override
BalloonHangActor * mpBalloon
Definition Kuribo.h:260
bool isFunsui_() const override
Definition Kuribo.h:68
void calcModel() override
void endFunsui_(f32 speed_y) override
Definition Kuribo.h:61
void setIceAnm() override
Definition Kuribo.h:100
bool checkKakiboTurnSaka_()
void down()
WakiDir
Definition Kuribo.h:24
@ cWakiDir_Down
Definition Kuribo.h:26
@ cWakiDir_Left
Definition Kuribo.h:27
@ cWakiDir_Up
Definition Kuribo.h:25
@ cWakiDir_Right
Definition Kuribo.h:28
@ cWakiDir_Num
Definition Kuribo.h:29
bool vf54C() override
Definition Kuribo.h:119
void onDrcTouch() override