New Super Mario Bros. U Headers
Loading...
Searching...
No Matches
CourseData.h
Go to the documentation of this file.
1#pragma once
2
3#include <container/seadSafeArray.h>
4#include <heap/seadDisposer.h>
5#include <math/seadBoundBox.h>
6
7struct Options
8{
9 // Official name not known, but is called area options by the modding community.
10
21};
22static_assert(sizeof(Options) == 0x18);
23
25{
26 // Not certain if official name, but official name in NSMBW is Bg2 (which is conflicting with tile layers)
27
29 struct
30 {
34 } offset; // Unused
35 char name[16];
36 u16 parallax_mode; // Unused
37 u8 _pad[2];
38};
39static_assert(sizeof(DistantViewData) == 0x1C);
40
42{
43 // Is the official name. Called entrance by the modding community.
44
45 struct
46 {
49 } offset;
50 struct
51 {
52 u16 x;
53 u16 y;
54 } camera_offset;
56 struct
57 {
60 } destination;
69 struct
70 {
73 } rail;
75 u8 _pad[1];
76
115
116 enum Flag
117 {
118 cFlag_FaceLeft = 1 << 0, ///< Spawns the player facing left.
119 cFlag_RailPipe = 1 << 1, ///< An unused and broken DokanType, leftover from NSMBW that wasn't fully stripped.
120
121 cFlag_Enterable = 1 << 7, ///< Allows the player to enter.
122 };
123};
124static_assert(sizeof(NextGoto) == 0x18);
125
127{
128 // Speculated official name.
129
131 struct
132 {
135 } offset;
136 u16 switch_flags; // Lower byte: switch flag 0, higher byte: switch flag 1.
145};
146static_assert(sizeof(MapActorData) == 0x18);
147
149{
150 // Is the official name. Called "zone" by the modding community.
151
152 // NSMBW
153 struct
154 {
157 } offset;
158 struct
159 {
160 u16 x;
161 u16 y;
162 } size;
163 u16 color_obj; // "Theme", unused.
164 u16 color_bg; // "Terrain", unused.
171 u8 bg2; // 1st BG id in NSMBW, DV ID in NSMBU.
172 u8 bg3; // 2nd BG id in NSMBW, unused.
177
178 // NSMB2
179 u8 dv; // DV ID in NSMB2, unused.
180
181 // NSMBU
184};
185static_assert(sizeof(AreaData) == 0x1C);
186
188{
189 // Official name not known.
190
191 struct
192 {
195 } offset;
196 struct
197 {
198 u16 x;
199 u16 y;
200 } size;
203};
204static_assert(sizeof(Location) == 0xC);
205
207{
208 // Not certain if official name.
209
212 struct
213 {
216 } point;
219};
220static_assert(sizeof(RailInfo) == 0xC);
221
223{
224 // Official name not known.
225
226 struct
227 {
230 } offset;
234
235 // Nabbit-related
241};
242static_assert(sizeof(RailPoint) == 0x14);
243
245{
246 // Is the official name. Called "area" by the modding community.
247
248public:
249 enum Block
250 {
254 // 4
256 // 6
262 // 12
263 // 13
267 };
268
269public:
271
272 const void* getBlock(Block block) const
273 {
274 return mBlock[block];
275 }
276
277 template <typename T>
278 const T* getBlock(Block block) const
279 {
280 return static_cast<const T*>(getBlock(block));
281 }
282
283 const DistantViewData* getBg2Data(u16 id) const;
284 const NextGoto* getNextGoto(u8 id) const;
285 const MapActorData* getMapActor(u16 type, const MapActorData* start = nullptr) const;
286 const AreaData* getAreaData(u8 id, sead::BoundBox2f* box = nullptr) const;
287 const Location* getLocation(sead::BoundBox2f* box, u8 id) const;
288 const RailInfo* getRailInfo(u8 id) const;
289 const RailPoint* getRailPoint(u8 rail_id) const;
290
291private:
292 void getAreaBox_(sead::BoundBox2f* box, const AreaData& area_data, f32 delta = 0.0f) const;
293
294private:
302};
303static_assert(sizeof(CourseDataFile) == 0x3B8);
304
306{
308
309public:
312
314
315private:
317};
318static_assert(sizeof(CourseData) == 0xEF0);
Definition CourseData.h:245
const MapActorData * getMapActor(u16 type, const MapActorData *start=nullptr) const
u32 mIndex
Definition CourseData.h:295
sead::SafeArray< MapActorData *, 64 > _b8
Definition CourseData.h:299
const void * getBlock(Block block) const
Definition CourseData.h:272
void getAreaBox_(sead::BoundBox2f *box, const AreaData &area_data, f32 delta=0.0f) const
sead::SafeArray< u32, cBlock_Num > mBlockEntryNum
Definition CourseData.h:298
const Location * getLocation(sead::BoundBox2f *box, u8 id) const
sead::SafeArray< u32, 64 > _1b8
Definition CourseData.h:300
sead::SafeArray< u32, cBlock_Num > mBlockSize
Definition CourseData.h:297
const T * getBlock(Block block) const
Definition CourseData.h:278
Block
Definition CourseData.h:250
@ cBlock_RailInfo
Definition CourseData.h:264
@ cBlock_MapActor
Definition CourseData.h:258
@ cBlock_MapActorLoadRes
Definition CourseData.h:259
@ cBlock_RailPoint
Definition CourseData.h:265
@ cBlock_DistantViewData
Definition CourseData.h:255
@ cBlock_ScrollData
Definition CourseData.h:253
@ cBlock_Options
Definition CourseData.h:252
@ cBlock_NextGoto
Definition CourseData.h:257
@ cBlock_Environment
Definition CourseData.h:251
@ cBlock_Num
Definition CourseData.h:266
@ cBlock_AreaData
Definition CourseData.h:260
@ cBlock_Location
Definition CourseData.h:261
const RailPoint * getRailPoint(u8 rail_id) const
sead::SafeArray< u32, 64 > _2b8
Definition CourseData.h:301
const NextGoto * getNextGoto(u8 id) const
const AreaData * getAreaData(u8 id, sead::BoundBox2f *box=nullptr) const
const RailInfo * getRailInfo(u8 id) const
sead::SafeArray< const void *, cBlock_Num > mBlock
Definition CourseData.h:296
const DistantViewData * getBg2Data(u16 id) const
Definition CourseData.h:306
sead::SafeArray< CourseDataFile, 4 > mFile
Definition CourseData.h:316
CourseDataFile * getFile(s32 index)
Definition CourseData.h:149
u16 y
Definition CourseData.h:156
u8 bgm
Definition CourseData.h:175
u8 direction
Definition CourseData.h:173
u8 bg3
Definition CourseData.h:172
u8 bg2
Definition CourseData.h:171
u8 mask
Definition CourseData.h:170
u8 _15
Definition CourseData.h:174
u16 color_bg
Definition CourseData.h:164
u8 zoom_type
Definition CourseData.h:167
u8 zoom_change
Definition CourseData.h:169
u8 bgm_mode
Definition CourseData.h:176
u8 zoom_id
Definition CourseData.h:168
u8 _pad[2]
Definition CourseData.h:183
u8 dv
Definition CourseData.h:179
u16 color_obj
Definition CourseData.h:163
u8 id
Definition CourseData.h:165
u8 flag
Definition CourseData.h:182
u16 x
Definition CourseData.h:155
u8 scroll
Definition CourseData.h:166
Definition CourseData.h:25
u8 _pad[2]
Definition CourseData.h:37
u16 parallax_mode
Definition CourseData.h:36
u16 id
Definition CourseData.h:28
s16 z
Definition CourseData.h:33
char name[16]
Definition CourseData.h:35
s16 y
Definition CourseData.h:32
s16 x
Definition CourseData.h:31
Definition CourseData.h:188
u16 y
Definition CourseData.h:194
u16 x
Definition CourseData.h:193
u8 _pad[3]
Definition CourseData.h:202
u8 id
Definition CourseData.h:201
Definition CourseData.h:127
u16 type
Definition CourseData.h:130
u16 y
Definition CourseData.h:134
u16 switch_flags
Definition CourseData.h:136
u32 param_0
Definition CourseData.h:137
u32 param_1
Definition CourseData.h:138
u8 layer
Definition CourseData.h:140
u16 x
Definition CourseData.h:133
u8 movement_id
Definition CourseData.h:141
u8 area
Definition CourseData.h:139
u8 link_id
Definition CourseData.h:142
u8 _pad[3]
Definition CourseData.h:144
u8 init_state
Definition CourseData.h:143
Definition CourseData.h:42
u8 mp_spawn_flag
Definition CourseData.h:62
u8 _pad[1]
Definition CourseData.h:75
u16 flag
Definition CourseData.h:66
u8 coin_edit_priority
Definition CourseData.h:68
u8 mp_inner_gap
Definition CourseData.h:65
u8 type
Definition CourseData.h:61
u8 _unused0
Definition CourseData.h:64
u16 y
Definition CourseData.h:48
Flag
Definition CourseData.h:117
@ cFlag_Enterable
Allows the player to enter.
Definition CourseData.h:121
@ cFlag_FaceLeft
Spawns the player facing left.
Definition CourseData.h:118
@ cFlag_RailPipe
An unused and broken DokanType, leftover from NSMBW that wasn't fully stripped.
Definition CourseData.h:119
u8 area
Definition CourseData.h:63
u8 file
Definition CourseData.h:58
u8 next_goto
Definition CourseData.h:59
u8 id
Definition CourseData.h:55
u8 chibi_yoshi_next_goto
Definition CourseData.h:67
u8 wipe_type
Definition CourseData.h:74
u16 x
Definition CourseData.h:47
Type
Definition CourseData.h:78
@ cType_DoorExit
Definition CourseData.h:81
@ cType_Checkpoint
Definition CourseData.h:80
@ cType_MiniPipeRight
Definition CourseData.h:96
@ cType_Vine
Definition CourseData.h:98
@ cType_Num
Definition CourseData.h:113
@ cType_ForwardPipe
Definition CourseData.h:99
@ cType_Slip
Definition CourseData.h:88
@ cType_CreditsP4
Definition CourseData.h:109
@ cType_MiniPipeLeft
Definition CourseData.h:95
@ cType_BossFall
Definition CourseData.h:103
@ cType_Normal
Definition CourseData.h:79
@ cType_PipeUp
Definition CourseData.h:82
@ cType_Falling
Definition CourseData.h:86
@ cType_BossWalk
Definition CourseData.h:101
@ cType_Jump
Definition CourseData.h:97
@ cType_PipeDown
Definition CourseData.h:83
@ cType_PipeRight
Definition CourseData.h:85
@ cType_Title
Definition CourseData.h:110
@ cType_Ambush
Definition CourseData.h:111
@ cType_Swim
Definition CourseData.h:89
@ cType_DoorEnter
Definition CourseData.h:104
@ cType_HipAttack
Definition CourseData.h:87
@ cType_CreditsP3
Definition CourseData.h:108
@ cType_CreditsP1
Definition CourseData.h:106
@ cType_MiniPipeUp
Definition CourseData.h:93
@ cType_PipeLeft
Definition CourseData.h:84
@ cType_Boss
Definition CourseData.h:100
@ cType_BossJump
Definition CourseData.h:102
@ cType_MiniPipeDown
Definition CourseData.h:94
@ cType_CreditsP2
Definition CourseData.h:107
u8 point
Definition CourseData.h:72
u8 info
Definition CourseData.h:71
Definition CourseData.h:8
u8 start_next_goto_coin_boost
Definition CourseData.h:18
u8 _unused1[2]
Definition CourseData.h:17
u16 time_0
Definition CourseData.h:14
u16 time_1
Definition CourseData.h:19
u8 _unused0[4]
Definition CourseData.h:15
u32 course_default_switch_flags
Definition CourseData.h:11
u16 loop
Definition CourseData.h:13
u8 start_next_goto
Definition CourseData.h:16
u32 file_default_switch_flags
Definition CourseData.h:12
u16 time_2
Definition CourseData.h:20
Definition CourseData.h:207
u32 _8
Definition CourseData.h:218
u8 id
Definition CourseData.h:210
s8 _1
Definition CourseData.h:211
u16 start
Definition CourseData.h:214
u16 num
Definition CourseData.h:215
u16 flag
Definition CourseData.h:217
Definition CourseData.h:223
u16 y
Definition CourseData.h:229
u8 _pad[1]
Definition CourseData.h:240
u16 _e
Definition CourseData.h:236
u8 _11
Definition CourseData.h:238
u8 _12
Definition CourseData.h:239
s16 delay
Definition CourseData.h:233
u8 _10
Definition CourseData.h:237
f32 accel
Definition CourseData.h:232
u16 x
Definition CourseData.h:228
f32 speed
Definition CourseData.h:231