diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-06-22 22:59:22 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-06-22 22:59:22 -0400 |
commit | 29ed9d7aee11527bbe971dd1daa099e04d7e5bc9 (patch) | |
tree | 83482f67d7984b2cf1e4a22442a6b0234a1e9361 /src/field_tasks.c | |
parent | 9e14c471e6176d3b9eded4815f917b4a2e06d5cc (diff) |
Up through ResetFieldTaskArgs
Diffstat (limited to 'src/field_tasks.c')
-rwxr-xr-x[-rw-r--r--] | src/field_tasks.c | 65 |
1 files changed, 64 insertions, 1 deletions
diff --git a/src/field_tasks.c b/src/field_tasks.c index 0b6cc2de4..d52bafe1c 100644..100755 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -36,7 +36,7 @@ void Task_RunPerStepCallback(u8 taskId) gUnknown_08376364[idx](taskId); } -void RunTimeBasedEvents(s16 *taskData) +static void RunTimeBasedEvents(s16 *taskData) { switch (*taskData) { @@ -65,3 +65,66 @@ void Task_RunTimeBasedEvents(u8 taskId) sub_80540D0(taskData + 1, taskData + 2); } } + +void Task_MuddySlope(u8); + +void SetUpFieldTasks(void) +{ + if (!FuncIsActiveTask(Task_RunPerStepCallback)) + { + u8 taskId = CreateTask(Task_RunPerStepCallback, 0x50); + gTasks[taskId].data[0] = 0; + } + if (!FuncIsActiveTask(Task_MuddySlope)) + { + CreateTask(Task_MuddySlope, 0x50); + } + if (!FuncIsActiveTask(Task_RunTimeBasedEvents)) + { + CreateTask(Task_RunTimeBasedEvents, 0x50); + } +} + +void ActivatePerStepCallback(u8 callback) +{ + s16 *dataPointer; + s16 *dataStart; + s16 zero; + u8 taskId = FindTaskIdByFunc(Task_RunPerStepCallback); + if (taskId != 0xff) + { + dataStart = gTasks[taskId].data; + zero = 0; + dataPointer = &dataStart[15]; + do + { + *dataPointer-- = zero; + } while ((int)dataPointer >= (int)dataStart); + if (callback >= ARRAY_COUNT(gUnknown_08376364)) + { + *dataStart = 0; + } + else + { + *dataStart = callback; + } + } +} + +void ResetFieldTasksArgs(void) +{ + u8 taskId; + s16 *taskData; + taskId = FindTaskIdByFunc(Task_RunPerStepCallback); + if (taskId != 0xff) + { + taskData = gTasks[taskId].data; + } + taskId = FindTaskIdByFunc(Task_RunTimeBasedEvents); + if (taskId != 0xff) + { + taskData = gTasks[taskId].data; + taskData[1] = 0; + taskData[2] = 0; + } +} |