diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-02-27 16:35:06 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-02-27 16:35:06 -0500 |
commit | 9c03c850a2bfbedc3ccadf8b0f1a895607c113ae (patch) | |
tree | 73b7e36378fcc1f54e745d36ad9f9242f1b84435 /src | |
parent | 701d4635b4880fd9055e0b0f3e5032b5d0353ab1 (diff) |
Fly field effect
Diffstat (limited to 'src')
-rw-r--r-- | src/field_effect.c | 84 | ||||
-rw-r--r-- | src/party_menu.c | 11 |
2 files changed, 86 insertions, 9 deletions
diff --git a/src/field_effect.c b/src/field_effect.c index b7498d316..9a30088c1 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -2,11 +2,15 @@ #include "gflib.h" #include "data.h" #include "decompress.h" +#include "event_object_movement.h" #include "field_effect.h" #include "field_effect_scripts.h" +#include "field_fadetransition.h" #include "field_weather.h" #include "overworld.h" +#include "party_menu.h" #include "quest_log.h" +#include "script.h" #include "task.h" #include "trainer_pokemon_sprites.h" #include "constants/songs.h" @@ -982,3 +986,83 @@ void SpriteCB_HallOfFameMonitor(struct Sprite * sprite) if (sprite->animEnded) FieldEffectFreeGraphicsResources(sprite); } + +void FieldCallback_Fly(void); +void Task_FlyOut(u8 taskId); +void FieldCallback_FlyArrive(void); +void Task_FlyIn(u8 taskId); + +void ReturnToFieldFromFlyMapSelect(void) +{ + SetMainCallback2(CB2_ReturnToField); + gFieldCallback = FieldCallback_Fly; +} + +void FieldCallback_Fly(void) +{ + FadeInFromBlack(); + CreateTask(Task_FlyOut, 0); + ScriptContext2_Enable(); + FreezeObjectEvents(); + gFieldCallback = NULL; +} + +void Task_FlyOut(u8 taskId) +{ + struct Task * task; + task = &gTasks[taskId]; + if (task->data[0] == 0) + { + if (!IsWeatherNotFadingIn()) + return; + gFieldEffectArguments[0] = GetCursorSelectionMonId(); + if ((int)gFieldEffectArguments[0] >= PARTY_SIZE) + gFieldEffectArguments[0] = 0; + FieldEffectStart(FLDEFF_USE_FLY); + task->data[0]++; + } + if (!FieldEffectActiveListContains(FLDEFF_USE_FLY)) + { + Overworld_ResetStateAfterFly(); + WarpIntoMap(); + SetMainCallback2(CB2_LoadMap); + gFieldCallback = FieldCallback_FlyArrive; + DestroyTask(taskId); + } +} + +void FieldCallback_FlyArrive(void) +{ + Overworld_PlaySpecialMapMusic(); + FadeInFromBlack(); + CreateTask(Task_FlyIn, 0); + gObjectEvents[gPlayerAvatar.objectEventId].invisible = TRUE; + if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) + { + ObjectEventTurn(&gObjectEvents[gPlayerAvatar.objectEventId], DIR_WEST); + } + ScriptContext2_Enable(); + FreezeObjectEvents(); + gFieldCallback = NULL; +} + +void Task_FlyIn(u8 taskId) +{ + struct Task *task; + task = &gTasks[taskId]; + if (task->data[0] == 0) + { + if (gPaletteFade.active) + { + return; + } + FieldEffectStart(FLDEFF_FLY_IN); + task->data[0]++; + } + if (!FieldEffectActiveListContains(FLDEFF_FLY_IN)) + { + ScriptContext2_Disable(); + UnfreezeObjectEvents(); + DestroyTask(taskId); + } +} diff --git a/src/party_menu.c b/src/party_menu.c index d28abea8c..626ce70f8 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -1,5 +1,5 @@ #include "global.h" -#include "malloc.h" +#include "gflib.h" #include "battle.h" #include "battle_anim.h" #include "battle_controllers.h" @@ -7,7 +7,6 @@ #include "battle_interface.h" #include "battle_tower.h" #include "berry_pouch.h" -#include "bg.h" #include "data.h" #include "decompress.h" #include "easy_chat.h" @@ -15,11 +14,10 @@ #include "evolution_scene.h" #include "field_effect.h" #include "field_player_avatar.h" -#include "field_screen_effect.h" +#include "field_fadetransition.h" #include "field_weather.h" #include "fieldmap.h" #include "fldeff.h" -#include "gpu_regs.h" #include "graphics.h" #include "help_system.h" #include "item.h" @@ -36,7 +34,6 @@ #include "new_menu_helpers.h" #include "metatile_behavior.h" #include "overworld.h" -#include "palette.h" #include "party_menu.h" #include "player_pc.h" #include "pokedex.h" @@ -50,19 +47,15 @@ #include "reshow_battle_screen.h" #include "scanline_effect.h" #include "script.h" -#include "sound.h" -#include "sprite.h" #include "start_menu.h" #include "string_util.h" #include "strings.h" #include "task.h" #include "teachy_tv.h" -#include "text.h" #include "text_window.h" #include "tm_case.h" #include "trade.h" #include "union_room.h" -#include "window.h" #include "constants/battle.h" #include "constants/easy_chat.h" #include "constants/field_effects.h" |