diff options
author | GriffinR <griffin.g.richards@gmail.com> | 2020-01-14 21:27:45 -0500 |
---|---|---|
committer | GriffinR <griffin.g.richards@gmail.com> | 2020-01-15 16:00:45 -0500 |
commit | 04d176334ad590d3462e3c1eb75c1313705ae183 (patch) | |
tree | 865ca807901bf57e63523b19f2d535c7ef391f89 /src/quest_log_player.c | |
parent | 2f81b4a204d051aeb88580dc63381011ec49fcbb (diff) |
Document some Quest Log
Diffstat (limited to 'src/quest_log_player.c')
-rw-r--r-- | src/quest_log_player.c | 196 |
1 files changed, 196 insertions, 0 deletions
diff --git a/src/quest_log_player.c b/src/quest_log_player.c new file mode 100644 index 000000000..7665a8a92 --- /dev/null +++ b/src/quest_log_player.c @@ -0,0 +1,196 @@ +#include "global.h" +#include "bike.h" +#include "script.h" +#include "task.h" +#include "field_player_avatar.h" +#include "event_object_movement.h" +#include "field_effect.h" +#include "field_effect_helpers.h" +#include "quest_log.h" + +static void sub_81504A8(void); +static void sub_81504E8(void); +static void sub_8150530(void); +static void sub_81505C4(u8 taskId); +static void sub_8150708(void); +static void sub_815077C(void); +static void sub_8150794(u8 taskId); +static void sub_81507CC(void); +static void sub_81507D8(void); +static void sub_81507E4(void); +static void sub_81507F0(void); +static void sub_81507BC(struct ObjectEvent *a0, u8 a1); + +static void (*const gUnknown_8471EDC[])(void) = { + sub_81504A8, + sub_81504E8, + sub_8150530, + sub_8150708, + sub_81507CC, + sub_81507D8, + sub_81507E4, + sub_81507F0, + sub_815077C +}; + +void sub_8150454(u8 a0) +{ + if (a0 < ARRAY_COUNT(gUnknown_8471EDC)) + gUnknown_8471EDC[a0](); +} + +bool8 sub_8150474(u8 a0) +{ + if (gUnknown_3005E88 == 2) + { + sub_8112720(a0); + return TRUE; + } + return FALSE; +} + +void sub_8150498(u8 a0) +{ + return sub_8150454(a0); +} + +static void sub_81504A8(void) +{ + struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; + sub_81507BC(objectEvent, sub_805C808(0)); + ObjectEventTurn(objectEvent, objectEvent->placeholder18); + SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_ON_FOOT); +} + +static void sub_81504E8(void) +{ + struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; + sub_81507BC(objectEvent, sub_805C808(1)); + ObjectEventTurn(objectEvent, objectEvent->placeholder18); + SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_MACH_BIKE); + sub_80BD620(0, 0); +} + +static void sub_8150530(void) +{ + struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; + struct Sprite *sprite = &gSprites[objectEvent->spriteId]; + + if (gUnknown_3005E88 == 1 || gUnknown_3005E88 == 3) + { + u8 taskId; + ScriptContext2_Enable(); + gPlayerAvatar.unk6 = 1; + taskId = CreateTask(sub_81505C4, 0xFF); + gTasks[taskId].data[0] = 0; + } + else + { + sub_81507BC(objectEvent, sub_805C808(4)); + StartSpriteAnim(sprite, sub_80634F0(objectEvent->facingDirection)); + } +} + +static void sub_81505C4(u8 taskId) +{ + struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; + struct Sprite *sprite = &gSprites[objectEvent->spriteId]; + + switch (gTasks[taskId].data[0]) + { + case 0: + ObjectEventClearAnimIfSpecialAnimActive(objectEvent); + objectEvent->mapobj_bit_11 = TRUE; + sub_81507BC(objectEvent, sub_805C808(4)); + StartSpriteAnim(sprite, sub_80634F0(objectEvent->facingDirection)); + gTasks[taskId].data[0]++; + gTasks[taskId].data[1] = 0; + break; + case 1: + sub_805D9C4(sprite); + if (gTasks[taskId].data[1] < 60) + gTasks[taskId].data[1]++; + else + gTasks[taskId].data[0]++; + break; + case 2: + StartSpriteAnim(sprite, sub_8063500(GetPlayerFacingDirection())); + gTasks[taskId].data[0]++; + break; + case 3: + sub_805D9C4(sprite); + if (sprite->animEnded) + { + if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)) + sub_81507BC(objectEvent, sub_805C808(0)); + else + sub_81507BC(objectEvent, sub_805C808(2)); + ObjectEventTurn(objectEvent, objectEvent->placeholder18); + sprite->pos2.x = 0; + sprite->pos2.y = 0; + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + } +} + +static void sub_8150708(void) +{ + struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; + u8 fieldEffectId; + + if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)) + { + sub_81507BC(objectEvent, sub_805C808(2)); + ObjectEventTurn(objectEvent, objectEvent->placeholder18); + SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_SURFING); + gFieldEffectArguments[0] = objectEvent->coords2.x; + gFieldEffectArguments[1] = objectEvent->coords2.y; + gFieldEffectArguments[2] = gPlayerAvatar.objectEventId; + fieldEffectId = FieldEffectStart(FLDEFF_SURF_BLOB); + objectEvent->mapobj_unk_1A = fieldEffectId; + sub_80DC44C(fieldEffectId, 1); + } +} + +static void sub_815077C(void) +{ + FieldEffectStart(FLDEFF_UNK_41); + CreateTask(sub_8150794, 0x00); +} + +static void sub_8150794(u8 taskId) +{ + if (!FieldEffectActiveListContains(0x41)) + { + UnfreezeObjectEvents(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } +} + +static void sub_81507BC(struct ObjectEvent * a0, u8 a1) +{ + ObjectEventSetGraphicsId(a0, a1); +} + +static void sub_81507CC(void) +{ + sub_805D154(1); +} + +static void sub_81507D8(void) +{ + sub_805D154(2); +} + +static void sub_81507E4(void) +{ + sub_805D154(3); +} + +static void sub_81507F0(void) +{ + sub_805D154(4); +} |