Through GiveChosenBagItem
This commit is contained in:
+47
-1812
File diff suppressed because it is too large
Load Diff
@@ -48,6 +48,22 @@ enum
|
||||
PC_TEXT_CANT_STORE_MAIL,
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
CURSOR_AREA_IN_BOX,
|
||||
CURSOR_AREA_IN_PARTY,
|
||||
CURSOR_AREA_BOX,
|
||||
CURSOR_AREA_BUTTONS, // Party Pokemon and Close Box
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
SCREEN_CHANGE_EXIT_BOX,
|
||||
SCREEN_CHANGE_SUMMARY_SCREEN,
|
||||
SCREEN_CHANGE_NAME_BOX,
|
||||
SCREEN_CHANGE_ITEM_FROM_BAG,
|
||||
};
|
||||
|
||||
#define TAG_PAL_WAVEFORM 0xDACA
|
||||
#define TAG_PAL_DAC8 0xDAC8
|
||||
#define TAG_PAL_DAC6 0xDAC6
|
||||
@@ -293,5 +309,6 @@ void sub_808C940(u8 curBox);
|
||||
void sub_808C950(void);
|
||||
u8 HandleBoxChooseSelectionInput(void);
|
||||
void sub_808C854(struct UnkPSSStruct_2002370 *a0, u16 tileTag, u16 palTag, u8 a3, bool32 loadPal);
|
||||
void SetCurrentBoxMonData(u8 boxPosition, s32 request, const void *value);
|
||||
|
||||
#endif //GUARD_POKEMON_STORAGE_SYSTEM_INTERNAL_H
|
||||
|
||||
+770
-12
@@ -2,13 +2,18 @@
|
||||
#include "gflib.h"
|
||||
#include "box_party_pokemon_dropdown.h"
|
||||
#include "help_system.h"
|
||||
#include "item.h"
|
||||
#include "item_menu.h"
|
||||
#include "mail_data.h"
|
||||
#include "menu.h"
|
||||
#include "naming_screen.h"
|
||||
#include "new_menu_helpers.h"
|
||||
#include "pc_screen_effect.h"
|
||||
#include "pokemon_storage_system_internal.h"
|
||||
#include "pokemon_summary_screen.h"
|
||||
#include "task.h"
|
||||
#include "text_window.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/help_system.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
@@ -18,7 +23,7 @@ EWRAM_DATA u8 sCurrentBoxOption = 0;
|
||||
EWRAM_DATA u8 gUnknown_20397B6 = 0;
|
||||
EWRAM_DATA u8 sWhichToReshow = 0;
|
||||
EWRAM_DATA u8 sLastUsedBox = 0;
|
||||
EWRAM_DATA u16 gUnknown_20397BA = 0;
|
||||
EWRAM_DATA u16 gUnknown_20397BA = ITEM_NONE;
|
||||
|
||||
void Cb_InitPSS(u8 taskId);
|
||||
void Cb_ShowPSS(u8 taskId);
|
||||
@@ -33,28 +38,46 @@ void Cb_ShiftMon(u8 taskId);
|
||||
void Cb_WithdrawMon(u8 taskId);
|
||||
void Cb_DepositMenu(u8 taskId);
|
||||
void Cb_ReleaseMon(u8 taskId);
|
||||
void Cb_HandleMovingMonFromParty(u8 taskId);
|
||||
void Cb_GiveMovingItemToMon(u8 taskId);
|
||||
void Cb_HandleBoxOptions(u8 taskId);
|
||||
void Cb_OnBPressed(u8 taskId);
|
||||
void Cb_OnCloseBoxPressed(u8 taskId);
|
||||
void Cb_SwitchSelectedItem(u8 taskId);
|
||||
void Cb_TakeItemForMoving(u8 taskId);
|
||||
void Cb_ChangeScreen(u8 taskId);
|
||||
void Cb_ShowMonSummary(u8 taskId);
|
||||
void Cb_ShowMarkMenu(u8 taskId);
|
||||
void Cb_TakeItemForMoving(u8 taskId);
|
||||
void Cb_GiveMovingItemToMon(u8 taskId);
|
||||
void Cb_ItemToBag(u8 taskId);
|
||||
void Cb_GiveItemFromBag(u8 taskId);
|
||||
void Cb_SwitchSelectedItem(u8 taskId);
|
||||
void Cb_ShowItemInfo(u8 taskId);
|
||||
void Cb_HandleMovingMonFromParty(u8 taskId);
|
||||
void Cb_PrintCantStoreMail(u8 taskId);
|
||||
void Cb_HandleBoxOptions(u8 taskId);
|
||||
void Cb_HandleWallpapers(u8 taskId);
|
||||
void Cb_JumpBox(u8 taskId);
|
||||
void Cb_NameBox(u8 taskId);
|
||||
void Cb_ShowMonSummary(u8 taskId);
|
||||
void Cb_GiveItemFromBag(u8 taskId);
|
||||
void Cb_OnCloseBoxPressed(u8 taskId);
|
||||
void Cb_OnBPressed(u8 taskId);
|
||||
void Cb_ChangeScreen(u8 taskId);
|
||||
void GiveChosenBagItem(void);
|
||||
void sub_80920FC(bool8 a0);
|
||||
void sub_8094D14(u8 a0);
|
||||
void Item_FromMonToMoving(u8 cursorArea, u8 cursorPos);
|
||||
void Item_GiveMovingToMon(u8 cursorArea, u8 cursorPos);
|
||||
void Item_TakeMons(u8 cursorArea, u8 cursorPos);
|
||||
void Item_SwitchMonsWithMoving(u8 cursorArea, u8 cursorPos);
|
||||
u8 GetBoxCursorPosition(void);
|
||||
void PrintCursorMonInfo(void);
|
||||
void InitMonPlaceChange(u8 a0);
|
||||
bool8 DoMonPlaceChange(void);
|
||||
void SetUpDoShowPartyMenu(void);
|
||||
bool8 DoShowPartyMenu(void);
|
||||
void GiveChosenBagItem(void);
|
||||
bool8 InitPSSWindows(void);
|
||||
void LoadPSSMenuGfx(void);
|
||||
void LoadWaveformSpritePalette(void);
|
||||
void SetScrollingBackground(void);
|
||||
void SetMonMarkings(u8 markings);
|
||||
void AddWallpaperSetsMenu(void);
|
||||
void sub_8095024(void);
|
||||
void AddWallpapersMenu(u8 wallpaperSet);
|
||||
void SetWallpaperForCurrentBox(u8 wallpaper);
|
||||
bool8 DoWallpaperGfxChange(void);
|
||||
void sub_808EFC8(void);
|
||||
void sub_808F078(void);
|
||||
bool8 sub_808F258(void);
|
||||
@@ -119,6 +142,16 @@ void RefreshCursorMonData(void);
|
||||
void sub_8091114(void);
|
||||
bool8 sub_8091150(void);
|
||||
void sub_8093264(void);
|
||||
void PrintItemDescription(void);
|
||||
void sub_80966F4(void);
|
||||
bool8 sub_8096728(void);
|
||||
bool8 sub_80967C0(void);
|
||||
void sub_8096088(void);
|
||||
void sub_8093630(void);
|
||||
void sub_80936B8(void);
|
||||
void sub_808FF70(void);
|
||||
u16 GetMovingItem(void);
|
||||
void FreePSSData(void);
|
||||
|
||||
extern const u16 gUnknown_83CE6F8[];
|
||||
|
||||
@@ -1142,3 +1175,728 @@ void Cb_ReleaseMon(u8 taskId)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Cb_ShowMarkMenu(u8 taskId)
|
||||
{
|
||||
switch (sPSSData->state)
|
||||
{
|
||||
case 0:
|
||||
PrintStorageActionText(PC_TEXT_MARK_POKE);
|
||||
sPSSData->field_DA4.markings = sPSSData->cursorMonMarkings;
|
||||
DrawMonMarkingsMenu(sPSSData->cursorMonMarkings, 0xb0, 0x10);
|
||||
sPSSData->state++;
|
||||
break;
|
||||
case 1:
|
||||
if (!MonMarkingsHandleInput())
|
||||
{
|
||||
TeardownMonMarkingsMenu();
|
||||
ClearBottomWindow();
|
||||
SetMonMarkings(sPSSData->field_DA4.markings);
|
||||
RefreshCursorMonData();
|
||||
SetPSSCallback(Cb_MainPSS);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Cb_TakeItemForMoving(u8 taskId)
|
||||
{
|
||||
switch (sPSSData->state)
|
||||
{
|
||||
case 0:
|
||||
if (!ItemIsMail(sPSSData->cursorMonItem))
|
||||
{
|
||||
ClearBottomWindow();
|
||||
sPSSData->state++;
|
||||
}
|
||||
else
|
||||
{
|
||||
SetPSSCallback(Cb_PrintCantStoreMail);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
sub_8094D14(2);
|
||||
Item_FromMonToMoving((sInPartyMenu != FALSE) ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetBoxCursorPosition());
|
||||
sPSSData->state++;
|
||||
break;
|
||||
case 2:
|
||||
if (!sub_809610C())
|
||||
{
|
||||
sub_8094D14(3);
|
||||
ClearBottomWindow();
|
||||
sub_8092F54();
|
||||
PrintCursorMonInfo();
|
||||
sPSSData->state++;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
SetPSSCallback(Cb_MainPSS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Cb_GiveMovingItemToMon(u8 taskId)
|
||||
{
|
||||
switch (sPSSData->state)
|
||||
{
|
||||
case 0:
|
||||
ClearBottomWindow();
|
||||
sPSSData->state++;
|
||||
break;
|
||||
case 1:
|
||||
sub_8094D14(2);
|
||||
Item_GiveMovingToMon((sInPartyMenu != FALSE) ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetBoxCursorPosition());
|
||||
sPSSData->state++;
|
||||
break;
|
||||
case 2:
|
||||
if (!sub_809610C())
|
||||
{
|
||||
sub_8094D14(0);
|
||||
sub_8092F54();
|
||||
PrintCursorMonInfo();
|
||||
PrintStorageActionText(PC_TEXT_ITEM_IS_HELD);
|
||||
sPSSData->state++;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
|
||||
{
|
||||
ClearBottomWindow();
|
||||
sPSSData->state++;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
SetPSSCallback(Cb_MainPSS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Cb_ItemToBag(u8 taskId)
|
||||
{
|
||||
switch (sPSSData->state)
|
||||
{
|
||||
case 0:
|
||||
if (!AddBagItem(sPSSData->cursorMonItem, 1))
|
||||
{
|
||||
PlaySE(SE_HAZURE);
|
||||
PrintStorageActionText(PC_TEXT_BAG_FULL);
|
||||
sPSSData->state = 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
Item_TakeMons((sInPartyMenu != FALSE) ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetBoxCursorPosition());
|
||||
sPSSData->state = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (!sub_809610C())
|
||||
{
|
||||
PrintStorageActionText(PC_TEXT_PLACED_IN_BAG);
|
||||
sPSSData->state = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
|
||||
{
|
||||
ClearBottomWindow();
|
||||
sub_8092F54();
|
||||
PrintCursorMonInfo();
|
||||
sPSSData->state = 4;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
SetPSSCallback(Cb_MainPSS);
|
||||
break;
|
||||
case 3:
|
||||
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
|
||||
{
|
||||
ClearBottomWindow();
|
||||
SetPSSCallback(Cb_MainPSS);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Cb_SwitchSelectedItem(u8 taskId)
|
||||
{
|
||||
switch (sPSSData->state)
|
||||
{
|
||||
case 0:
|
||||
if (!ItemIsMail(sPSSData->cursorMonItem))
|
||||
{
|
||||
ClearBottomWindow();
|
||||
sPSSData->state++;
|
||||
}
|
||||
else
|
||||
{
|
||||
SetPSSCallback(Cb_PrintCantStoreMail);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
sub_8094D14(2);
|
||||
Item_SwitchMonsWithMoving((sInPartyMenu != FALSE) ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetBoxCursorPosition());
|
||||
sPSSData->state++;
|
||||
break;
|
||||
case 2:
|
||||
if (!sub_809610C())
|
||||
{
|
||||
sub_8094D14(3);
|
||||
sub_8092F54();
|
||||
PrintCursorMonInfo();
|
||||
PrintStorageActionText(PC_TEXT_CHANGED_TO_ITEM);
|
||||
sPSSData->state++;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
|
||||
{
|
||||
ClearBottomWindow();
|
||||
sPSSData->state++;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
SetPSSCallback(Cb_MainPSS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Cb_ShowItemInfo(u8 taskId)
|
||||
{
|
||||
switch (sPSSData->state)
|
||||
{
|
||||
case 0:
|
||||
ClearBottomWindow();
|
||||
sPSSData->state++;
|
||||
break;
|
||||
case 1:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
{
|
||||
PlaySE(SE_WIN_OPEN);
|
||||
PrintItemDescription();
|
||||
sub_80966F4();
|
||||
sPSSData->state++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (!sub_8096728())
|
||||
sPSSData->state++;
|
||||
break;
|
||||
case 3:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
sPSSData->state++;
|
||||
break;
|
||||
case 4:
|
||||
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
|
||||
{
|
||||
PlaySE(SE_WIN_OPEN);
|
||||
sPSSData->state++;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (!sub_80967C0())
|
||||
sPSSData->state++;
|
||||
break;
|
||||
case 6:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
SetPSSCallback(Cb_MainPSS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Cb_CloseBoxWhileHoldingItem(u8 taskId)
|
||||
{
|
||||
switch (sPSSData->state)
|
||||
{
|
||||
case 0:
|
||||
PlaySE(SE_SELECT);
|
||||
PrintStorageActionText(PC_TEXT_PUT_IN_BAG);
|
||||
ShowYesNoWindow(0);
|
||||
sPSSData->state = 1;
|
||||
break;
|
||||
case 1:
|
||||
switch (Menu_ProcessInputNoWrapClearOnChoose())
|
||||
{
|
||||
case MENU_B_PRESSED:
|
||||
case 1:
|
||||
ClearBottomWindow();
|
||||
SetPSSCallback(Cb_MainPSS);
|
||||
break;
|
||||
case 0:
|
||||
if (AddBagItem(sPSSData->movingItem, 1) == TRUE)
|
||||
{
|
||||
ClearBottomWindow();
|
||||
sPSSData->state = 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
PrintStorageActionText(PC_TEXT_BAG_FULL);
|
||||
sPSSData->state = 2;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
|
||||
{
|
||||
ClearBottomWindow();
|
||||
sPSSData->state = 5;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
sub_8096088();
|
||||
sPSSData->state = 4;
|
||||
break;
|
||||
case 4:
|
||||
if (!sub_809610C())
|
||||
{
|
||||
sub_8094D14(0);
|
||||
SetPSSCallback(Cb_MainPSS);
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
SetPSSCallback(Cb_MainPSS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Cb_HandleMovingMonFromParty(u8 taskId)
|
||||
{
|
||||
switch (sPSSData->state)
|
||||
{
|
||||
case 0:
|
||||
CompactPartySlots();
|
||||
sub_80909F4();
|
||||
sPSSData->state++;
|
||||
break;
|
||||
case 1:
|
||||
if (!sub_8090A60())
|
||||
{
|
||||
sub_808FAA8();
|
||||
SetPSSCallback(Cb_MainPSS);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Cb_PrintCantStoreMail(u8 taskId)
|
||||
{
|
||||
switch (sPSSData->state)
|
||||
{
|
||||
case 0:
|
||||
PrintStorageActionText(PC_TEXT_CANT_STORE_MAIL);
|
||||
sPSSData->state++;
|
||||
break;
|
||||
case 1:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
sPSSData->state++;
|
||||
break;
|
||||
case 2:
|
||||
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
|
||||
{
|
||||
ClearBottomWindow();
|
||||
sPSSData->state++;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
SetPSSCallback(Cb_MainPSS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Cb_HandleBoxOptions(u8 taskId)
|
||||
{
|
||||
switch (sPSSData->state)
|
||||
{
|
||||
case 0:
|
||||
PrintStorageActionText(PC_TEXT_WHAT_YOU_DO);
|
||||
AddMenu();
|
||||
sPSSData->state++;
|
||||
break;
|
||||
case 1:
|
||||
if (sub_8094F90())
|
||||
return;
|
||||
sPSSData->state++;
|
||||
case 2:
|
||||
switch (sub_8094F94())
|
||||
{
|
||||
case -1:
|
||||
case 0:
|
||||
sub_80920FC(TRUE);
|
||||
ClearBottomWindow();
|
||||
SetPSSCallback(Cb_MainPSS);
|
||||
break;
|
||||
case 11:
|
||||
PlaySE(SE_SELECT);
|
||||
SetPSSCallback(Cb_NameBox);
|
||||
break;
|
||||
case 10:
|
||||
PlaySE(SE_SELECT);
|
||||
ClearBottomWindow();
|
||||
SetPSSCallback(Cb_HandleWallpapers);
|
||||
break;
|
||||
case 9:
|
||||
PlaySE(SE_SELECT);
|
||||
ClearBottomWindow();
|
||||
SetPSSCallback(Cb_JumpBox);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Cb_HandleWallpapers(u8 taskId)
|
||||
{
|
||||
switch (sPSSData->state)
|
||||
{
|
||||
case 0:
|
||||
AddWallpaperSetsMenu();
|
||||
PrintStorageActionText(PC_TEXT_PICK_A_THEME);
|
||||
sPSSData->state++;
|
||||
break;
|
||||
case 1:
|
||||
if (!sub_8094F90())
|
||||
sPSSData->state++;
|
||||
break;
|
||||
case 2:
|
||||
sPSSData->wallpaperSetId = sub_8094F94();
|
||||
switch (sPSSData->wallpaperSetId)
|
||||
{
|
||||
case -1:
|
||||
sub_80920FC(TRUE);
|
||||
ClearBottomWindow();
|
||||
SetPSSCallback(Cb_MainPSS);
|
||||
break;
|
||||
case 18 ... 21:
|
||||
PlaySE(SE_SELECT);
|
||||
sub_8095024();
|
||||
sPSSData->wallpaperSetId -= 18;
|
||||
sPSSData->state++;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
{
|
||||
AddWallpapersMenu(sPSSData->wallpaperSetId);
|
||||
PrintStorageActionText(PC_TEXT_PICK_A_WALLPAPER);
|
||||
sPSSData->state++;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
sPSSData->wallpaperId = sub_8094F94();
|
||||
switch (sPSSData->wallpaperId)
|
||||
{
|
||||
case MENU_NOTHING_CHOSEN:
|
||||
break;
|
||||
case MENU_B_PRESSED:
|
||||
ClearBottomWindow();
|
||||
sPSSData->state = 0;
|
||||
break;
|
||||
default:
|
||||
PlaySE(SE_SELECT);
|
||||
ClearBottomWindow();
|
||||
sPSSData->wallpaperId -= 22;
|
||||
SetWallpaperForCurrentBox(sPSSData->wallpaperId);
|
||||
sPSSData->state++;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (!DoWallpaperGfxChange())
|
||||
{
|
||||
sub_80920FC(TRUE);
|
||||
SetPSSCallback(Cb_MainPSS);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Cb_JumpBox(u8 taskId)
|
||||
{
|
||||
switch (sPSSData->state)
|
||||
{
|
||||
case 0:
|
||||
PrintStorageActionText(PC_TEXT_JUMP_TO_WHICH_BOX);
|
||||
sub_808C854(&sPSSData->field_1E5C, TAG_TILE_A, TAG_PAL_DAC7, 3, FALSE);
|
||||
sub_808C940(StorageGetCurrentBox());
|
||||
sPSSData->state++;
|
||||
break;
|
||||
case 1:
|
||||
sPSSData->newCurrBoxId = HandleBoxChooseSelectionInput();
|
||||
switch (sPSSData->newCurrBoxId)
|
||||
{
|
||||
case 200:
|
||||
break;
|
||||
default:
|
||||
ClearBottomWindow();
|
||||
sub_808C950();
|
||||
sub_808C8FC();
|
||||
if (sPSSData->newCurrBoxId == 201 || sPSSData->newCurrBoxId == StorageGetCurrentBox())
|
||||
{
|
||||
sub_80920FC(TRUE);
|
||||
SetPSSCallback(Cb_MainPSS);
|
||||
}
|
||||
else
|
||||
{
|
||||
sPSSData->state++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
SetUpScrollToBox(sPSSData->newCurrBoxId);
|
||||
sPSSData->state++;
|
||||
break;
|
||||
case 3:
|
||||
if (!ScrollToBox())
|
||||
{
|
||||
SetCurrentBox(sPSSData->newCurrBoxId);
|
||||
SetPSSCallback(Cb_MainPSS);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Cb_NameBox(u8 taskId)
|
||||
{
|
||||
switch (sPSSData->state)
|
||||
{
|
||||
case 0:
|
||||
sub_8093630();
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
|
||||
sPSSData->state++;
|
||||
break;
|
||||
case 1:
|
||||
if (!UpdatePaletteFade())
|
||||
{
|
||||
sWhichToReshow = 1;
|
||||
sPSSData->screenChangeType = SCREEN_CHANGE_NAME_BOX;
|
||||
SetPSSCallback(Cb_ChangeScreen);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Cb_ShowMonSummary(u8 taskId)
|
||||
{
|
||||
switch (sPSSData->state)
|
||||
{
|
||||
case 0:
|
||||
sub_80936B8();
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
|
||||
sPSSData->state++;
|
||||
break;
|
||||
case 1:
|
||||
if (!UpdatePaletteFade())
|
||||
{
|
||||
sWhichToReshow = 0;
|
||||
sPSSData->screenChangeType = SCREEN_CHANGE_SUMMARY_SCREEN;
|
||||
SetPSSCallback(Cb_ChangeScreen);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Cb_GiveItemFromBag(u8 taskId)
|
||||
{
|
||||
switch (sPSSData->state)
|
||||
{
|
||||
case 0:
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
|
||||
sPSSData->state++;
|
||||
break;
|
||||
case 1:
|
||||
if (!UpdatePaletteFade())
|
||||
{
|
||||
sWhichToReshow = 2;
|
||||
sPSSData->screenChangeType = SCREEN_CHANGE_ITEM_FROM_BAG;
|
||||
SetPSSCallback(Cb_ChangeScreen);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Cb_OnCloseBoxPressed(u8 taskId)
|
||||
{
|
||||
switch (sPSSData->state)
|
||||
{
|
||||
case 0:
|
||||
if (IsMonBeingMoved())
|
||||
{
|
||||
PlaySE(SE_HAZURE);
|
||||
PrintStorageActionText(PC_TEXT_HOLDING_POKE);
|
||||
sPSSData->state = 1;
|
||||
}
|
||||
else if (IsActiveItemMoving())
|
||||
{
|
||||
SetPSSCallback(Cb_CloseBoxWhileHoldingItem);
|
||||
}
|
||||
else
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
PrintStorageActionText(PC_TEXT_EXIT_BOX);
|
||||
ShowYesNoWindow(0);
|
||||
sPSSData->state = 2;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
|
||||
{
|
||||
ClearBottomWindow();
|
||||
SetPSSCallback(Cb_MainPSS);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
switch (Menu_ProcessInputNoWrapClearOnChoose())
|
||||
{
|
||||
case MENU_B_PRESSED:
|
||||
case 1:
|
||||
ClearBottomWindow();
|
||||
SetPSSCallback(Cb_MainPSS);
|
||||
break;
|
||||
case 0:
|
||||
PlaySE(SE_PC_OFF);
|
||||
ClearBottomWindow();
|
||||
sPSSData->state++;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
sub_80A0A70(0x14, 0, 1);
|
||||
sPSSData->state++;
|
||||
break;
|
||||
case 4:
|
||||
if (!sub_80A0AAC())
|
||||
{
|
||||
sub_808FF70();
|
||||
gPlayerPartyCount = CalculatePlayerPartyCount();
|
||||
sPSSData->screenChangeType = SCREEN_CHANGE_EXIT_BOX;
|
||||
SetPSSCallback(Cb_ChangeScreen);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Cb_OnBPressed(u8 taskId)
|
||||
{
|
||||
switch (sPSSData->state)
|
||||
{
|
||||
case 0:
|
||||
if (IsMonBeingMoved())
|
||||
{
|
||||
PlaySE(SE_HAZURE);
|
||||
PrintStorageActionText(PC_TEXT_HOLDING_POKE);
|
||||
sPSSData->state = 1;
|
||||
}
|
||||
else if (IsActiveItemMoving())
|
||||
{
|
||||
SetPSSCallback(Cb_CloseBoxWhileHoldingItem);
|
||||
}
|
||||
else
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
PrintStorageActionText(PC_TEXT_CONTINUE_BOX);
|
||||
ShowYesNoWindow(0);
|
||||
sPSSData->state = 2;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
|
||||
{
|
||||
ClearBottomWindow();
|
||||
SetPSSCallback(Cb_MainPSS);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
switch (Menu_ProcessInputNoWrapClearOnChoose())
|
||||
{
|
||||
case 0:
|
||||
ClearBottomWindow();
|
||||
SetPSSCallback(Cb_MainPSS);
|
||||
break;
|
||||
case 1:
|
||||
case MENU_B_PRESSED:
|
||||
PlaySE(SE_PC_OFF);
|
||||
ClearBottomWindow();
|
||||
sPSSData->state++;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
sub_80A0A70(0x14, 0, 0);
|
||||
sPSSData->state++;
|
||||
break;
|
||||
case 4:
|
||||
if (!sub_80A0AAC())
|
||||
{
|
||||
sub_808FF70();
|
||||
gPlayerPartyCount = CalculatePlayerPartyCount();
|
||||
sPSSData->screenChangeType = SCREEN_CHANGE_EXIT_BOX;
|
||||
SetPSSCallback(Cb_ChangeScreen);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Cb_ChangeScreen(u8 taskId)
|
||||
{
|
||||
struct Pokemon * partyMon;
|
||||
u8 mode, monIndex, maxMonIndex;
|
||||
u8 screenChangeType = sPSSData->screenChangeType;
|
||||
|
||||
if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS && IsActiveItemMoving() == TRUE)
|
||||
gUnknown_20397BA = GetMovingItem();
|
||||
else
|
||||
gUnknown_20397BA = ITEM_NONE;
|
||||
|
||||
switch (screenChangeType)
|
||||
{
|
||||
case SCREEN_CHANGE_EXIT_BOX:
|
||||
default:
|
||||
FreePSSData();
|
||||
SetMainCallback2(Cb2_ExitPSS);
|
||||
break;
|
||||
case SCREEN_CHANGE_SUMMARY_SCREEN:
|
||||
partyMon = sPSSData->field_218C.mon;
|
||||
monIndex = sPSSData->field_2187;
|
||||
maxMonIndex = sPSSData->field_2186;
|
||||
mode = sPSSData->field_2188;
|
||||
FreePSSData();
|
||||
ShowPokemonSummaryScreen(partyMon, monIndex, maxMonIndex, Cb2_ReturnToPSS, mode);
|
||||
break;
|
||||
case SCREEN_CHANGE_NAME_BOX:
|
||||
FreePSSData();
|
||||
DoNamingScreen(NAMING_SCREEN_BOX, GetBoxNamePtr(StorageGetCurrentBox()), 0, 0, 0, Cb2_ReturnToPSS);
|
||||
break;
|
||||
case SCREEN_CHANGE_ITEM_FROM_BAG:
|
||||
FreePSSData();
|
||||
GoToBagMenu(ITEMMENULOCATION_PCBOX, OPEN_BAG_ITEMS, Cb2_ReturnToPSS);
|
||||
break;
|
||||
}
|
||||
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
void GiveChosenBagItem(void)
|
||||
{
|
||||
u16 item = gSpecialVar_ItemId;
|
||||
|
||||
if (item != 0)
|
||||
{
|
||||
u8 id = GetBoxCursorPosition();
|
||||
|
||||
if (sInPartyMenu)
|
||||
SetMonData(&gPlayerParty[id], MON_DATA_HELD_ITEM, &item);
|
||||
else
|
||||
SetCurrentBoxMonData(id, MON_DATA_HELD_ITEM, &item);
|
||||
|
||||
RemoveBagItem(item, 1);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user