New Super Mario Bros. U Headers
Loading...
Searching...
No Matches
BlockCoinBase.h
Go to the documentation of this file.
1#pragma once
2
3#include <actor/ActorState.h>
4#include <actor/ScoreMgr.h>
5#include <collision/ActorBoxBgCollision.h>
6#include <player/PlayerEnum.h>
7#include <state/FStateVirtualID.h>
8
10{
11 SEAD_RTTI_OVERRIDE(BlockCoinBase, ActorMultiState)
12
13public:
14 /**
15 * @brief Defines the current bumping mode. Not to be confused with it's current bump-animation movement direction.
16 */
23
25 {
26 cContent_FireMushroom = 0, ///< Super Mushroom if small, Fire Flower otherwise.
27 cContent_MiniMushroom, ///< Always a Mini Mushroom.
28 cContent_LifeMushroom, ///< Always a 1-Up Mushroom.
29 cContent_Mushroom, ///< Always a Super Mushroom.
30 cContent_FireFlower, ///< Always a Fire Flower.
31 cContent_IceFlower, ///< Always an Ice Flower.
32 cContent_PenguinMushroom, ///< Always a Penguin Suit.
33 cContent_PropellerMushroom, ///< Always a Propeller Mushroom.
34 cContent_Star, ///< Always a Star.
35 cContent_ContinuousStar, ///< Star if the player already has one, Coin otherwise.
36 cContent_SquirrelMushroom, ///< Always an Acorn Mushroom.
37 cContent_LifeMoon, ///< Always a 3-Up Moon.
38 cContent_Coin, ///< Always a Coin.
39 cContent_MultiCoin, ///< Up to 10 coins when hit consecutively.
40
41 cContent_Vine = 15, ///< Contains a vine.
42 cContent_Yoshi, ///< Contains a Yoshi Egg.
43 cContent_Spring, ///< Contains a Spring.
44
45 cContent_MushroomIfSmall = 19, ///< Super Mushroom if small, Coin otherwise.
46
47 cContent_Empty = 21 ///< Contains nothing.
48 };
49
56 static_assert(sizeof(MoveType) == 4);
57
58 /**
59 * @brief Defines which face of the block was hit.
60 */
68 static_assert(sizeof(HitFace) == 1);
69
82 static_assert(sizeof(PlayerHit) == 0xC);
83
84public:
85 BlockCoinBase(const ActorCreateParam& param);
86 virtual ~BlockCoinBase() { }
87
88 /**
89 * @brief Spawns a Portable Spring.
90 * @par Address: 0x02706430
91 */
93
94 void spawnYoshiEgg(bool multi);
96 void spawnPowerup(const sead::Vector3f& pos, u32, u32, bool spawn_as_child);
97 void spawnMultiPowerup(const sead::Vector3f& pos, u32, u32, bool spawn_as_child);
98 void spawnPropellerOrCoin(const sead::Vector3f& pos, u32, u32, bool spawn_as_child);
99
100 virtual void onUpMoveStart()
101 {
102 }
103
104 virtual void onDownMoveStart()
105 {
106 }
107
108 virtual void onDownMove_DiffStart()
109 {
110 }
111
112 virtual void onUpMove()
113 {
114 }
115
116 virtual void spawnItemUp()
117 {
118 }
119
120 virtual void onDownMove()
121 {
122 }
123
124 virtual void onDownMoveEnd()
125 {
126 }
127
128 virtual void spawnItemDown()
129 {
130 }
131
132 virtual void onDownMove_DiffEnd()
133 {
134 }
135
136 virtual void updateBumpScale(u8 direction);
137
139 {
140 return 0;
141 }
142
143 virtual void spawnCoinShower();
144
145 virtual void onMove_Diff() // For NSLU
146 {
147 }
148
149 DECLARE_STATE_VIRTUAL_ID_BASE(BlockCoinBase, UpMove)
156
158 static void callbackHead(BgCollision* self, ActorBgCollisionCheck* other);
159 static void callBackWall(BgCollision* self, ActorBgCollisionCheck* other, u8 direction);
160
161 static void callbackFoot_Hit(BgCollision* self, ActorBgCollisionCheck* other);
162 static void callbackHead_Hit(BgCollision* self, ActorBgCollisionCheck* other);
163 static void callBackWall_Hit(BgCollision* self, ActorBgCollisionCheck* other, u8 direction);
164
166 {
167 mBoxBgCollision.setOfs(mBoxBgCollision_Ofs.p0, mBoxBgCollision_Ofs.p1);
168 }
169
170 void setBoxBgCollisionOfs(f32 left, f32 top, f32 right, f32 bottom)
171 {
172 mBoxBgCollision_Ofs.p0.set(left, top);
173 mBoxBgCollision_Ofs.p1.set(right, bottom);
175 }
176
177 void setBoxBgCollisionOfs(const sead::Vector2f& p0, const sead::Vector2f& p1)
178 {
179 mBoxBgCollision_Ofs.p0 = p0;
180 mBoxBgCollision_Ofs.p1 = p1;
182 }
183
185 {
186 return mBoxBgCollision;
187 }
188
190 {
191 return mBumpMode;
192 }
193
195 {
196 return mContent;
197 }
198
200 {
201 return mSpawnDirection;
202 }
203
205 {
206 return mMoveType;
207 }
208
209protected:
211
212protected:
214 //u32 _17d4[4 / sizeof(u32)]; // Alignment???
216 struct
217 {
220 } mBoxBgCollision_Ofs;
245 u8 _1ab1; // DirType
269};
270static_assert(sizeof(BlockCoinBase) == 0x1B28);
Definition BlockCoinBase.h:10
u32 _1ab4
Definition BlockCoinBase.h:248
u8 _1ab1
Definition BlockCoinBase.h:245
ActorBoxBgCollision mBoxBgCollision
Definition BlockCoinBase.h:215
bool mBlockHitNotBoundable
Definition BlockCoinBase.h:254
DirType mSpawnDirection
Definition BlockCoinBase.h:251
MoveType
Definition BlockCoinBase.h:51
@ cMoveType_Down
Definition BlockCoinBase.h:54
@ cMoveType_Up
Definition BlockCoinBase.h:53
@ cMoveType_None
Definition BlockCoinBase.h:52
void spawnJumpdai()
Spawns a Portable Spring.
void spawnPropellerOrCoin(const sead::Vector3f &pos, u32, u32, bool spawn_as_child)
u32 mBumpReturnTimer
Definition BlockCoinBase.h:227
Content
Definition BlockCoinBase.h:25
@ cContent_Coin
Always a Coin.
Definition BlockCoinBase.h:38
@ cContent_Star
Always a Star.
Definition BlockCoinBase.h:34
@ cContent_FireMushroom
Super Mushroom if small, Fire Flower otherwise.
Definition BlockCoinBase.h:26
@ cContent_PenguinMushroom
Always a Penguin Suit.
Definition BlockCoinBase.h:32
@ cContent_MushroomIfSmall
Super Mushroom if small, Coin otherwise.
Definition BlockCoinBase.h:45
@ cContent_Empty
Contains nothing.
Definition BlockCoinBase.h:47
@ cContent_Mushroom
Always a Super Mushroom.
Definition BlockCoinBase.h:29
@ cContent_MiniMushroom
Always a Mini Mushroom.
Definition BlockCoinBase.h:27
@ cContent_MultiCoin
Up to 10 coins when hit consecutively.
Definition BlockCoinBase.h:39
@ cContent_Spring
Contains a Spring.
Definition BlockCoinBase.h:43
@ cContent_IceFlower
Always an Ice Flower.
Definition BlockCoinBase.h:31
@ cContent_ContinuousStar
Star if the player already has one, Coin otherwise.
Definition BlockCoinBase.h:35
@ cContent_LifeMoon
Always a 3-Up Moon.
Definition BlockCoinBase.h:37
@ cContent_Yoshi
Contains a Yoshi Egg.
Definition BlockCoinBase.h:42
@ cContent_PropellerMushroom
Always a Propeller Mushroom.
Definition BlockCoinBase.h:33
@ cContent_FireFlower
Always a Fire Flower.
Definition BlockCoinBase.h:30
@ cContent_LifeMushroom
Always a 1-Up Mushroom.
Definition BlockCoinBase.h:28
@ cContent_SquirrelMushroom
Always an Acorn Mushroom.
Definition BlockCoinBase.h:36
@ cContent_Vine
Contains a vine.
Definition BlockCoinBase.h:41
virtual void onDownMove_DiffStart()
Definition BlockCoinBase.h:108
s8 mSideHitPlayerNo
Definition BlockCoinBase.h:236
virtual void onDownMoveEnd()
Definition BlockCoinBase.h:124
u16 _1aa0
Definition BlockCoinBase.h:231
u8 _1ab3
Definition BlockCoinBase.h:247
Content getBaseContent() const
Definition BlockCoinBase.h:194
u8 _1aaa
Definition BlockCoinBase.h:238
ScoreMgr::ScoreType mScore
Definition BlockCoinBase.h:263
Content mContent
Definition BlockCoinBase.h:249
void spawnYoshiEgg(bool multi)
virtual void onUpMoveStart()
Definition BlockCoinBase.h:100
static void callbackHead_Hit(BgCollision *self, ActorBgCollisionCheck *other)
u32 _1ae0
Definition BlockCoinBase.h:262
bool mBumpCoinSpawned
Definition BlockCoinBase.h:267
u8 _1ab0
Definition BlockCoinBase.h:244
sead::Vector2f p1
Definition BlockCoinBase.h:219
DirType mDestroyHitDirection
Definition BlockCoinBase.h:229
virtual u32 getMultiCoinState()
Definition BlockCoinBase.h:138
HitFace
Defines which face of the block was hit.
Definition BlockCoinBase.h:62
@ cHitFace_Top
Definition BlockCoinBase.h:65
@ cHitFace_Side
Definition BlockCoinBase.h:66
@ cHitFace_Bottom
Definition BlockCoinBase.h:64
@ cHitFace_None
Definition BlockCoinBase.h:63
sead::SafeArray< PlayerHit, cPlayerNum > mPlayerHit
Definition BlockCoinBase.h:266
virtual void onDownMoveStart()
Definition BlockCoinBase.h:104
u16 _1aa4
Definition BlockCoinBase.h:233
virtual ~BlockCoinBase()
Definition BlockCoinBase.h:86
u8 _1aaf
Definition BlockCoinBase.h:243
f32 mBumpScaleMin
Definition BlockCoinBase.h:223
u32 mCoinSpawnCooldown
Definition BlockCoinBase.h:268
static void callBackWall(BgCollision *self, ActorBgCollisionCheck *other, u8 direction)
bool mSpawnContentAsChild
Definition BlockCoinBase.h:256
virtual void updateBumpScale(u8 direction)
virtual void spawnItemUp()
Definition BlockCoinBase.h:116
s32 mHitPlayerNo
Definition BlockCoinBase.h:250
u8 mPlayerNo2
Definition BlockCoinBase.h:246
f32 mInitialY
Definition BlockCoinBase.h:221
DirType getSpawnDirection() const
Definition BlockCoinBase.h:199
bool mSideHitBumping
Definition BlockCoinBase.h:240
void updateBoxBgCollisionOfs()
Definition BlockCoinBase.h:165
u32 _1ae8
Definition BlockCoinBase.h:264
void executeCommon_()
u32 _1a94
Definition BlockCoinBase.h:228
virtual void spawnItemDown()
Definition BlockCoinBase.h:128
f32 mBumpScaleStep
Definition BlockCoinBase.h:224
f32 mDeltaY
Definition BlockCoinBase.h:260
BumpMode mBumpMode
Definition BlockCoinBase.h:242
void setBoxBgCollisionOfs(const sead::Vector2f &p0, const sead::Vector2f &p1)
Definition BlockCoinBase.h:177
u32 _1aec
Definition BlockCoinBase.h:265
f32 mBumpAccelY
Definition BlockCoinBase.h:226
virtual void onMove_Diff()
Definition BlockCoinBase.h:145
u32 _1ac8
Definition BlockCoinBase.h:253
ActorBgCollisionCheck::Sensor mHeadSensor
Definition BlockCoinBase.h:213
static void callBackWall_Hit(BgCollision *self, ActorBgCollisionCheck *other, u8 direction)
void spawnPowerup(const sead::Vector3f &pos, u32, u32, bool spawn_as_child)
static void callbackFoot_Hit(BgCollision *self, ActorBgCollisionCheck *other)
bool mNoAddScoreOnDestroy
Definition BlockCoinBase.h:257
u8 _1aa7
Definition BlockCoinBase.h:235
u8 mBumpUpTimer
Definition BlockCoinBase.h:239
u32 _1adc
Definition BlockCoinBase.h:261
s8 _1aa9
Definition BlockCoinBase.h:237
MoveType mMoveType
Definition BlockCoinBase.h:258
u8 _1aa6
Definition BlockCoinBase.h:234
u32 _1a9c
Definition BlockCoinBase.h:230
const ActorBoxBgCollision & getBoxBgCollision() const
Definition BlockCoinBase.h:184
BumpMode getBumpMode() const
Definition BlockCoinBase.h:189
virtual void onDownMove()
Definition BlockCoinBase.h:120
u8 mForceUpwardSpawn
Definition BlockCoinBase.h:252
void spawnMultiPowerup(const sead::Vector3f &pos, u32, u32, bool spawn_as_child)
BlockCoinBase(const ActorCreateParam &param)
sead::Vector2f p0
Definition BlockCoinBase.h:218
HitFace mHitFace
Definition BlockCoinBase.h:241
virtual void onUpMove()
Definition BlockCoinBase.h:112
virtual void onDownMove_DiffEnd()
Definition BlockCoinBase.h:132
u8 _1acd
Definition BlockCoinBase.h:255
void setBoxBgCollisionOfs(f32 left, f32 top, f32 right, f32 bottom)
Definition BlockCoinBase.h:170
static void callbackHead(BgCollision *self, ActorBgCollisionCheck *other)
f32 mBumpOffsetY
Definition BlockCoinBase.h:222
u16 _1aa2
Definition BlockCoinBase.h:232
virtual void spawnCoinShower()
f32 mDeltaX
Definition BlockCoinBase.h:259
void spawnVine(u8)
f32 mBumpScaleMax
Definition BlockCoinBase.h:225
MoveType getMoveType() const
Definition BlockCoinBase.h:204
Definition BlockCoinBase.h:71
u8 _9
Definition BlockCoinBase.h:78
s8 top_player_no_nslu
Definition BlockCoinBase.h:77
s8 bottom_player_no
Definition BlockCoinBase.h:74
u8 _7
Definition BlockCoinBase.h:76
s8 top_player_no
Definition BlockCoinBase.h:73
s8 side_player_no
Definition BlockCoinBase.h:75
u8 _a
Definition BlockCoinBase.h:79
u8 _0[4]
Definition BlockCoinBase.h:72
u8 _b
Definition BlockCoinBase.h:80