NSMBW-Decomp
A decompilation of New Super Mario Bros. Wii
Loading...
Searching...
No Matches
f_base.hpp
1#pragma once
2#include <types.h>
3#include <lib/egg/heap/eggFrmHeap.hpp>
6#include <game/framework/f_helper_unk.hpp>
7#include <game/framework/f_manager.hpp>
8#include <game/framework/f_list_mg.hpp>
9
10/**
11 * @brief The base class for all scenes, actors and various other processes.
12 * @ingroup framework
13 * @details
14 * ## Overview
15 * fBase_c defines the core elements of a process, to provide common behaviour across all bases.
16 *
17 * The most significant components are:
18 * - ::mUniqueID, a unique identifier for every created base.
19 * - ::mParam, a 32-bit value used to configure the base. For profiles representing level sprites, this
20 * field is equivalent to nybbles 5 to 12 of Reggie' sprite data. Classes that don't represent a specific
21 * profile should avoid using this value to determine their behaviour.
22 * - ::mProfName, an identifier for the base's profile.
23 * - ::mGroupType, which specifies the base's group type (see
24 * [Inheritance and Group Types](#inheritance-and-group-types) for more details).
25 * - The class embeds @ref ::mMng "an instance of fManager_c", which manages most of the base's lifecycle.
26 * - The remaining fields are also related to the base's lifecycle or are entirely unused.
27 *
28 * ## Creating Bases
29 * A base can be created by calling the ::createRoot or the ::createChild functions. Most subclasses
30 * provide their own implementations of these functions with additional parameters available; their use
31 * is recommended.
32 *
33 * The overloaded @ref ::operator new() "new" operator ensures that bases are zero-initialized (therefore
34 * initializing fields to zero is not necessary), while the @ref ::operator delete "delete" operator is
35 * provided for convenience.
36 *
37 * ## Deleting Bases
38 * Bases can be deleted by calling ::deleteRequest on them. A base will be informed of its impending
39 * deletion when its ::deleteReady method is called. Please note that deleting a base will delete all
40 * its children as well.
41 *
42 * ## Iterating Bases
43 * A small iteration API is provided:
44 * - Use ::getConnectParent to get a base's parent.
45 * - Use ::getConnectChild to get a base's first child.
46 * - Use ::getConnectBrNext to get a base's next sibling.
47 *
48 * For conducting searches across the entire base tree, please refer to
49 * @xlink{./classfManager__c.html#global-base-searching, fManager_c}.
50 *
51 * ## Inheritance and Group Types
52 * The ::mGroupType field offers basic type information about a base:
53 * - Bases with group type ::OTHER are generic processes, which inherit from dBase_c.
54 * - Bases with group type ::SCENE are scene profiles, which inherit from dScene_c.
55 * - Bases with group type ::ACTOR are game entities, which inherit from dBaseActor_c.
56 *
57 * No base inherits fBase_c directly.
58 *
59 * ## Base Lifecycle
60 * The lifecycle of a base consists of multiple operations, whose behaviour can be overridden by any of the
61 * subclasses. Each operation has an @xlink{./classfManager__c.html#implementation, associated linked list},
62 * containing all bases for which said operation is scheduled for the current frame. fBase_c (and
63 * fManager_c) manage operation scheduling internally, therefore developer interaction is not required.
64 *
65 * ### Operation Flow
66 * Every operation is composed by three steps: @p pre , @p do and @p post (each with their own methods).
67 * While the @p do method is generally reserved for profile-specific behaviour, the @p pre and @p post
68 * methods are commonly used to supply shared behaviour in base classes.
69 *
70 * The @p pre and @p do steps return a ::PACK_RESULT_e value, which is converted to a ::MAIN_STATE_e
71 * value to determine the result of the operation. Said value is then passed to the @p post method,
72 * which acts accordingly.
73 * @p pre step result | @p do step result | @p post argument
74 * :-----------------: | :----------------: | :--------------:
75 * ::NOT_READY | *N/A (not run)* | ::CANCELED
76 * ::SUCCEEDED | ::NOT_READY | ::WAITING
77 * ::SUCCEEDED | ::SUCCEEDED | ::SUCCESS
78 * ::SUCCEEDED | ::FAILED | ::ERROR
79 * Operations are carried out by the ::commonPack function.
80 *
81 * ### Core Operations
82 * fBase_c defines four core operations:
83 * - @p create runs immediately after construction, and can be used to set up the base or load resources
84 * for it. The operation result leads to three possible outcomes:
85 * - If the operation result is ::SUCCESS, the base enters the main execution cycle.
86 * - If the operation result is ::CANCELED or ::WAITING, the operation will be reattempted in the next frame.
87 * - If the operation result is ::ERROR, the base is deleted.
88 *
89 * - @p execute serves as the base's own main loop, running every frame. This operation can be skipped by
90 * enabling the relevant ::PROC_DISABLE_e flag.
91 * - @p draw offers an alternative main loop specifically for rendering code. It also runs every frame,
92 * and can be skipped by enabling the relevant ::PROC_DISABLE_e flag.
93 * - @p delete runs immediately before destruction, and can be used to deallocate resources or remove
94 * links to other bases. This operation will not proceed until all the base's children are deleted.
95 *
96 * @inlineimage dol/framework/fBase_lifecycle.svg
97 * @imagecaption{The lifecycle of a base.}
98 *
99 * ### Connect Operation
100 * @p connect is an internal operation for process management that runs every frame along the
101 * aforementioned four; bases should not override it. See ::connectProc for more information on the tasks
102 * carried out in this operation.
103 *
104 * ## Unused Content
105 * - ::sLoadAsyncCallback and ::sUnloadCallback are presumably related to the scrapped relocatable
106 * profile system (more details here). These callbacks are set to empty placeholder functions (which belong
107 * to dBase_c) by dBase_c::initLoader. Judging by their names, they were supposed to be called after a
108 * profile module would have been loaded/unloaded.
109 * - Each base supports having its own @ref ::mHeap "heap". The heap name, translated from Japanese,
110 * is *Heap that each process can have individually (fBase_c::mHeap)*. Two working methods for creating
111 * this heap are still in the game (::entryFrmHeap, ::entryFrmHeapNonAdjust), but are unused. This per-base
112 * allocation method was most likely discontinued in favour of mAllocator_c and its derivatives.
113 * - Two additional unused list-like structures are present in the class: ::mpUnusedHelper and
114 * ::mUnusedList. Since the symbols for the related functions have not yet been cracked, it's difficult
115 * to tell what their purpose might have been.
116 *
117 * @todo Link to unused relocation system article and mAllocator_c when their page gets written.
118 */
119class fBase_c {
120public:
121
122 /// @brief The possible lifecycle states.
124 CREATING, ///< The base's @p create operation has yet to conclude.
125 ACTIVE, ///< The base is in the main execution cycle.
126 DELETING, ///< The base's @p delete operation is about to run.
127 };
128
129 /// @brief The possible group types.
131 OTHER, ///< The base is a @ref dBase_c "generic process".
132 SCENE, ///< The base is a @ref dScene_c "scene".
133 ACTOR ///< The base is an @ref dBaseActor_c "actor".
134 };
135
136 /// @brief The possible operation results.
138 CANCELED, ///< The operation was canceled early.
139 ERROR, ///< The operation could not be completed.
140 SUCCESS, ///< The operation was completed successfully.
141 WAITING ///< The operation is waiting for something and cannot be completed yet.
142 };
143
144 /// @brief The possible operation step results.
146 NOT_READY, ///< The step could not completed at this time.
147 SUCCEEDED, ///< The step was completed successfully.
148 FAILED, ///< The step could not be completed.
149 };
150
151 /// @brief Controls if the @p execute and @p draw operations should be skipped.
153 ROOT_DISABLE_EXECUTE = BIT_FLAG(0), ///< Execution is disabled, and this is a root base.
154 DISABLE_EXECUTE = BIT_FLAG(1), ///< Execution is disabled.
155 ROOT_DISABLE_DRAW = BIT_FLAG(2), ///< Drawing is disabled, and this is a root base.
156 DISABLE_DRAW = BIT_FLAG(3) ///< Drawing is disabled.
157 };
158
159 /// @brief The base's unique identifier.
160 /// @details This value is incremented for every created base. Should it reach @ref fBaseID_e::BASE_ID_MAX,
161 /// the game will intentionally stall.
163 u32 mParam; ///< A bitfield that configures the base's behaviour. Its usage varies from profile to profile.
164 ProfileName mProfName; ///< The base's profile name.
165
166protected:
167 u8 mLifecycleState; ///< The base's lifecycle state. Value is a ::LIFECYCLE_e.
168
169 /// @brief If deletion of the base was requested, but the @p delete operation has not been
170 /// scheduled yet.
172
173 /// @brief If the @p create operation was completed, but scheduling the @p execute and @p draw
174 /// operations isn't possible at this time.
175 /// @details If true, scheduling will be deferred to the next @p connect operation.
177
178 /// @brief If the @p create operation has not been completed, and rescheduling it isn't possible at
179 /// this time.
180 /// @details If true, rescheduling will be deferred to the next @p connect operation.
182
183 u8 mGroupType; ///< The base's group type. Value is a ::GROUP_TYPE_e.
184 u8 mProcControl; ///< The operations to be skipped. Value is a ::PROC_DISABLE_e.
185
186 /// @brief Checks if a flag is set in ::mProcControl.
187 bool isProcControlFlag(u8 flag) const { return (mProcControl & flag) != 0; }
188 /// @brief Sets a flag in ::mProcControl.
189 void setProcControlFlag(u8 flag) { mProcControl |= flag; }
190 /// @brief Clears a flag in ::mProcControl.
191 void clearProcControlFlag(u8 flag) { mProcControl &= ~flag; }
192
193 fManager_c mMng; ///< The base's process manager.
194
195 fBaHelper_c *mpUnusedHelper; ///< @unused See [Unused Content](#unused-content).
196 fLiMgBa_c mUnusedList; ///< @unused See [Unused Content](#unused-content).
197
198 // [No p because of the string "fBase_c::mHeap"]
199 EGG::FrmHeap *mHeap; ///< @unused The base's dedicated heap.
200
201public:
202 fBase_c(); ///< Constructs a new base.
203
204 /// @brief @p new operator override for all bases.
205 /// @details Bases are allocated in mHeap::g_gameHeaps[0] in a top-down direction, and are
206 /// zero-initialized.
207 static void *operator new(size_t);
208 static void operator delete(void *); ///< @p delete operator override for all bases.
209
210protected:
211 /// @brief @p do method for the @p create operation.
212 /// @return A ::PACK_RESULT_e value.
213 virtual int create();
214
215 /// @brief @p pre method for the @p create operation.
216 /// @return A ::PACK_RESULT_e value.
217 virtual int preCreate();
218
219 /// @brief @p post method for the @p create operation.
220 virtual void postCreate(MAIN_STATE_e state);
221
222 /// @brief @p do method for the @p delete operation.
223 /// @details This method was renamed due to conflict with the @p delete C++ keyword.
224 /// @return A ::PACK_RESULT_e value.
225 virtual int doDelete();
226
227 /// @brief @p pre method for the @p delete operation.
228 /// @return A ::PACK_RESULT_e value.
229 virtual int preDelete();
230
231 /// @brief @p post method for the @p delete operation.
232 virtual void postDelete(MAIN_STATE_e state);
233
234 /// @brief @p do method for the @p execute operation.
235 /// @return A ::PACK_RESULT_e value.
236 virtual int execute();
237
238 /// @brief @p pre method for the @p execute operation.
239 /// @return A ::PACK_RESULT_e value.
240 virtual int preExecute();
241
242 /// @brief @p post method for the @p execute operation.
243 virtual void postExecute(MAIN_STATE_e state);
244
245 /// @brief @p do method for the @p draw operation.
246 /// @return A ::PACK_RESULT_e value.
247 virtual int draw();
248
249 /// @brief @p pre method for the @p draw operation.
250 /// @return A ::PACK_RESULT_e value.
251 virtual int preDraw();
252
253 /// @brief @p post method for the @p draw operation.
254 virtual void postDraw(MAIN_STATE_e state);
255
256 /// @brief Informs the base that it's about to be deleted.
257 virtual void deleteReady();
258
259 /**
260 * @unused Creates a heap of the given size for the base.
261 * @details If the requested heap space is not available, the heap is adjusted to allocate all the
262 * available memory. If that also fails, the base is deleted.
263 * @param size The heap's size, or @p -1 to allocate all available space.
264 * @param parentHeap The parent heap, or @p nullptr to use the current heap.
265 * @return If the heap creation was successful.
266 */
267 virtual bool entryFrmHeap(unsigned long size, EGG::Heap *parentHeap);
268
269 /**
270 * @unused Creates a heap of the given size for the base.
271 * @details Unlike ::entryFrmHeap, the base is immediately deleted if the requested space is not
272 * available.
273 * @param size The heap's size, or @p -1 to allocate all available space.
274 * @param parentHeap The parent heap, or @p nullptr to use the current heap.
275 * @return If the heap creation was successful.
276 */
277 virtual bool entryFrmHeapNonAdjust(unsigned long size, EGG::Heap *parentHeap);
278 virtual bool createHeap(); ///< @unused [Does nothing].
279
280 virtual ~fBase_c(); ///< Destroys the base.
281
282public:
283 /// @brief Requests deletion of the base.
284 /// @details Calling this function multiple times has no effect.
285 void deleteRequest();
286
287 fBase_c *getConnectParent() const; ///< Gets the base's parent.
288 fBase_c *getConnectChild() const; ///< Gets the base's first child.
289 fBase_c *getConnectBrNext() const; ///< Gets the base's next sibling.
290
291 /// @brief Checks if the base has at least one child in the @ref ::LIFECYCLE_e::CREATING "CREATING" state.
292 /// @return If such a child base exists.
293 bool checkChildProcessCreateState() const;
294
295private:
296 int createPack(); ///< Executes the @p create operation. See ::commonPack.
297 int deletePack(); ///< Executes the @p delete operation. See ::commonPack.
298 int executePack(); ///< Executes the @p execute operation. See ::commonPack.
299 int drawPack(); ///< Executes the @p draw operation. See ::commonPack.
300
301 /**
302 * @brief Executes an operation. See [here](#operation-flow) for more details.
303 *
304 * @param doFunc The operation's @p do method.
305 * @param preFunc The operation's @p pre method.
306 * @param postFunc The operation's @p post method.
307 * @return A ::PACK_RESULT_e value returned from doFunc, or preFunc if doFunc was not executed.
308 */
309 int commonPack(int (fBase_c::*doFunc)(), int (fBase_c::*preFunc)(), void (fBase_c::*postFunc)(MAIN_STATE_e));
310
311 /**
312 * @brief Executes the @p connect operation.
313 * @details This operation carries out the following tasks:
314 * - Schedule the base (and its children) for deletion if deletion was requested (see ::mDeleteRequested)
315 * - Propagate updates to the root base's ::mProcControl field down the tree
316 * - Update the base's position in the @p execute and @p draw lists on priority changes
317 * - Process any deferred schedule requests (see ::mDeferExecute and ::mDeferRetryCreate)
318 * @return The operation always returns ::SUCCEEDED.
319 */
320 int connectProc();
321
322 /// @brief Kickstarts the base's lifecycle by running the @p create operation.
323 void runCreate();
324
325 /// @brief Gets a child of the base in the @ref ::LIFECYCLE_e::CREATING "CREATING" state.
326 /// @return The first child satisfying this condition, or @p nullptr if none is found.
328
329public:
330 /**
331 * @brief Creates a child base under the given parent.
332 *
333 * @param profName The base's profile name.
334 * @param parent The base's parent. Must not be @p nullptr .
335 * @param param The base's parameters.
336 * @param groupType The base's group type.
337 * @return A pointer to the instantiated base, or @p nullptr .
338 */
339 static fBase_c *createChild(ProfileName profName, fBase_c *parent, unsigned long param, u8 groupType);
340
341 /**
342 * @brief Creates a root base.
343 *
344 * @param profName The base's profile name.
345 * @param param The base's parameters.
346 * @param groupType The base's group type.
347 * @return A pointer to the instantiated base, or @p nullptr .
348 */
349 static fBase_c *createRoot(ProfileName profName, unsigned long param, u8 groupType);
350
351private:
352 /**
353 * @brief Sets temporary data to be used for the next base's construction.
354 *
355 * @param profName The base's profile name.
356 * @param connectParent The connect node of the base's parent, or @p nullptr .
357 * @param param The base's parameters.
358 * @param groupType The base's group type.
359 */
360 static void setTmpCtData(ProfileName profName, fTrNdBa_c *connectParent, unsigned long param, u8 groupType);
361
362 /**
363 * @brief Internal function for base construction.
364 *
365 * @param profName The base's profile name.
366 * @param connectParent The parent base's connect node.
367 * @param param The base's parameters.
368 * @param groupType The base's group type.
369 * @return A pointer to the instantiated base, or @p nullptr .
370 */
371 static fBase_c *fBase_make(ProfileName profName, fTrNdBa_c *connectParent, unsigned long param, u8 groupType);
372
373protected:
374 static int (*sLoadAsyncCallback)(); ///< @unused See [Unused Content](#unused-content).
375 static void (*sUnloadCallback)(); ///< @unused See [Unused Content](#unused-content).
376
377private:
378 static fBaseID_e m_rootUniqueID; ///< Unique ID counter for base construction. See ::mUniqueID.
379 static u32 m_tmpCtParam; ///< Temporary storage for the next constructed base's params. See ::mParam.
380 static ProfileName m_tmpCtProfName; ///< Temporary storage for the next constructed base's profile name. See ::mProfName.
381 static u8 m_tmpCtGroupType; ///< Temporary storage for the next constructed base's group type. See ::mGroupType.
382 static fTrNdBa_c *m_tmpCtConnectParent; ///< Temporary storage for the next constructed base's parent connect node.
383
384 friend class fManager_c;
385 friend class fLiNdBa_c;
386 friend class fTrMgBa_c;
387};
[Unused]. [A helper class for fBase_c with unknown purpose].
int commonPack(int(fBase_c::*doFunc)(), int(fBase_c::*preFunc)(), void(fBase_c::*postFunc)(MAIN_STATE_e))
Executes an operation. See here for more details.
Definition f_base.cpp:66
u8 mGroupType
The base's group type. Value is a GROUP_TYPE_e.
Definition f_base.hpp:183
fBase_c * getChildProcessCreateState() const
Gets a child of the base in the CREATING state.
Definition f_base.cpp:465
MAIN_STATE_e
The possible operation results.
Definition f_base.hpp:137
@ ERROR
The operation could not be completed.
Definition f_base.hpp:139
@ SUCCESS
The operation was completed successfully.
Definition f_base.hpp:140
@ CANCELED
The operation was canceled early.
Definition f_base.hpp:138
@ WAITING
The operation is waiting for something and cannot be completed yet.
Definition f_base.hpp:141
static ProfileName m_tmpCtProfName
Temporary storage for the next constructed base's profile name. See mProfName.
Definition f_base.hpp:380
virtual int preCreate()
pre method for the create operation.
Definition f_base.cpp:92
static int(* sLoadAsyncCallback)()
[Unused]. See Unused Content.
Definition f_base.hpp:374
virtual int draw()
do method for the draw operation.
Definition f_base.cpp:188
virtual int preDelete()
pre method for the delete operation.
Definition f_base.cpp:126
fLiMgBa_c mUnusedList
[Unused]. See Unused Content.
Definition f_base.hpp:196
bool mDeferExecute
If the create operation was completed, but scheduling the execute and draw operations isn't possible ...
Definition f_base.hpp:176
static fBase_c * createChild(ProfileName profName, fBase_c *parent, unsigned long param, u8 groupType)
Creates a child base under the given parent.
Definition f_base.cpp:511
static fBaseID_e m_rootUniqueID
Unique ID counter for base construction. See mUniqueID.
Definition f_base.hpp:378
EGG::FrmHeap * mHeap
[Unused]. The base's dedicated heap.
Definition f_base.hpp:199
int createPack()
Executes the create operation. See commonPack.
Definition f_base.cpp:122
void runCreate()
Kickstarts the base's lifecycle by running the create operation.
Definition f_base.cpp:450
virtual ~fBase_c()
Destroys the base.
Definition f_base.cpp:57
fBase_c * getConnectChild() const
Gets the base's first child.
Definition f_base.cpp:310
fBase_c * getConnectBrNext() const
Gets the base's next sibling.
Definition f_base.cpp:317
void deleteRequest()
Requests deletion of the base.
Definition f_base.cpp:289
int connectProc()
Executes the connect operation.
Definition f_base.cpp:212
virtual int create()
do method for the create operation.
Definition f_base.cpp:88
static fBase_c * fBase_make(ProfileName profName, fTrNdBa_c *connectParent, unsigned long param, u8 groupType)
Internal function for base construction.
Definition f_base.cpp:490
GROUP_TYPE_e
The possible group types.
Definition f_base.hpp:130
@ SCENE
The base is a scene.
Definition f_base.hpp:132
@ OTHER
The base is a generic process.
Definition f_base.hpp:131
@ ACTOR
The base is an actor.
Definition f_base.hpp:133
virtual int preExecute()
pre method for the execute operation.
Definition f_base.cpp:172
fManager_c mMng
The base's process manager.
Definition f_base.hpp:193
static u8 m_tmpCtGroupType
Temporary storage for the next constructed base's group type. See mGroupType.
Definition f_base.hpp:381
virtual bool entryFrmHeap(unsigned long size, EGG::Heap *parentHeap)
[Unused]. Creates a heap of the given size for the base.
Definition f_base.cpp:324
virtual bool createHeap()
[Unused]. [Does nothing].
Definition f_base.cpp:434
virtual void postCreate(MAIN_STATE_e state)
post method for the create operation.
Definition f_base.cpp:96
static u32 m_tmpCtParam
Temporary storage for the next constructed base's params. See mParam.
Definition f_base.hpp:379
ProfileName mProfName
The base's profile name.
Definition f_base.hpp:164
bool checkChildProcessCreateState() const
Checks if the base has at least one child in the CREATING state.
Definition f_base.cpp:479
bool mDeferRetryCreate
If the create operation has not been completed, and rescheduling it isn't possible at this time.
Definition f_base.hpp:181
fBaHelper_c * mpUnusedHelper
[Unused]. See Unused Content.
Definition f_base.hpp:195
LIFECYCLE_e
The possible lifecycle states.
Definition f_base.hpp:123
@ CREATING
The base's create operation has yet to conclude.
Definition f_base.hpp:124
@ DELETING
The base's delete operation is about to run.
Definition f_base.hpp:126
@ ACTIVE
The base is in the main execution cycle.
Definition f_base.hpp:125
u32 mParam
A bitfield that configures the base's behaviour. Its usage varies from profile to profile.
Definition f_base.hpp:163
bool mDeleteRequested
If deletion of the base was requested, but the delete operation has not been scheduled yet.
Definition f_base.hpp:171
virtual void postExecute(MAIN_STATE_e state)
post method for the execute operation.
Definition f_base.cpp:180
virtual int preDraw()
pre method for the draw operation.
Definition f_base.cpp:192
void clearProcControlFlag(u8 flag)
Clears a flag in mProcControl.
Definition f_base.hpp:191
int deletePack()
Executes the delete operation. See commonPack.
Definition f_base.cpp:164
virtual int execute()
do method for the execute operation.
Definition f_base.cpp:168
void setProcControlFlag(u8 flag)
Sets a flag in mProcControl.
Definition f_base.hpp:189
int executePack()
Executes the execute operation. See commonPack.
Definition f_base.cpp:184
static fBase_c * createRoot(ProfileName profName, unsigned long param, u8 groupType)
Creates a root base.
Definition f_base.cpp:518
PROC_DISABLE_e
Controls if the execute and draw operations should be skipped.
Definition f_base.hpp:152
@ DISABLE_DRAW
Drawing is disabled.
Definition f_base.hpp:156
@ ROOT_DISABLE_EXECUTE
Execution is disabled, and this is a root base.
Definition f_base.hpp:153
@ DISABLE_EXECUTE
Execution is disabled.
Definition f_base.hpp:154
@ ROOT_DISABLE_DRAW
Drawing is disabled, and this is a root base.
Definition f_base.hpp:155
virtual bool entryFrmHeapNonAdjust(unsigned long size, EGG::Heap *parentHeap)
[Unused]. Creates a heap of the given size for the base.
Definition f_base.cpp:408
u8 mLifecycleState
The base's lifecycle state. Value is a LIFECYCLE_e.
Definition f_base.hpp:167
virtual void postDraw(MAIN_STATE_e state)
post method for the draw operation.
Definition f_base.cpp:200
virtual void postDelete(MAIN_STATE_e state)
post method for the delete operation.
Definition f_base.cpp:142
fBase_c * getConnectParent() const
Gets the base's parent.
Definition f_base.cpp:303
PACK_RESULT_e
The possible operation step results.
Definition f_base.hpp:145
@ NOT_READY
The step could not completed at this time.
Definition f_base.hpp:146
@ SUCCEEDED
The step was completed successfully.
Definition f_base.hpp:147
@ FAILED
The step could not be completed.
Definition f_base.hpp:148
int drawPack()
Executes the draw operation. See commonPack.
Definition f_base.cpp:204
u8 mProcControl
The operations to be skipped. Value is a PROC_DISABLE_e.
Definition f_base.hpp:184
static void setTmpCtData(ProfileName profName, fTrNdBa_c *connectParent, unsigned long param, u8 groupType)
Sets temporary data to be used for the next base's construction.
Definition f_base.cpp:483
virtual void deleteReady()
Informs the base that it's about to be deleted.
Definition f_base.cpp:208
static fTrNdBa_c * m_tmpCtConnectParent
Temporary storage for the next constructed base's parent connect node.
Definition f_base.hpp:382
virtual int doDelete()
do method for the delete operation.
Definition f_base.cpp:118
static void(* sUnloadCallback)()
[Unused]. See Unused Content.
Definition f_base.hpp:375
fBaseID_e mUniqueID
The base's unique identifier.
Definition f_base.hpp:162
bool isProcControlFlag(u8 flag) const
Checks if a flag is set in mProcControl.
Definition f_base.hpp:187
fBase_c()
Constructs a new base.
Definition f_base.cpp:15
A base list, made of fLiNdBa_c nodes.
Definition f_list_mg.hpp:13
A base tree node.
Definition f_tree_nd.hpp:12
fBaseID_e
A unique identifier for each base.
Definition f_base_id.hpp:6
u16 ProfileName
The name of a profile. Value is a fProfile::PROFILE_NAME_e.
Definition f_profile.hpp:32