sead
Loading...
Searching...
No Matches
seadTaskBase.h
Go to the documentation of this file.
1#ifndef SEAD_TASKBASE_H_
2#define SEAD_TASKBASE_H_
3
4#include <container/seadTList.h>
5#include <container/seadTreeNode.h>
6#include <framework/seadHeapPolicies.h>
7#include <framework/seadTaskID.h>
8#include <heap/seadDisposer.h>
9#include <prim/seadBitFlag.h>
10#include <prim/seadDelegateEventSlot.h>
11#include <prim/seadNamable.h>
12#include <prim/seadRuntimeTypeInfo.h>
13
14namespace sead {
15
16class FaderTaskBase;
17class Framework;
18class MethodTreeMgr;
19class MethodTreeNode;
20struct TaskConstructArg;
21class TaskEvent;
22class TaskMgr;
23class TaskParameter;
24
25class TaskBase : public TTreeNode<TaskBase*>, public IDisposer, public INamable
26{
28
29public:
31 typedef TList<TaskBase*> List;
32
33public:
34 enum State
35 {
39 cSleep = 3,
41 cDying = 5,
44 };
45
46 enum Tag
47 {
49 cApp = 1
50 };
51
71#ifdef cafe
72 static_assert(sizeof(CreateArg) == 0x80, "sead::TaskBase::CreateArg size mismatch");
73#endif // cafe
74
75 struct TakeoverArg;
76 struct PushArg;
77
78public:
80 TaskBase(const TaskConstructArg& arg, const char* name);
81
82 virtual void pauseCalc(bool b) = 0;
83 virtual void pauseDraw(bool b) = 0;
84 virtual void pauseCalcRec(bool b) = 0;
85 virtual void pauseDrawRec(bool b) = 0;
86
87 virtual void pauseCalcChild(bool b)
88 {
89 }
90
91 virtual void pauseDrawChild(bool b)
92 {
93 }
94
95 virtual ~TaskBase();
96
97 virtual void prepare();
98 virtual void enterCommon();
99 virtual void enter();
100 virtual void exit();
101 virtual void onEvent(const TaskEvent&);
102 virtual void attachCalcImpl() = 0;
103 virtual void attachDrawImpl() = 0;
104 virtual void detachCalcImpl() = 0;
105 virtual void detachDrawImpl() = 0;
107 virtual MethodTreeNode* getMethodTreeNode(s32 method_type) = 0;
108
109 virtual void onDestroy()
110 {
112 }
113
115
117 {
119 }
120
122 {
124 }
125
127 {
130 }
131
134
135 template <typename T>
136 T* getParameter() const
137 {
138 T* param = DynamicCast<T>(mParameter);
139 return param;
140 }
141
143
145 {
146 if (parent() != nullptr)
147 return parent()->val();
148 else
149 return nullptr;
150 }
151
153 {
154 return mHeapArray.getPrimaryHeap();
155 }
156
158 {
159 return mTaskMgr;
160 }
161
162 Tag getTag() const
163 {
164 return mTag;
165 }
166
167protected:
176
177 friend class TaskMgr;
178};
179#ifdef cafe
180static_assert(sizeof(TaskBase) == 0x74, "sead::TaskBase size mismatch");
181#endif // cafe
182
183} // namespace sead
184
185#endif // SEAD_TASKBASE_H_
Definition seadFramework.h:24
Definition seadHeapPolicies.h:10
Definition seadHeapPolicies.h:75
Definition seadHeap.h:23
Definition seadDisposer.h:12
Definition seadNamable.h:9
Definition seadMethodTreeMgr.h:13
Definition seadMethodTree.h:17
Definition seadTList.h:13
Definition seadTList.h:49
Definition seadTaskBase.h:26
MethodTreeMgr * getMethodTreeMgr() const
Heap * getHeap()
Definition seadTaskBase.h:152
T * getParameter() const
Definition seadTaskBase.h:136
BitFlag32 mInternalFlag
Definition seadTaskBase.h:169
Tag getTag() const
Definition seadTaskBase.h:162
TaskMgr * mTaskMgr
Definition seadTaskBase.h:172
virtual void onDestroy()
Definition seadTaskBase.h:109
TaskMgr * getTaskMgr() const
Definition seadTaskBase.h:157
HeapArray mHeapArray
Definition seadTaskBase.h:171
virtual void enterCommon()
TaskBase(const TaskConstructArg &arg)
virtual void pauseDraw(bool b)=0
State
Definition seadTaskBase.h:35
@ cDestroyable
Definition seadTaskBase.h:42
@ cDying
Definition seadTaskBase.h:41
@ cPrepareDone
Definition seadTaskBase.h:38
@ cPrepare
Definition seadTaskBase.h:37
@ cRunning
Definition seadTaskBase.h:40
@ cCreated
Definition seadTaskBase.h:36
@ cSleep
Definition seadTaskBase.h:39
@ cDead
Definition seadTaskBase.h:43
virtual void onEvent(const TaskEvent &)
TaskParameter * mParameter
Definition seadTaskBase.h:168
void detachDraw()
Definition seadTaskBase.h:121
virtual ~TaskBase()
virtual void pauseCalcRec(bool b)=0
virtual void exit()
void detachCalcDraw()
Definition seadTaskBase.h:126
TaskBase(const TaskConstructArg &arg, const char *name)
virtual void attachDrawImpl()=0
virtual const RuntimeTypeInfo::Interface * getCorrespondingMethodTreeMgrTypeInfo() const =0
Tag mTag
Definition seadTaskBase.h:174
virtual void pauseCalcChild(bool b)
Definition seadTaskBase.h:87
virtual void pauseDrawChild(bool b)
Definition seadTaskBase.h:91
virtual void attachCalcImpl()=0
virtual void detachCalcImpl()=0
virtual void detachDrawImpl()=0
ListNode mTaskListNode
Definition seadTaskBase.h:170
virtual void prepare()
TaskClassID mClassID
Definition seadTaskBase.h:175
virtual void pauseDrawRec(bool b)=0
virtual MethodTreeNode * getMethodTreeNode(s32 method_type)=0
void adjustHeapAll()
TListNode< TaskBase * > ListNode
Definition seadTaskBase.h:30
virtual void enter()
State mState
Definition seadTaskBase.h:173
void detachCalc()
Definition seadTaskBase.h:116
Tag
Definition seadTaskBase.h:47
@ cSystem
Definition seadTaskBase.h:48
@ cApp
Definition seadTaskBase.h:49
TaskBase * getParentTask() const
Definition seadTaskBase.h:144
virtual void pauseCalc(bool b)=0
Framework * getFramework() const
void doneDestroy()
TList< TaskBase * > List
Definition seadTaskBase.h:31
Definition seadTaskID.h:40
Definition seadTaskMgr.h:19
Definition seadTaskParameter.h:9
Definition seadTaskID.h:83
Definition seadRuntimeTypeInfo.h:6
Definition seadAssert.h:44
BitFlag< u32 > BitFlag32
Definition seadBitFlag.h:125
#define SEAD_RTTI_BASE(CLASS)
Definition seadRuntimeTypeInfo.h:75
Definition seadRuntimeTypeInfo.h:9
Definition seadTaskBase.h:53
TaskBase * src_task
Definition seadTaskBase.h:64
void(* SingletonFunc)(TaskBase *)
Definition seadTaskBase.h:54
SingletonFunc instance_cb
Definition seadTaskBase.h:69
FaderTaskBase * fader
Definition seadTaskBase.h:63
Tag tag
Definition seadTaskBase.h:68
TaskBase ** created_task
Definition seadTaskBase.h:65
DelegateEvent< TaskBase * >::Slot * create_callback
Definition seadTaskBase.h:66
TaskBase * parent
Definition seadTaskBase.h:61
TaskClassID factory
Definition seadTaskBase.h:59
CreateArg(const TaskClassID &class_id)
TaskParameter * parameter
Definition seadTaskBase.h:62
HeapPolicies heap_policies
Definition seadTaskBase.h:60
TaskUserID user_id
Definition seadTaskBase.h:67
Definition seadTaskID.h:14