summaryrefslogtreecommitdiff
path: root/include/task.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/task.h')
-rw-r--r--include/task.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/include/task.h b/include/task.h
new file mode 100644
index 000000000..a199ba128
--- /dev/null
+++ b/include/task.h
@@ -0,0 +1,33 @@
+#ifndef GUARD_TASK_H
+#define GUARD_TASK_H
+
+#define NUM_TASKS 16
+
+typedef void (*TaskFunc)(u8 taskId);
+
+struct Task
+{
+ TaskFunc func;
+ bool8 isActive;
+ u8 prev;
+ u8 next;
+ u8 priority;
+ s16 data[16];
+};
+
+extern struct Task gTasks[];
+
+void ResetTasks(void);
+u8 CreateTask(TaskFunc func, u8 priority);
+void DestroyTask(u8 taskId);
+void RunTasks(void);
+void TaskDummy(u8 taskId);
+void SetTaskFuncWithFollowupFunc(u8 taskId, TaskFunc func, TaskFunc followupFunc);
+void SwitchTaskToFollowupFunc(u8 taskId);
+bool8 FuncIsActiveTask(TaskFunc func);
+u8 FindTaskIdByFunc(TaskFunc func);
+u8 GetTaskCount(void);
+void SetWordTaskArg(u8 taskId, u8 dataElem, u32 value);
+u32 GetWordTaskArg(u8 taskId, u8 dataElem);
+
+#endif // GUARD_TASK_H