New Super Mario Bros. U Headers
Loading...
Searching...
No Matches
RouletteBlock.h
Go to the documentation of this file.
1#pragma once
2
3#include <map_obj/ActorBlockBase.h>
4#include <enemy/EnemyBoyoMgr.h>
5#include <graphics/AnimModel.h>
6#include <actor/Profile.h>
7
8// vtbl Address: 0x101511D4
10{
11 // getRuntimeTypeInfoStatic()::typeInfo initialization guard variable Address: 0x101EB8C4
12 // getRuntimeTypeInfoStatic()::typeInfo Address: 0x101EB8C8
14
15protected:
16 class DrcTouchCB : public ActorCollisionDrcTouchCallback // vtbl Address: 0x10151534
17 {
18 public:
19 // Address: 0x02879160
20 bool bcSetTouchNormal(BgCollision* bg_collision, const sead::Vector2f& pos) override;
21 };
22 static_assert(sizeof(DrcTouchCB) == 4, "DrcTouchCB size mismatch");
23
24public:
25 // Address: 0x02879078
26 RouletteBlock(const ActorCreateParameter& param);
27 // Address: 0x0287A0FC
29
30protected:
31 // Address: 0x02879570
32 Result create() override;
33 // Address: 0x028799B8
35 // Address: 0x02879A40
36 bool draw() override;
37
38 // Address: 0x0287920C
40 // Address: 0x02879C64
42 /**
43 * @brief Only updates the texture animation frame, which is read elsewhere in order to dispense contents.
44 * @details There's an `f32[20]` array at `0x1015113C` for updating the frame of animation depending on the content nybble aswell as mRouletteRollIndex.
45 * @par Address: 0x02879884
46 */
48 // Address: 0x02879460
50 /**
51 * @brief Ran when the block is hit, and reads the texture animation frame in order to dispense proper contents.
52 * @details There's an `BlockCoinBase::Content[8]` array at `0x1015118C` for setting the block contents from the animation frame.
53 * @par Address: 0x02879A94
54 */
56
57public:
59 {
60 return mTexAnim;
61 }
62
64 {
65 return mFrameCtrl;
66 }
67
69 {
70 return mRouletteCountdown;
71 }
72
73 void setRouletteCountdown(u32 countdown)
74 {
75 mRouletteCountdown = countdown;
76 }
77
79 {
80 return mRouletteRollIndex;
81 }
82
83 void setRouletteRollIndex(u8 index)
84 {
85 mRouletteRollIndex = index;
86 }
87
88public:
89 // Address: 0x10151098
90 static const ActorData cCreateInfo;
91
92protected:
98 u32 mRouletteCountdown; // resets to 9 at 0
99 u8 mRouletteRollIndex; // is indexed into array for texture pattern frame; values go 0.0, <CONTENT>, 1.0, 2.0
107};
108static_assert(sizeof(RouletteBlock) == 0x1D10, "RouletteBlock size mismatch");
Definition RouletteBlock.h:17
bool bcSetTouchNormal(BgCollision *bg_collision, const sead::Vector2f &pos) override
Definition RouletteBlock.h:10
void onDrcTouch() override
u8 mRouletteRollIndex
Definition RouletteBlock.h:99
u8 getRouletteRollIndex() const
Definition RouletteBlock.h:78
u32 getRouletteCountdown() const
Definition RouletteBlock.h:68
void loadActorRes()
u32 _1d04
Definition RouletteBlock.h:104
void rollRoulette()
Only updates the texture animation frame, which is read elsewhere in order to dispense contents.
void setRouletteCountdown(u32 countdown)
Definition RouletteBlock.h:73
u32 mRouletteCountdown
Definition RouletteBlock.h:98
sead::Vector3f mScaleFactor
Definition RouletteBlock.h:100
FrameCtrl * getFrameCtrl() const
Definition RouletteBlock.h:63
AnimModel * mModelUsed
Definition RouletteBlock.h:94
bool draw() override
Main rendering callback for the actor. Called every frame (the game runs at exactly 60 FPS).
AnimModel * mModelActive
Definition RouletteBlock.h:93
bool mAlreadyUsed
Definition RouletteBlock.h:97
void setRouletteRollIndex(u8 index)
Definition RouletteBlock.h:83
void updateModel()
f32 _1cf8
Definition RouletteBlock.h:101
RouletteBlock(const ActorCreateParameter &param)
TexturePatternAnimation * getTexAnim() const
Definition RouletteBlock.h:58
u32 _1d00
Definition RouletteBlock.h:103
~RouletteBlock() override
Definition RouletteBlock.h:28
u8 _1cfc[4]
Definition RouletteBlock.h:102
DrcTouchCB mDrcTouchCallback
Definition RouletteBlock.h:106
static const ActorData cCreateInfo
Definition RouletteBlock.h:90
Result create() override
Main initialization/setup callback for the actor.
void vf2DC() override
Ran when the block is hit, and reads the texture animation frame in order to dispense proper contents...
bool execute() override
Main execution/logic callback for the actor. Called every frame (the game runs at exactly 60 FPS).
FrameCtrl * mFrameCtrl
Definition RouletteBlock.h:96
EnemyBoyoMgr * mBoyoMgr
Definition RouletteBlock.h:105
TexturePatternAnimation * mTexAnim
Definition RouletteBlock.h:95
SEAD_RTTI_OVERRIDE(RouletteBlock, ActorBlockBase)