diff options
Diffstat (limited to 'src/field/choose_party.c')
-rw-r--r-- | src/field/choose_party.c | 939 |
1 files changed, 0 insertions, 939 deletions
diff --git a/src/field/choose_party.c b/src/field/choose_party.c deleted file mode 100644 index 18d26f007..000000000 --- a/src/field/choose_party.c +++ /dev/null @@ -1,939 +0,0 @@ -#include "global.h" -#include "decoration.h" -#include "field_fadetransition.h" -#include "main.h" -#include "menu.h" -#include "name_string_util.h" -#include "palette.h" -#include "party_menu.h" -#include "pokemon_menu.h" -#include "pokemon.h" -#include "pokemon_summary_screen.h" -#include "overworld.h" -#include "script.h" -#include "constants/songs.h" -#include "sound.h" -#include "strings.h" -#include "string_util.h" -#include "task.h" -#include "text.h" -#include "ewram.h" - -extern u8 gPlayerPartyCount; -extern u8 gLastFieldPokeMenuOpened; -extern u8 gUnknown_020384F0; -extern struct UnknownPokemonStruct2 gUnknown_02023A00[]; -extern u8 gUnknown_0202E8F6; -extern struct Pokemon gUnknown_030042FC[]; -extern const u16 gBattleTowerBannedSpecies[]; - -EWRAM_DATA u8 gSelectedOrderFromParty[3] = {0}; - -extern u8 sub_806BD58(u8, u8); -extern void PartyMenuPrintMonsLevelOrStatus(void); -extern void sub_806BC3C(u8, u8); -extern u8 GetMonStatusAndPokerus(); -extern void PartyMenuPrintHP(); -extern bool8 sub_80F9344(void); - -static void ClearPartySelection(void); -static bool8 IsMonAllowedInBattleTower(struct Pokemon *); -static void sub_812238C(u8); -static void sub_8122450(u8); -static void sub_81224A8(u8); -static void sub_8122728(u8); -static void BattleTowerEntryMenuCallback_Exit(u8); -static void sub_81228E8(u8); -static void sub_8122950(u8); -static void sub_81229B8(void); -static void sub_8122AB8(u8); -static void sub_8122B10(u8); -static void sub_8122C18(u8); -static void Task_DaycareStorageMenu8122EAC(u8); -void sub_8123138(u8); -static void sub_8123170(u8); -static void sub_81231AC(void); - -void sub_8121E10(void) -{ - ClearPartySelection(); - ewram1B000.unk263 = 0; - OpenPartyMenu(PARTY_MENU_TYPE_BATTLE_TOWER, 0); -} - -void sub_8121E34(void) -{ - ClearPartySelection(); - ewram1B000.unk263 = 1; - OpenPartyMenu(PARTY_MENU_TYPE_BATTLE_TOWER, 0); -} - -static void ClearPartySelection(void) -{ - u8 i; - - for (i = 0; i < 3; i++) - gSelectedOrderFromParty[i] = 0; -} - -bool8 SetupBattleTowerPartyMenu(void) -{ - u8 i; - - switch (ewram1B000_alt.setupState) - { - case 0: - if (ewram1B000_alt.monIndex < gPlayerPartyCount) - { - TryCreatePartyMenuMonIcon(ewram1B000_alt.menuHandlerTaskId, ewram1B000_alt.monIndex, &gPlayerParty[ewram1B000_alt.monIndex]); - ewram1B000_alt.monIndex++; - } - else - { - ewram1B000_alt.monIndex = 0; - ewram1B000_alt.setupState++; - } - break; - case 1: - LoadHeldItemIconGraphics(); - ewram1B000_alt.setupState++; - break; - case 2: - CreateHeldItemIcons_806DC34(ewram1B000_alt.menuHandlerTaskId); - ewram1B000_alt.setupState++; - break; - case 3: - if (sub_806BD58(ewram1B000_alt.menuHandlerTaskId, ewram1B000_alt.monIndex) == 1) - { - ewram1B000_alt.monIndex = 0; - ewram1B000_alt.setupState++; - } - else - { - ewram1B000_alt.monIndex++; - } - break; - case 4: - PartyMenuPrintMonsLevelOrStatus(); - ewram1B000_alt.setupState++; - break; - case 5: - PrintPartyMenuMonNicknames(); - ewram1B000_alt.setupState++; - break; - case 6: - for (i = 0; i < gPlayerPartyCount; i++) - { - u8 j; - - for (j = 0; j < 3; j++) - { - if (gSelectedOrderFromParty[j] == i + 1) - { - sub_806BC3C(i, j * 14 + 0x1C); - break; - } - } - if (j == 3) - { - if (IsMonAllowedInBattleTower(&gPlayerParty[i]) == TRUE) - sub_806BC3C(i, 0x70); - else - sub_806BC3C(i, 0x7E); - } - } - ewram1B000_alt.setupState++; - break; - case 7: - if (DrawPartyMonBackground(ewram1B000_alt.monIndex) == 1) - { - ewram1B000_alt.monIndex = 0; - ewram1B000_alt.setupState = 0; - return TRUE; - } - else - { - ewram1B000_alt.monIndex++; - } - break; - } - return FALSE; -} - -static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn) -{ - u16 species; - s32 i = 0; - - if (GetMonData(pkmn, MON_DATA_IS_EGG)) - return FALSE; - - if (ewram1B000.unk263 == 0) - { - if (GetMonData(pkmn, MON_DATA_HP) == 0) - return FALSE; - else - return TRUE; - } - - if ((gSaveBlock2.battleTower.battleTowerLevelType) == 0 - && GetMonData(pkmn, MON_DATA_LEVEL) > 50) - return FALSE; - - // Check if the pkmn is in the ban list - species = GetMonData(pkmn, MON_DATA_SPECIES); - while (gBattleTowerBannedSpecies[i] != 0xFFFF) - { - if (gBattleTowerBannedSpecies[i] == species) - return FALSE; - i++; - } - return TRUE; -} - -static u8 sub_81220C8(void) -{ - u8 i; - - if (ewram1B000.unk263 == 0) - return 0xFF; - if (gSelectedOrderFromParty[2] == 0) - return 0x11; - for (i = 0; i < 2; i++) - { - u8 j; - - ewram1B000.unk282 = GetMonData(&gUnknown_030042FC[gSelectedOrderFromParty[i]], MON_DATA_SPECIES); - ewram1B000.unk280 = GetMonData(&gUnknown_030042FC[gSelectedOrderFromParty[i]], MON_DATA_HELD_ITEM); - for (j = i + 1; j < 3; j++) - { - if (ewram1B000.unk282 == GetMonData(&gUnknown_030042FC[gSelectedOrderFromParty[j]], MON_DATA_SPECIES)) - return 0x12; - if (ewram1B000.unk280 != 0 && ewram1B000.unk280 == GetMonData(&gUnknown_030042FC[gSelectedOrderFromParty[j]], MON_DATA_HELD_ITEM)) - return 0x13; - } - } - return 0xFF; -} - -//------------------------------------------------------------------------------ -// Battle Tower Entry Menu -//------------------------------------------------------------------------------ - -static void BattleTowerEntryMenuCallback_Summary(u8); -static void BattleTowerEntryMenuCallback_Enter(u8); -static void BattleTowerEntryMenuCallback_NoEntry(u8); -static void BattleTowerEntryMenuCallback_Exit(u8); - -static const struct MenuAction2 sBattleTowerEntryMenuItems[] = -{ - {OtherText_Summary, BattleTowerEntryMenuCallback_Summary}, - {OtherText_Enter2, BattleTowerEntryMenuCallback_Enter}, - {OtherText_NoEntry, BattleTowerEntryMenuCallback_NoEntry}, - {gUnknownText_Exit, BattleTowerEntryMenuCallback_Exit}, -}; - -static const u8 gUnknown_084017D0[] = {1, 0, 3}; -static const u8 gUnknown_084017D3[] = {2, 0, 3}; -static const u8 gUnknown_084017D6[] = {0, 3}; - -static const struct PartyPopupMenu sBattleTowerEntryMenu[] = -{ - {ARRAY_COUNT(gUnknown_084017D0), 9, gUnknown_084017D0}, - {ARRAY_COUNT(gUnknown_084017D3), 9, gUnknown_084017D3}, - {ARRAY_COUNT(gUnknown_084017D6), 9, gUnknown_084017D6}, -}; - - -static bool8 IsPartyMemberAlreadySelected(u8 partyMember) -{ - u8 i; - - for (i = 0; i < 3; i++) - { - if (gSelectedOrderFromParty[i] == partyMember) - return TRUE; - } - return FALSE; -} - -static void sub_81221F8(u8 taskId) -{ - PrintPartyMenuPromptText(5, 1); - if (IsMonAllowedInBattleTower(&gPlayerParty[gLastFieldPokeMenuOpened]) == TRUE) - { - if (IsPartyMemberAlreadySelected(gLastFieldPokeMenuOpened + 1) == TRUE) - { - gTasks[taskId].data[4] = 1; - ShowPartyPopupMenu(1, sBattleTowerEntryMenu, sBattleTowerEntryMenuItems, 0); - } - else - { - gTasks[taskId].data[4] = 0; - ShowPartyPopupMenu(0, sBattleTowerEntryMenu, sBattleTowerEntryMenuItems, 0); - } - } - else - { - gTasks[taskId].data[4] = 2; - ShowPartyPopupMenu(2, sBattleTowerEntryMenu, sBattleTowerEntryMenuItems, 0); - } -} - -void HandleBattleTowerPartyMenu(u8 taskId) -{ - if (!gPaletteFade.active) - { - switch (HandleBattleTowerPartyMenuInput(taskId)) - { - case A_BUTTON: - PlaySE(SE_SELECT); - gLastFieldPokeMenuOpened = sub_806CA38(taskId); - if (gLastFieldPokeMenuOpened != 6) - { - GetMonNickname(&gPlayerParty[gLastFieldPokeMenuOpened], gStringVar1); - sub_81221F8(taskId); - gTasks[taskId].func = sub_812238C; - } - else - { - gTasks[taskId].func = sub_81224A8; - } - sub_808B5B4(taskId); - break; - case B_BUTTON: - PlaySE(SE_SELECT); - ClearPartySelection(); - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - gTasks[taskId].func = sub_8122450; - break; - } - } -} - -// Handle input -static void sub_812238C(u8 taskId) -{ - if (!gPaletteFade.active) - { - if (gMain.newAndRepeatedKeys & 0x40) - { - if (Menu_GetCursorPos() != 0) - { - PlaySE(SE_SELECT); - Menu_MoveCursor(-1); - } - return; - } - if (gMain.newAndRepeatedKeys & 0x80) - { - if (Menu_GetCursorPos() != 3) - { - PlaySE(SE_SELECT); - Menu_MoveCursor(1); - } - return; - } - if (gMain.newKeys & A_BUTTON) - { - TaskFunc popupMenuFunc; - - PlaySE(SE_SELECT); - popupMenuFunc = PartyMenuGetPopupMenuFunc( - gTasks[taskId].data[4], - sBattleTowerEntryMenu, - sBattleTowerEntryMenuItems, - Menu_GetCursorPos()); - popupMenuFunc(taskId); - return; - } - if (gMain.newKeys & B_BUTTON) - { - BattleTowerEntryMenuCallback_Exit(taskId); - return; - } - } -} - -// Return from menu? -static void sub_8122450(u8 taskId) -{ - if (!gPaletteFade.active) - { - SetMainCallback2(gMain.savedCallback); - DestroyTask(taskId); - } -} - -// Wait for A or B press -static void sub_8122480(u8 taskId) -{ - if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) - BattleTowerEntryMenuCallback_Exit(taskId); -} - -static void sub_81224A8(u8 taskId) -{ - u8 val = sub_81220C8(); - - if (val != 0xFF) - { - PrintPartyMenuPromptText(val, 0); - gTasks[taskId].func = sub_8122480; - } - else - { - if (gSelectedOrderFromParty[0] != 0) - { - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - gTasks[taskId].func = sub_8122450; - } - else - { - PlaySE(SE_HAZURE); - PrintPartyMenuPromptText(14, 0); - gTasks[taskId].func = sub_8122480; - } - } -} - -// CB2 for menu? -static void sub_8122530(void) -{ - while (1) - { - if (InitPartyMenu() == TRUE) - { - sub_806C994(ewram1B000.menuHandlerTaskId, gUnknown_020384F0); - ChangeBattleTowerPartyMenuSelection(ewram1B000.menuHandlerTaskId, 0); - GetMonNickname(&gPlayerParty[gUnknown_020384F0], gStringVar1); - gLastFieldPokeMenuOpened = gUnknown_020384F0; - sub_81221F8(ewram1B000.menuHandlerTaskId); - SetMainCallback2(CB2_PartyMenuMain); - break; - } - if (sub_80F9344() == 1) - break; - } -} - -static void sub_81225A4(void) -{ - gPaletteFade.bufferTransferDisabled = TRUE; - SetPartyMenuSettings(PARTY_MENU_TYPE_BATTLE_TOWER, 0xFF, sub_812238C, 5); - SetMainCallback2(sub_8122530); -} - -// Wait for fade, then show summary screen -static void sub_81225D4(u8 taskId) -{ - if (!gPaletteFade.active) - { - u8 r4 = gSprites[gTasks[taskId].data[3] >> 8].data[0]; - - DestroyTask(taskId); - ewram1B000.unk262 = 1; - ShowPokemonSummaryScreen(gPlayerParty, r4, gPlayerPartyCount - 1, sub_81225A4, PSS_MODE_NORMAL); - } -} - -// Summary callback? -static void BattleTowerEntryMenuCallback_Summary(u8 taskId) -{ - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - gTasks[taskId].func = sub_81225D4; -} - -static void BattleTowerEntryMenuCallback_Enter(u8 taskId) -{ - u8 i; - - for (i = 0; i < 3; i++) - { - if (gSelectedOrderFromParty[i] == 0) - { - gSelectedOrderFromParty[i] = gLastFieldPokeMenuOpened + 1; - sub_806BC3C(gLastFieldPokeMenuOpened, i * 14 + 0x1C); - if (i == 2) - SelectBattleTowerOKButton(taskId); - BattleTowerEntryMenuCallback_Exit(taskId); - return; - } - } - PlaySE(SE_HAZURE); - Menu_EraseWindowRect(20, 10, 29, 19); - Menu_DestroyCursor(); - sub_806D5A4(); - sub_806E834(gOtherText_NoMoreThreePoke, 1); - gTasks[taskId].func = sub_8122728; -} - -static void sub_8122728(u8 taskId) -{ - if (gUnknown_0202E8F6 == 1) - return; - - if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) - { - Menu_EraseWindowRect(0, 14, 29, 19); - Menu_DestroyCursor(); - BattleTowerEntryMenuCallback_Exit(taskId); - } -} - -static void BattleTowerEntryMenuCallback_NoEntry(u8 taskId) -{ - u8 i; - - for (i = 0; i < 3; i++) - { - if (gSelectedOrderFromParty[i] == gLastFieldPokeMenuOpened + 1) - { - gSelectedOrderFromParty[i] = 0; - switch (i) - { - case 0: - gSelectedOrderFromParty[0] = gSelectedOrderFromParty[1]; - gSelectedOrderFromParty[1] = gSelectedOrderFromParty[2]; - gSelectedOrderFromParty[2] = 0; - break; - case 1: - gSelectedOrderFromParty[1] = gSelectedOrderFromParty[2]; - gSelectedOrderFromParty[2] = 0; - break; - } - break; // exit loop - } - } - sub_806BC3C(gLastFieldPokeMenuOpened, 0x70); - if (gSelectedOrderFromParty[0] != 0) - sub_806BC3C(gSelectedOrderFromParty[0] - 1, 0x1C); - if (gSelectedOrderFromParty[1] != 0) - sub_806BC3C(gSelectedOrderFromParty[1] - 1, 0x2A); - BattleTowerEntryMenuCallback_Exit(taskId); -} - -static void sub_81227FC(u8 taskId) -{ - Menu_EraseWindowRect(20, 10, 29, 19); - Menu_DestroyCursor(); - PrintPartyMenuPromptText(0, 0); - gTasks[taskId].func = HandleBattleTowerPartyMenu; -} - -static void BattleTowerEntryMenuCallback_Exit(u8 taskId) -{ - PlaySE(SE_SELECT); - sub_81227FC(taskId); -} - -bool8 SetupLinkMultiBattlePartyMenu(void) -{ - switch (ewram1B000_alt.setupState) - { - case 0: - sub_81228E8(ewram1B000_alt.menuHandlerTaskId); - ewram1B000_alt.setupState++; - break; - case 1: - LoadHeldItemIconGraphics(); - ewram1B000_alt.setupState++; - break; - case 2: - sub_8122950(ewram1B000_alt.menuHandlerTaskId); - ewram1B000_alt.setupState++; - break; - case 3: - sub_81229B8(); - ewram1B000_alt.setupState++; - break; - case 4: - sub_806B908(); - return TRUE; - } - return FALSE; -} - -static void sub_81228E8(u8 a) -{ - u8 i; - - for (i = 0; i < 3; i++) - { - if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != 0) - CreatePartyMenuMonIcon(a, i, 3, &gPlayerParty[i]); - if (gUnknown_02023A00[i].species != 0) - { - CreateMonIcon_LinkMultiBattle(a, i + 3, 3, &gUnknown_02023A00[i]); - sub_806D50C(a, i + 3); - } - } -} - -static void sub_8122950(u8 a) -{ - u8 i; - - for (i = 0; i < 3; i++) - { - if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != 0) - { - u16 item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); - - CreateHeldItemIcon_806DCD4(a, i, item); - } - if (gUnknown_02023A00[i].species != 0) - CreateHeldItemIcon_806DCD4(a, i + 3, gUnknown_02023A00[i].heldItem); - } -} - -static void sub_81229B8(void) -{ - u8 i; - - for (i = 0; i < 3; i++) - { - if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != 0) - { - u8 status; - - PartyMenuPrintHP(i, 3, &gPlayerParty[i]); - status = GetMonStatusAndPokerus(&gPlayerParty[i]); - if (status != 0 && status != 6) - PartyMenuPutStatusTilemap(i, 3, status - 1); - else - PartyMenuPrintLevel(i, 3, &gPlayerParty[i]); - PartyMenuPrintGenderIcon(i, 3, &gPlayerParty[i]); - PrintPartyMenuMonNickname(i, 3, &gPlayerParty[i]); - PartyMenuDrawHPBar(i, 3, &gPlayerParty[i]); - } - } -} - -void HandleLinkMultiBattlePartyMenu(u8 taskId) -{ - if (!gPaletteFade.active) - { - gTasks[taskId].data[0] = 30; - sub_806D4AC(taskId, gUnknown_02023A00[0].species, 0); - sub_806D4AC(taskId, gUnknown_02023A00[1].species, 1); - sub_806D4AC(taskId, gUnknown_02023A00[2].species, 2); - gTasks[taskId].func = sub_8122AB8; - ewram1B000.unk261 = 1; - } -} - -static void sub_8122AB8(u8 taskId) -{ - sub_806D3B4(taskId, gUnknown_02023A00[1].species, gUnknown_02023A00[2].species); - if (gTasks[taskId].data[0] == 0) - { - gTasks[taskId].func = sub_8122B10; - ewram1B000.unk261 = 2; - PlaySE(SE_W231); - } -} - -static void sub_8122B10(u8 taskId) -{ - u8 i; - - for (i = 0; i < 3; i++) - { - if (gUnknown_02023A00[i].species != 0) - { - u8 r2; - - PartyMenuDoPrintHP(i + 3, 3, gUnknown_02023A00[i].hp, gUnknown_02023A00[i].maxhp); - if (gUnknown_02023A00[i].hp == 0) - r2 = 7; - else - r2 = pokemon_ailments_get_primary(gUnknown_02023A00[i].status); - if (r2 != 0) - PartyMenuPutStatusTilemap(i + 3, 3, r2 - 1); - else - PartyMenuDoPrintLevel(i + 3, 3, gUnknown_02023A00[i].level); - PartyMenuDoPrintGenderIcon(gUnknown_02023A00[i].species, gUnknown_02023A00[i].gender, 3, i + 3, gUnknown_02023A00[i].nickname); - StringCopy(gStringVar1, gUnknown_02023A00[i].nickname); - StringGetEnd10(gStringVar1); - SanitizeNameString(gStringVar1); - PartyMenuDoPrintMonNickname(i + 3, 3, gStringVar1); - PartyMenuDoDrawHPBar(i + 3, 3, gUnknown_02023A00[i].hp, gUnknown_02023A00[i].maxhp); - } - } - gTasks[taskId].func = sub_8122C18; - gTasks[taskId].data[0] = 0; -} - -static void sub_8122C18(u8 taskId) -{ - gTasks[taskId].data[0]++; - if (gTasks[taskId].data[0] == 256) - { - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - gTasks[taskId].func = sub_8122450; - } -} - -// Exactly the same as SetupBattleTowerPartyMenu except for case 6 -bool8 unref_sub_8122C60(void) -{ - switch (ewram1B000_alt.setupState) - { - case 0: - if (ewram1B000_alt.monIndex < gPlayerPartyCount) - { - TryCreatePartyMenuMonIcon(ewram1B000_alt.menuHandlerTaskId, ewram1B000_alt.monIndex, &gPlayerParty[ewram1B000_alt.monIndex]); - ewram1B000_alt.monIndex++; - } - else - { - ewram1B000_alt.monIndex = 0; - ewram1B000_alt.setupState++; - } - break; - case 1: - LoadHeldItemIconGraphics(); - ewram1B000_alt.setupState++; - break; - case 2: - CreateHeldItemIcons_806DC34(ewram1B000_alt.menuHandlerTaskId); - ewram1B000_alt.setupState++; - break; - case 3: - if (sub_806BD58(ewram1B000_alt.menuHandlerTaskId, ewram1B000_alt.monIndex) == 1) - { - ewram1B000_alt.monIndex = 0; - ewram1B000_alt.setupState++; - } - else - { - ewram1B000_alt.monIndex++; - } - break; - case 4: - PartyMenuPrintMonsLevelOrStatus(); - ewram1B000_alt.setupState++; - break; - case 5: - PrintPartyMenuMonNicknames(); - ewram1B000_alt.setupState++; - break; - case 6: - sub_806BCE8(); - ewram1B000_alt.setupState++; - break; - case 7: - if (DrawPartyMonBackground(ewram1B000_alt.monIndex) == 1) - { - ewram1B000_alt.monIndex = 0; - ewram1B000_alt.setupState = 0; - return TRUE; - } - else - { - ewram1B000_alt.monIndex++; - } - break; - } - return FALSE; -} - -//------------------------------------------------------------------------------ -// Daycare Pokemon Storage Menu -//------------------------------------------------------------------------------ - -static void DaycareStorageMenuCallback_Store(u8); -static void DaycareStorageMenuCallback_Summary(u8); -static void DaycareStorageMenuCallback_Exit(u8); - -static const struct MenuAction2 sDaycareStorageMenuItems[] = -{ - {OtherText_Store, DaycareStorageMenuCallback_Store}, - {OtherText_Summary, DaycareStorageMenuCallback_Summary}, - {gUnknownText_Exit, DaycareStorageMenuCallback_Exit}, -}; - -static const u8 gUnknown_08401808[] = {0, 1, 2}; -static const u8 gUnknown_0840180B[] = {1, 2}; - -static const struct PartyPopupMenu sDaycareStorageMenus[] = -{ - {ARRAY_COUNT(gUnknown_08401808), 9, gUnknown_08401808}, - {ARRAY_COUNT(gUnknown_0840180B), 9, gUnknown_0840180B}, -}; - -static void sub_8122D94(u8 taskId) -{ - if (!GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_IS_EGG)) - { - gTasks[taskId].data[4] = 0; - ShowPartyPopupMenu(0, sDaycareStorageMenus, sDaycareStorageMenuItems, 0); - } - else - { - gTasks[taskId].data[4] = 1; - ShowPartyPopupMenu(1, sDaycareStorageMenus, sDaycareStorageMenuItems, 0); - } -} - -void HandleDaycarePartyMenu(u8 taskId) -{ - if (!gPaletteFade.active) - { - switch (HandleDefaultPartyMenuInput(taskId)) - { - case A_BUTTON: - PlaySE(SE_SELECT); - gLastFieldPokeMenuOpened = sub_806CA38(taskId); - GetMonNickname(&gPlayerParty[gLastFieldPokeMenuOpened], gStringVar1); - sub_8122D94(taskId); - gTasks[taskId].func = Task_DaycareStorageMenu8122EAC; - break; - case B_BUTTON: - PlaySE(SE_SELECT); - gLastFieldPokeMenuOpened = 0xFF; - gSpecialVar_0x8004 = 0xFF; - sub_8123138(taskId); - break; - } - } -} - -static void Task_DaycareStorageMenu8122EAC(u8 taskId) -{ - if (!gPaletteFade.active) - { - if (gMain.newAndRepeatedKeys & 0x40) - { - if (Menu_GetCursorPos() != 0) - { - PlaySE(SE_SELECT); - Menu_MoveCursor(-1); - } - return; - } - if (gMain.newAndRepeatedKeys & 0x80) - { - if (Menu_GetCursorPos() != 3) - { - PlaySE(SE_SELECT); - Menu_MoveCursor(1); - } - return; - } - if (gMain.newKeys & A_BUTTON) - { - TaskFunc popupMenuFunc; - - PlaySE(SE_SELECT); - popupMenuFunc = PartyMenuGetPopupMenuFunc( - gTasks[taskId].data[4], - sDaycareStorageMenus, - sDaycareStorageMenuItems, - Menu_GetCursorPos()); - popupMenuFunc(taskId); - return; - } - if (gMain.newKeys & B_BUTTON) - { - DaycareStorageMenuCallback_Exit(taskId); - return; - } - } -} - -static void DaycareStorageMenuCallback_Store(u8 taskId) -{ - gSpecialVar_0x8004 = gLastFieldPokeMenuOpened; - sub_8123138(taskId); -} - -static void sub_8122F90(void) -{ - while (1) - { - if (InitPartyMenu() == TRUE) - { - sub_806C994(ewram1B000.menuHandlerTaskId, gUnknown_020384F0); - ChangePartyMenuSelection(ewram1B000.menuHandlerTaskId, 0); - GetMonNickname(&gPlayerParty[gUnknown_020384F0], gStringVar1); - gLastFieldPokeMenuOpened = gUnknown_020384F0; - sub_8122D94(ewram1B000.menuHandlerTaskId); - SetMainCallback2(CB2_PartyMenuMain); - break; - } - if (sub_80F9344() == 1) - break; - } -} - -static void sub_8123004(void) -{ - gPaletteFade.bufferTransferDisabled = TRUE; - SetPartyMenuSettings(PARTY_MENU_TYPE_DAYCARE, 0xFF, Task_DaycareStorageMenu8122EAC, 5); - SetMainCallback2(sub_8122F90); -} - -static void sub_8123034(u8 taskId) -{ - if (!gPaletteFade.active) - { - u8 r4 = gSprites[gTasks[taskId].data[3] >> 8].data[0]; - - DestroyTask(taskId); - ewram1B000.unk262 = 1; - ShowPokemonSummaryScreen(gPlayerParty, r4, gPlayerPartyCount - 1, sub_8123004, PSS_MODE_NORMAL); - } -} - -static void DaycareStorageMenuCallback_Summary(u8 taskId) -{ - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - gTasks[taskId].func = sub_8123034; -} - -static void DaycareStorageMenuCallback_Exit(u8 taskId) -{ - PlaySE(SE_SELECT); - Menu_EraseWindowRect(20, 10, 29, 19); - Menu_DestroyCursor(); - PrintPartyMenuPromptText(15, 0); - gTasks[taskId].func = HandleDaycarePartyMenu; -} - -void sub_8123138(u8 taskId) -{ - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - gTasks[taskId].func = sub_8123170; -} - -static void sub_8123170(u8 taskId) -{ - if (!gPaletteFade.active) - { - gFieldCallback = sub_81231AC; - SetMainCallback2(c2_exit_to_overworld_2_switch); - DestroyTask(taskId); - } -} - -// Do these last two functions really belong in here? - -static void sub_81231C4(u8); - -void sub_81231AC(void) -{ - pal_fill_black(); - CreateTask(sub_81231C4, 10); -} - -static void sub_81231C4(u8 taskId) -{ - if (IsWeatherNotFadingIn() == TRUE) - { - DestroyTask(taskId); - ScriptContext2_Disable(); - EnableBothScriptContexts(); - } -} |