diff options
Diffstat (limited to 'src/field/script_movement.c')
-rw-r--r-- | src/field/script_movement.c | 228 |
1 files changed, 0 insertions, 228 deletions
diff --git a/src/field/script_movement.c b/src/field/script_movement.c deleted file mode 100644 index c7ce55171..000000000 --- a/src/field/script_movement.c +++ /dev/null @@ -1,228 +0,0 @@ -#include "global.h" -#include "script_movement.h" -#include "field_map_obj.h" -#include "field_map_obj_helpers.h" -#include "task.h" -#include "util.h" - -static EWRAM_DATA const u8 *gUnknown_020384F8[16] = {0}; - -static void sub_80A2198(u8); -static u8 sub_80A21E0(void); -static bool8 sub_80A21F4(u8, u8, const u8 *); -static u8 sub_80A2260(u8, u8); -static bool8 sub_80A2370(u8, u8); -static void sub_80A23C8(u8, u8, u8, const u8 *); -static void UnfreezeObjects(u8); -static void Task_80A244C(u8); -static void sub_80A2490(u8, u8, u8, const u8 *); - -bool8 ScriptMovement_StartObjectMovementScript(u8 localId, u8 mapNum, u8 mapGroup, const u8 *movementScript) -{ - u8 mapObjId; - - if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjId)) - return TRUE; - if (!FuncIsActiveTask(Task_80A244C)) - sub_80A2198(50); - return sub_80A21F4(sub_80A21E0(), mapObjId, movementScript); -} - -bool8 ScriptMovement_IsObjectMovementFinished(u8 localId, u8 mapNum, u8 mapBank) -{ - u8 mapObjId; - u8 r4; - u8 r1; - - if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapBank, &mapObjId)) - return TRUE; - r4 = sub_80A21E0(); - r1 = sub_80A2260(r4, mapObjId); - if (r1 == 16) - return TRUE; - return sub_80A2370(r4, r1); -} - -void sub_80A2178(void) -{ - u8 taskId; - - taskId = sub_80A21E0(); - if (taskId != 0xFF) - { - UnfreezeObjects(taskId); - DestroyTask(taskId); - } -} - -static void sub_80A2198(u8 priority) -{ - u8 taskId; - u8 i; - - taskId = CreateTask(Task_80A244C, priority); - for (i = 1; i < 16; i++) - gTasks[taskId].data[i] = 0xFFFF; -} - -static u8 sub_80A21E0(void) -{ - return FindTaskIdByFunc(Task_80A244C); -} - -static bool8 sub_80A21F4(u8 taskId, u8 mapObjId, const u8 *movementScript) -{ - u8 r4; - - r4 = sub_80A2260(taskId, mapObjId); - if (r4 != 16) - { - if (sub_80A2370(taskId, r4) == 0) - { - return TRUE; - } - else - { - sub_80A23C8(taskId, r4, mapObjId, movementScript); - return FALSE; - } - } - r4 = sub_80A2260(taskId, 0xFF); - if (r4 == 16) - { - return TRUE; - } - else - { - sub_80A23C8(taskId, r4, mapObjId, movementScript); - return FALSE; - } -} - -static u8 sub_80A2260(u8 taskId, u8 b) -{ - u8 *ptr; - u8 i; - - ptr = (u8 *)&gTasks[taskId].data[1]; - for (i = 0; i < 16; i++, ptr++) - { - if (*ptr == b) - return i; - } - return 16; -} - -static void sub_80A229C(u8 taskId, u8 b, u8 **c) -{ - u8 i; - - *c = (u8 *)&gTasks[taskId].data[1]; - for (i = 0; i < b; i++, (*c)++) - ; -} - -static void sub_80A22D0(u8 taskId, u8 b, u8 c) -{ - u8 *ptr; - - sub_80A229C(taskId, b, &ptr); - *ptr = c; //what is this supposed to do? -} - -static void sub_80A22F4(u8 taskId, u8 b, u8 *c) -{ - u8 *ptr; - - sub_80A229C(taskId, b, &ptr); - *c = *ptr; -} - -static void sub_80A2318(u8 a, u8 b) -{ - u16 var = ~gBitTable[b]; - - gTasks[a].data[0] &= var; -} - -static void sub_80A2348(u8 taskId, u8 b) -{ - gTasks[taskId].data[0] |= gBitTable[b]; -} - -static bool8 sub_80A2370(u8 taskId, u8 b) -{ - u16 var = (u16)gTasks[taskId].data[0] & gBitTable[b]; - - if (var != 0) - return TRUE; - else - return FALSE; -} - -static void npc_obj_offscreen_culling_and_flag_update(u8 a, const u8 *movementScript) -{ - gUnknown_020384F8[a] = movementScript; -} - -static const u8 *sub_80A23B8(u8 a) -{ - return gUnknown_020384F8[a]; -} - -static void sub_80A23C8(u8 taskId, u8 b, u8 mapObjId, const u8 *movementScript) -{ - sub_80A2318(taskId, b); - npc_obj_offscreen_culling_and_flag_update(b, movementScript); - sub_80A22D0(taskId, b, mapObjId); -} - -static void UnfreezeObjects(u8 taskId) -{ - u8 *pMapObjId; - u8 i; - - pMapObjId = (u8 *)&gTasks[taskId].data[1]; - for (i = 0; i < 16; i++, pMapObjId++) - { - if (*pMapObjId != 0xFF) - UnfreezeMapObject(&gMapObjects[*pMapObjId]); - } -} - -static void Task_80A244C(u8 taskId) -{ - u8 i; - u8 var; - - for (i = 0; i < 16; i++) - { - sub_80A22F4(taskId, i, &var); - if (var != 0xFF) - sub_80A2490(taskId, i, var, sub_80A23B8(i)); - } -} - -static void sub_80A2490(u8 taskId, u8 b, u8 mapObjId, const u8 *d) -{ - u8 var; - - if (FieldObjectIsSpecialAnimActive(&gMapObjects[mapObjId]) - && !FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId])) - return; - - var = *d; - if (var == 0xFE) - { - sub_80A2348(taskId, b); - FreezeMapObject(&gMapObjects[mapObjId]); - } - else - { - if (!FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], var)) - { - d++; - npc_obj_offscreen_culling_and_flag_update(b, d); - } - } -} |