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