New Super Mario Bros. U Headers
Loading...
Searching...
No Matches
Profile.h
Go to the documentation of this file.
1#pragma once
2
3#include <actor/ProfileInfo.h>
4
5#include <basis/seadAssert.h>
6#include <container/seadSafeArray.h>
7#include <heap/seadHeap.h>
8#include <math/seadVector.h>
9
11{
12 enum Flag
13 {
15 cFlag_MapObj = 0x0008,
16 cFlag_Grouped = 0x0010,
17 cFlag_Unknown = 0x0020,
19 };
20
21 s32 offset_x; // (X) Offset to be added to the initial actor position
22 s32 offset_y; // (Y) ^^^
23 struct
24 {
25 s32 offset_x; // (X) Offset to center of the spawn range bounding box
26 s32 offset_y; // (Y) ^^^
27 s32 half_size_x; // (X) Half the size of the spawn range bounding box
28 s32 half_size_y; // (Y) ^^^
29 } spawn_range;
30 struct {
35 } cull_range;
36 u16 flag; // See enum Flag
37
38 // Address: 0x100018F4
40};
41static_assert(sizeof(ActorCreateInfo) == 0x24, "ActorCreateInfo size mismatch");
42
43class ActorBase;
44struct ActorCreateParam;
45class ModelResource;
46
47typedef ActorBase* (*ActorFactory)(const ActorCreateParam&);
48
50{
51public:
52 enum Flag
53 {
55 cFlag_Unk3 = 1 << 3,
56 cFlag_Unk4 = 1 << 4,
57 cFlag_Unk7 = 1 << 7,
58 cFlag_Unk8 = 1 << 8,
60 cFlag_Unk12 = 1 << 12,
61
63 };
64 static_assert(sizeof(Flag) == 4);
65
66public:
67 friend Flag operator|(const Flag& lhs, const Flag& rhs)
68 {
69 return (Flag)((u32)lhs | (u32)rhs);
70 }
71
72 friend Flag& operator|=(Flag& lhs, const Flag& rhs)
73 {
74 lhs = lhs | rhs;
75 return lhs;
76 }
77
78 friend Flag operator&(const Flag& lhs, const Flag& rhs)
79 {
80 return (Flag)((u32)lhs & (u32)rhs);
81 }
82
83 friend Flag& operator&=(Flag& lhs, const Flag& rhs)
84 {
85 lhs = lhs & rhs;
86 return lhs;
87 }
88
89 friend Flag operator~(const Flag& val)
90 {
91 return (Flag)(~(u32)val);
92 }
93
94public:
95 // Address: 0x02019554
96 Profile(ActorFactory factory, s32 id, const sead::SafeString& name, const ActorCreateInfo* create_info = nullptr, Flag flag = cFlag_None);
97
98 ActorFactory getActorFactory() const
99 {
100 SEAD_ASSERT(mFactory);
101 return mFactory;
102 }
103
104 s32 getID() const
105 {
106 return mID;
107 }
108
110 {
111 return *mActorCreateInfo;
112 }
113
114 bool isResLoaded() const
115 {
116 return mIsResLoaded;
117 }
118
119 Flag getFlag() const
120 {
121 return mFlag;
122 }
123
124 // Address: 0x020195FC
125 void loadResource(sead::Heap* heap);
126 // Address: 0x020196CC
127 void unloadResource(sead::Heap* heap);
128 // Address: 0x020196E4
129 ModelResource* getResource(u32 index) const;
130
131 // Address: 0x02019774
132 static Profile* get(s32 id);
133
134protected:
135 ActorFactory mFactory;
140
141 // Address: 0x101ED8DC
142 static sead::SafeArray<
143 Profile*,
146};
147static_assert(sizeof(Profile) == 0x14, "Profile size mismatch");
Base interface class for all actors in the game. Lifecycle is handled by ActorMgr.
Definition ActorBase.h:18
Definition ModelResource.h:13
Definition Profile.h:50
void loadResource(sead::Heap *heap)
ActorFactory mFactory
Definition Profile.h:135
s32 mID
Definition Profile.h:136
void unloadResource(sead::Heap *heap)
friend Flag & operator|=(Flag &lhs, const Flag &rhs)
Definition Profile.h:72
Flag
Definition Profile.h:53
@ cFlag_Unk12
Definition Profile.h:60
@ cFlag_Unk7
Definition Profile.h:57
@ cFlag_None
Definition Profile.h:62
@ cFlag_DrawCullCheck
Definition Profile.h:54
@ cFlag_Unk3
Definition Profile.h:55
@ cFlag_Unk4
Definition Profile.h:56
@ cFlag_NoLoopPosX
Definition Profile.h:59
@ cFlag_Unk8
Definition Profile.h:58
s32 getID() const
Definition Profile.h:104
static Profile * get(s32 id)
ActorFactory getActorFactory() const
Definition Profile.h:98
friend Flag & operator&=(Flag &lhs, const Flag &rhs)
Definition Profile.h:83
friend Flag operator|(const Flag &lhs, const Flag &rhs)
Definition Profile.h:67
ModelResource * getResource(u32 index) const
const ActorCreateInfo * mActorCreateInfo
Definition Profile.h:137
bool isResLoaded() const
Definition Profile.h:114
Profile(ActorFactory factory, s32 id, const sead::SafeString &name, const ActorCreateInfo *create_info=nullptr, Flag flag=cFlag_None)
Flag getFlag() const
Definition Profile.h:119
friend Flag operator&(const Flag &lhs, const Flag &rhs)
Definition Profile.h:78
bool mIsResLoaded
Definition Profile.h:138
Flag mFlag
Definition Profile.h:139
static sead::SafeArray< Profile *, ProfileInfo::cProfileID_Max > sProfileList
Definition Profile.h:145
friend Flag operator~(const Flag &val)
Definition Profile.h:89
const ActorCreateInfo & getActorCreateInfo() const
Definition Profile.h:109
Definition Profile.h:11
u16 down
Definition Profile.h:32
u16 flag
Definition Profile.h:36
Flag
Definition Profile.h:13
@ cFlag_IgnoreSpawnRange
Definition Profile.h:14
@ cFlag_Grouped
Definition Profile.h:16
@ cFlag_MapObj
Definition Profile.h:15
@ cFlag_Unknown
Definition Profile.h:17
@ cFlag_Unknown2
Definition Profile.h:18
s32 half_size_y
Definition Profile.h:28
s32 offset_x
Definition Profile.h:21
u16 up
Definition Profile.h:31
s32 offset_y
Definition Profile.h:22
u16 left
Definition Profile.h:33
s32 half_size_x
Definition Profile.h:27
static const ActorCreateInfo cDefault
Definition Profile.h:39
u16 right
Definition Profile.h:34
Definition ActorCreateParam.h:108