Merge pull request #581 from GriffinRichards/sync-menuhelpers

Sync menu_helpers.c
This commit is contained in:
GriffinR
2022-11-18 17:14:55 -05:00
committed by GitHub
14 changed files with 94 additions and 99 deletions
+6 -6
View File
@@ -15,19 +15,19 @@ struct YesNoFuncTable
}; };
bool16 RunTextPrinters_CheckActive(u8 textPrinterId); bool16 RunTextPrinters_CheckActive(u8 textPrinterId);
bool8 MenuHelpers_CallLinkSomething(void); bool8 IsActiveOverworldLinkBusy(void);
bool8 sub_80BF748(void); bool8 MenuHelpers_ShouldWaitForLinkRecv(void);
bool8 MenuHelpers_LinkSomething(void); bool8 MenuHelpers_IsLinkActive(void);
void SetVBlankHBlankCallbacksToNull(void); void SetVBlankHBlankCallbacksToNull(void);
void ResetAllBgsCoordinatesAndBgCntRegs(void); void ResetAllBgsCoordinatesAndBgCntRegs(void);
u8 GetDialogBoxFontId(void); u8 GetDialogBoxFontId(void);
bool8 AdjustQuantityAccordingToDPadInput(s16 *quantity_p, u16 qmax); bool8 AdjustQuantityAccordingToDPadInput(s16 *quantity_p, u16 qmax);
void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 tileNum, u8 paletteNum, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc); void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 tileNum, u8 paletteNum, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc);
void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 fontId, u8 left, u8 top, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo); void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 fontId, u8 left, u8 top, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo);
u8 GetLRKeysState(void); u8 GetLRKeysPressed(void);
u8 GetLRKeysPressedAndHeld(void); u8 GetLRKeysPressedAndHeld(void);
bool8 itemid_link_can_give_berry(u16 itemId); bool8 IsHoldingItemAllowed(u16 itemId);
bool8 CanWriteMailHere(u16 itemId); bool8 IsWritingMailAllowed(u16 itemId);
void ResetVramOamAndBgCntRegs(void); void ResetVramOamAndBgCntRegs(void);
#endif //GUARD_MENU_HELPERS_H #endif //GUARD_MENU_HELPERS_H
+8 -8
View File
@@ -457,11 +457,11 @@ static void CB2_InitBerryPouch(void)
{ {
while (1) while (1)
{ {
if (MenuHelpers_CallLinkSomething() == TRUE) if (IsActiveOverworldLinkBusy() == TRUE)
break; break;
if (RunBerryPouchInit() == TRUE) if (RunBerryPouchInit() == TRUE)
break; break;
if (MenuHelpers_LinkSomething() == TRUE) if (MenuHelpers_IsLinkActive() == TRUE)
break; break;
} }
} }
@@ -498,7 +498,7 @@ static bool8 RunBerryPouchInit(void)
gMain.state++; gMain.state++;
break; break;
case 6: case 6:
if (!MenuHelpers_LinkSomething()) if (!MenuHelpers_IsLinkActive())
ResetTasks(); ResetTasks();
gMain.state++; gMain.state++;
break; break;
@@ -934,7 +934,7 @@ static void Task_BerryPouchMain(u8 taskId)
{ {
s16 * data = gTasks[taskId].data; s16 * data = gTasks[taskId].data;
s32 menuInput; s32 menuInput;
if (!gPaletteFade.active && MenuHelpers_CallLinkSomething() != TRUE) if (!gPaletteFade.active && IsActiveOverworldLinkBusy() != TRUE)
{ {
menuInput = ListMenu_ProcessInput(data[0]); menuInput = ListMenu_ProcessInput(data[0]);
ListMenuGetScrollAndRow(data[0], &sStaticCnt.listMenuScrollOffset, &sStaticCnt.listMenuSelectedRow); ListMenuGetScrollAndRow(data[0], &sStaticCnt.listMenuScrollOffset, &sStaticCnt.listMenuSelectedRow);
@@ -1004,9 +1004,9 @@ static void CreateNormalContextMenu(u8 taskId)
sContextMenuOptions = sOptions_UseToss_Exit; sContextMenuOptions = sOptions_UseToss_Exit;
sContextMenuNumOptions = 3; sContextMenuNumOptions = 3;
} }
else if (MenuHelpers_LinkSomething() == TRUE || InUnionRoom() == TRUE) else if (MenuHelpers_IsLinkActive() == TRUE || InUnionRoom() == TRUE)
{ {
if (!itemid_link_can_give_berry(gSpecialVar_ItemId)) if (!IsHoldingItemAllowed(gSpecialVar_ItemId))
{ {
sContextMenuOptions = sOptions_Exit; sContextMenuOptions = sOptions_Exit;
sContextMenuNumOptions = 1; sContextMenuNumOptions = 1;
@@ -1040,7 +1040,7 @@ static void Task_NormalContextMenu(u8 taskId)
static void Task_NormalContextMenu_HandleInput(u8 taskId) static void Task_NormalContextMenu_HandleInput(u8 taskId)
{ {
s8 input; s8 input;
if (MenuHelpers_CallLinkSomething() != TRUE) if (IsActiveOverworldLinkBusy() != TRUE)
{ {
input = Menu_ProcessInputNoWrapAround(); input = Menu_ProcessInputNoWrapAround();
switch (input) switch (input)
@@ -1243,7 +1243,7 @@ static void Task_ContextMenu_FromPartyGiveMenu(u8 taskId)
{ {
s16 * data = gTasks[taskId].data; s16 * data = gTasks[taskId].data;
u16 itemId = BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1]); u16 itemId = BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1]);
if (!itemid_link_can_give_berry(itemId)) if (!IsHoldingItemAllowed(itemId))
{ {
CopyItemName(itemId, gStringVar1); CopyItemName(itemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_TheStrVar1CantBeHeldHere); StringExpandPlaceholders(gStringVar4, gText_TheStrVar1CantBeHeldHere);
+13 -13
View File
@@ -377,11 +377,11 @@ static void CB2_OpenBagMenu(void)
{ {
while (1) while (1)
{ {
if (MenuHelpers_CallLinkSomething() == TRUE) if (IsActiveOverworldLinkBusy() == TRUE)
break; break;
if (LoadBagMenuGraphics() == TRUE) if (LoadBagMenuGraphics() == TRUE)
break; break;
if (MenuHelpers_LinkSomething() == TRUE) if (MenuHelpers_IsLinkActive() == TRUE)
break; break;
} }
} }
@@ -419,7 +419,7 @@ static bool8 LoadBagMenuGraphics(void)
gMain.state++; gMain.state++;
break; break;
case 6: case 6:
if (!MenuHelpers_LinkSomething()) if (!MenuHelpers_IsLinkActive())
{ {
ResetTasks(); ResetTasks();
} }
@@ -1050,7 +1050,7 @@ static void Task_BagMenu_HandleInput(u8 taskId)
return; return;
if (FuncIsActiveTask(Task_AnimateWin0v) == TRUE) if (FuncIsActiveTask(Task_AnimateWin0v) == TRUE)
return; return;
if (MenuHelpers_CallLinkSomething() == TRUE) if (IsActiveOverworldLinkBusy() == TRUE)
return; return;
switch (ProcessPocketSwitchInput(taskId, gBagMenuState.pocket)) switch (ProcessPocketSwitchInput(taskId, gBagMenuState.pocket))
{ {
@@ -1131,15 +1131,15 @@ static u8 ProcessPocketSwitchInput(u8 taskId, u8 pocketId)
u8 lrState; u8 lrState;
if (sBagMenuDisplay->pocketSwitchMode != 0) if (sBagMenuDisplay->pocketSwitchMode != 0)
return 0; return 0;
lrState = GetLRKeysState(); lrState = GetLRKeysPressed();
if (JOY_NEW(DPAD_LEFT) || lrState == 1) if (JOY_NEW(DPAD_LEFT) || lrState == MENU_L_PRESSED)
{ {
if (pocketId == POCKET_ITEMS - 1) if (pocketId == POCKET_ITEMS - 1)
return 0; return 0;
PlaySE(SE_BAG_POCKET); PlaySE(SE_BAG_POCKET);
return 1; return 1;
} }
if (JOY_NEW(DPAD_RIGHT) || lrState == 2) if (JOY_NEW(DPAD_RIGHT) || lrState == MENU_R_PRESSED)
{ {
if (pocketId >= POCKET_POKE_BALLS - 1) if (pocketId >= POCKET_POKE_BALLS - 1)
return 0; return 0;
@@ -1174,7 +1174,7 @@ static void SwitchPockets(u8 taskId, s16 direction, bool16 a2)
static void Task_AnimateSwitchPockets(u8 taskId) static void Task_AnimateSwitchPockets(u8 taskId)
{ {
s16 *data = gTasks[taskId].data; s16 *data = gTasks[taskId].data;
if (!MenuHelpers_LinkSomething() && !BagIsTutorial()) if (!MenuHelpers_IsLinkActive() && !BagIsTutorial())
{ {
switch (ProcessPocketSwitchInput(taskId, gBagMenuState.pocket + data[11])) switch (ProcessPocketSwitchInput(taskId, gBagMenuState.pocket + data[11]))
{ {
@@ -1244,7 +1244,7 @@ static void Task_MoveItemInPocket_HandleInput(u8 taskId)
s32 input; s32 input;
u16 itemsAbove; u16 itemsAbove;
u16 cursorPos; u16 cursorPos;
if (MenuHelpers_CallLinkSomething() == TRUE) if (IsActiveOverworldLinkBusy() == TRUE)
return; return;
input = ListMenu_ProcessInput(data[0]); input = ListMenu_ProcessInput(data[0]);
ListMenuGetScrollAndRow(data[0], &gBagMenuState.cursorPos[gBagMenuState.pocket], &gBagMenuState.itemsAbove[gBagMenuState.pocket]); ListMenuGetScrollAndRow(data[0], &gBagMenuState.cursorPos[gBagMenuState.pocket], &gBagMenuState.itemsAbove[gBagMenuState.pocket]);
@@ -1370,7 +1370,7 @@ static void OpenContextMenu(u8 taskId)
sContextMenuNumItems = 2; sContextMenuNumItems = 2;
break; break;
default: default:
if (MenuHelpers_LinkSomething() == TRUE || InUnionRoom() == TRUE) if (MenuHelpers_IsLinkActive() == TRUE || InUnionRoom() == TRUE)
{ {
if (gSpecialVar_ItemId == ITEM_TM_CASE || gSpecialVar_ItemId == ITEM_BERRY_POUCH) if (gSpecialVar_ItemId == ITEM_TM_CASE || gSpecialVar_ItemId == ITEM_BERRY_POUCH)
{ {
@@ -1447,7 +1447,7 @@ static void Task_ItemContext_FieldOrBattle(u8 taskId)
static void Task_FieldItemContextMenuHandleInput(u8 taskId) static void Task_FieldItemContextMenuHandleInput(u8 taskId)
{ {
s8 input; s8 input;
if (MenuHelpers_CallLinkSomething() != TRUE) if (IsActiveOverworldLinkBusy() != TRUE)
{ {
input = Menu_ProcessInputNoWrapAround(); input = Menu_ProcessInputNoWrapAround();
switch (input) switch (input)
@@ -1609,7 +1609,7 @@ static void Task_ItemMenuAction_Give(u8 taskId)
PutWindowTilemap(0); PutWindowTilemap(0);
PutWindowTilemap(1); PutWindowTilemap(1);
CopyWindowToVram(0, COPYWIN_MAP); CopyWindowToVram(0, COPYWIN_MAP);
if (!CanWriteMailHere(itemId)) if (!IsWritingMailAllowed(itemId))
DisplayItemMessageInBag(taskId, FONT_2, gText_CantWriteMailHere, Task_WaitAButtonAndCloseContextMenu); DisplayItemMessageInBag(taskId, FONT_2, gText_CantWriteMailHere, Task_WaitAButtonAndCloseContextMenu);
else if (ItemId_GetImportance(itemId) == 0) else if (ItemId_GetImportance(itemId) == 0)
{ {
@@ -1703,7 +1703,7 @@ static void Task_ItemContext_FieldGive(u8 taskId)
{ {
s16 *data = gTasks[taskId].data; s16 *data = gTasks[taskId].data;
u16 itemId = BagGetItemIdByPocketPosition(gBagMenuState.pocket + 1, data[1]); u16 itemId = BagGetItemIdByPocketPosition(gBagMenuState.pocket + 1, data[1]);
if (!CanWriteMailHere(itemId)) if (!IsWritingMailAllowed(itemId))
{ {
DisplayItemMessageInBag(taskId, FONT_2, gText_CantWriteMailHere, Task_WaitAButtonAndCloseContextMenu); DisplayItemMessageInBag(taskId, FONT_2, gText_CantWriteMailHere, Task_WaitAButtonAndCloseContextMenu);
} }
+2 -2
View File
@@ -259,7 +259,7 @@ static void ItemPc_RunSetup(void)
{ {
if (ItemPc_DoGfxSetup() == TRUE) if (ItemPc_DoGfxSetup() == TRUE)
break; break;
if (MenuHelpers_LinkSomething() == TRUE) if (MenuHelpers_IsLinkActive() == TRUE)
break; break;
} }
} }
@@ -379,7 +379,7 @@ static bool8 ItemPc_DoGfxSetup(void)
gMain.state++; gMain.state++;
break; break;
case 20: case 20:
if (MenuHelpers_CallLinkSomething() != TRUE) if (IsActiveOverworldLinkBusy() != TRUE)
gMain.state++; gMain.state++;
break; break;
default: default:
+1 -1
View File
@@ -629,7 +629,7 @@ static void CB2_InitMailView(void)
SetMainCallback2(CB2_RunShowMailCB); SetMainCallback2(CB2_RunShowMailCB);
break; break;
} }
} while (MenuHelpers_LinkSomething() != TRUE); } while (MenuHelpers_IsLinkActive() != TRUE);
} }
static void BufferMailMessage(void) static void BufferMailMessage(void)
+8 -8
View File
@@ -729,13 +729,13 @@ static s8 sub_81105A0(void)
MultichoiceGrid_MoveCursor(0, 1); MultichoiceGrid_MoveCursor(0, 1);
return MENU_NOTHING_CHOSEN; return MENU_NOTHING_CHOSEN;
} }
else if (JOY_NEW(DPAD_LEFT) || GetLRKeysState() == 1) else if (JOY_NEW(DPAD_LEFT) || GetLRKeysPressed() == MENU_L_PRESSED)
{ {
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
MultichoiceGrid_MoveCursor(-1, 0); MultichoiceGrid_MoveCursor(-1, 0);
return MENU_NOTHING_CHOSEN; return MENU_NOTHING_CHOSEN;
} }
else if (JOY_NEW(DPAD_RIGHT) || GetLRKeysState() == 2) else if (JOY_NEW(DPAD_RIGHT) || GetLRKeysPressed() == MENU_R_PRESSED)
{ {
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
MultichoiceGrid_MoveCursor(1, 0); MultichoiceGrid_MoveCursor(1, 0);
@@ -769,13 +769,13 @@ s8 Menu_ProcessInputGridLayout(void)
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN; return MENU_NOTHING_CHOSEN;
} }
else if (JOY_NEW(DPAD_LEFT) || GetLRKeysState() == 1) else if (JOY_NEW(DPAD_LEFT) || GetLRKeysPressed() == MENU_L_PRESSED)
{ {
if (oldPos != MultichoiceGrid_MoveCursorIfValid(-1, 0)) if (oldPos != MultichoiceGrid_MoveCursorIfValid(-1, 0))
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN; return MENU_NOTHING_CHOSEN;
} }
else if (JOY_NEW(DPAD_RIGHT) || GetLRKeysState() == 2) else if (JOY_NEW(DPAD_RIGHT) || GetLRKeysPressed() == MENU_R_PRESSED)
{ {
if (oldPos != MultichoiceGrid_MoveCursorIfValid(1, 0)) if (oldPos != MultichoiceGrid_MoveCursorIfValid(1, 0))
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
@@ -808,13 +808,13 @@ static s8 sub_81106F4(void)
MultichoiceGrid_MoveCursor(0, 1); MultichoiceGrid_MoveCursor(0, 1);
return MENU_NOTHING_CHOSEN; return MENU_NOTHING_CHOSEN;
} }
else if (JOY_REPT(DPAD_ANY) == DPAD_LEFT || GetLRKeysPressedAndHeld() == 1) else if (JOY_REPT(DPAD_ANY) == DPAD_LEFT || GetLRKeysPressedAndHeld() == MENU_L_PRESSED)
{ {
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
MultichoiceGrid_MoveCursor(-1, 0); MultichoiceGrid_MoveCursor(-1, 0);
return MENU_NOTHING_CHOSEN; return MENU_NOTHING_CHOSEN;
} }
else if (JOY_REPT(DPAD_ANY) == DPAD_RIGHT || GetLRKeysPressedAndHeld() == 2) else if (JOY_REPT(DPAD_ANY) == DPAD_RIGHT || GetLRKeysPressedAndHeld() == MENU_R_PRESSED)
{ {
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
MultichoiceGrid_MoveCursor(1, 0); MultichoiceGrid_MoveCursor(1, 0);
@@ -850,13 +850,13 @@ static s8 sub_81107A0(void)
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN; return MENU_NOTHING_CHOSEN;
} }
else if (JOY_REPT(DPAD_ANY) == DPAD_LEFT || GetLRKeysPressedAndHeld() == 1) else if (JOY_REPT(DPAD_ANY) == DPAD_LEFT || GetLRKeysPressedAndHeld() == MENU_L_PRESSED)
{ {
if (oldPos != MultichoiceGrid_MoveCursorIfValid(-1, 0)) if (oldPos != MultichoiceGrid_MoveCursorIfValid(-1, 0))
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN; return MENU_NOTHING_CHOSEN;
} }
else if (JOY_REPT(DPAD_ANY) == DPAD_RIGHT || GetLRKeysPressedAndHeld() == 2) else if (JOY_REPT(DPAD_ANY) == DPAD_RIGHT || GetLRKeysPressedAndHeld() == MENU_R_PRESSED)
{ {
if (oldPos != MultichoiceGrid_MoveCursorIfValid(1, 0)) if (oldPos != MultichoiceGrid_MoveCursorIfValid(1, 0))
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
+32 -37
View File
@@ -12,15 +12,15 @@
#include "constants/items.h" #include "constants/items.h"
#include "constants/maps.h" #include "constants/maps.h"
static EWRAM_DATA const struct YesNoFuncTable *gUnknown_20399C8 = NULL; static EWRAM_DATA const struct YesNoFuncTable *sYesNo = NULL;
static EWRAM_DATA TaskFunc gUnknown_20399CC = NULL; static EWRAM_DATA TaskFunc sMessageNextTask = NULL;
static EWRAM_DATA u8 gUnknown_20399D0 = {0}; static EWRAM_DATA u8 sMessageWindowId = {0};
static void Task_ContinueTaskAfterMessagePrints(u8 taskId); static void Task_ContinueTaskAfterMessagePrints(u8 taskId);
void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 tileNum, u8 paletteNum, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc) void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 tileNum, u8 paletteNum, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc)
{ {
gUnknown_20399D0 = windowId; sMessageWindowId = windowId;
DrawDialogFrameWithCustomTileAndPalette(windowId, TRUE, tileNum, paletteNum); DrawDialogFrameWithCustomTileAndPalette(windowId, TRUE, tileNum, paletteNum);
if (string != gStringVar4) if (string != gStringVar4)
@@ -28,7 +28,7 @@ void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 tileNum, u8 palet
gTextFlags.canABSpeedUpPrint = 1; gTextFlags.canABSpeedUpPrint = 1;
AddTextPrinterParameterized2(windowId, fontId, gStringVar4, textSpeed, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); AddTextPrinterParameterized2(windowId, fontId, gStringVar4, textSpeed, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY);
gUnknown_20399CC = taskFunc; sMessageNextTask = taskFunc;
gTasks[taskId].func = Task_ContinueTaskAfterMessagePrints; gTasks[taskId].func = Task_ContinueTaskAfterMessagePrints;
} }
@@ -40,8 +40,8 @@ bool16 RunTextPrinters_CheckActive(u8 textPrinterId)
static void Task_ContinueTaskAfterMessagePrints(u8 taskId) static void Task_ContinueTaskAfterMessagePrints(u8 taskId)
{ {
if (!RunTextPrinters_CheckActive(gUnknown_20399D0)) if (!RunTextPrinters_CheckActive(sMessageWindowId))
gUnknown_20399CC(taskId); sMessageNextTask(taskId);
} }
static void Task_CallYesOrNoCallback(u8 taskId) static void Task_CallYesOrNoCallback(u8 taskId)
@@ -50,12 +50,12 @@ static void Task_CallYesOrNoCallback(u8 taskId)
{ {
case 0: case 0:
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
gTasks[taskId].func = gUnknown_20399C8->yesFunc; gTasks[taskId].func = sYesNo->yesFunc;
break; break;
case 1: case 1:
case MENU_B_PRESSED: case MENU_B_PRESSED:
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
gTasks[taskId].func = gUnknown_20399C8->noFunc; gTasks[taskId].func = sYesNo->noFunc;
break; break;
} }
} }
@@ -63,18 +63,18 @@ static void Task_CallYesOrNoCallback(u8 taskId)
void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 fontId, u8 left, u8 top, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo) void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 fontId, u8 left, u8 top, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo)
{ {
CreateYesNoMenu(template, fontId, left, top, tileStart, palette, 0); CreateYesNoMenu(template, fontId, left, top, tileStart, palette, 0);
gUnknown_20399C8 = yesNo; sYesNo = yesNo;
gTasks[taskId].func = Task_CallYesOrNoCallback; gTasks[taskId].func = Task_CallYesOrNoCallback;
} }
u8 GetLRKeysState(void) u8 GetLRKeysPressed(void)
{ {
if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR) if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
{ {
if (JOY_NEW(L_BUTTON)) if (JOY_NEW(L_BUTTON))
return 1; return MENU_L_PRESSED;
if (JOY_NEW(R_BUTTON)) if (JOY_NEW(R_BUTTON))
return 2; return MENU_R_PRESSED;
} }
return 0; return 0;
} }
@@ -84,37 +84,34 @@ u8 GetLRKeysPressedAndHeld(void)
if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR) if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
{ {
if (JOY_REPT(L_BUTTON)) if (JOY_REPT(L_BUTTON))
return 1; return MENU_L_PRESSED;
if (JOY_REPT(R_BUTTON)) if (JOY_REPT(R_BUTTON))
return 2; return MENU_R_PRESSED;
} }
return 0; return 0;
} }
bool8 itemid_link_can_give_berry(u16 itemId) bool8 IsHoldingItemAllowed(u16 itemId)
{ {
if (itemId != ITEM_ENIGMA_BERRY) // Enigma Berry can't be held in link areas
return TRUE; if (itemId == ITEM_ENIGMA_BERRY
else if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(TRADE_CENTER) && ((gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(TRADE_CENTER)
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRADE_CENTER)) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRADE_CENTER))
|| InUnionRoom() == TRUE))
return FALSE; return FALSE;
else if (InUnionRoom() != TRUE)
return TRUE;
else else
return FALSE; return TRUE;
} }
bool8 CanWriteMailHere(u16 itemId) bool8 IsWritingMailAllowed(u16 itemId)
{ {
if (IsUpdateLinkStateCBActive() != TRUE && InUnionRoom() != TRUE) if ((IsUpdateLinkStateCBActive() == TRUE || InUnionRoom() == TRUE) && ItemIsMail(itemId) == TRUE)
return TRUE;
else if (ItemIsMail(itemId) != TRUE)
return TRUE;
else
return FALSE; return FALSE;
else
return TRUE;
} }
bool8 MenuHelpers_LinkSomething(void) bool8 MenuHelpers_IsLinkActive(void)
{ {
if (IsUpdateLinkStateCBActive() == TRUE || gReceivedRemoteLinkPlayers == 1) if (IsUpdateLinkStateCBActive() == TRUE || gReceivedRemoteLinkPlayers == 1)
return TRUE; return TRUE;
@@ -122,22 +119,20 @@ bool8 MenuHelpers_LinkSomething(void)
return FALSE; return FALSE;
} }
bool8 MenuHelpers_CallLinkSomething(void) bool8 IsActiveOverworldLinkBusy(void)
{ {
if (!MenuHelpers_LinkSomething()) if (!MenuHelpers_IsLinkActive())
return FALSE; return FALSE;
else else
return (u8)Overworld_LinkRecvQueueLengthMoreThan2(); return (u8)Overworld_LinkRecvQueueLengthMoreThan2();
} }
bool8 sub_80BF748(void) bool8 MenuHelpers_ShouldWaitForLinkRecv(void)
{ {
if (MenuHelpers_CallLinkSomething() == TRUE) if (IsActiveOverworldLinkBusy() == TRUE || IsLinkRecvQueueAtOverworldMax() == TRUE)
return TRUE; return TRUE;
else if (IsLinkRecvQueueAtOverworldMax() != TRUE)
return FALSE;
else else
return TRUE; return FALSE;
} }
void SetVBlankHBlankCallbacksToNull(void) void SetVBlankHBlankCallbacksToNull(void)
+2 -2
View File
@@ -12,7 +12,7 @@
#include "gba/m4a_internal.h" #include "gba/m4a_internal.h"
// can't include the one in menu_helpers.h since Task_OptionMenu needs bool32 for matching // can't include the one in menu_helpers.h since Task_OptionMenu needs bool32 for matching
bool32 MenuHelpers_CallLinkSomething(void); bool32 IsActiveOverworldLinkBusy(void);
// Menu items // Menu items
enum enum
@@ -371,7 +371,7 @@ static void Task_OptionMenu(u8 taskId)
sOptionMenuPtr->loadState++; sOptionMenuPtr->loadState++;
break; break;
case 2: case 2:
if (((bool32)MenuHelpers_CallLinkSomething()) == TRUE) if (((bool32)IsActiveOverworldLinkBusy()) == TRUE)
break; break;
switch (OptionMenu_ProcessInput()) switch (OptionMenu_ProcessInput())
{ {
+8 -8
View File
@@ -476,7 +476,7 @@ static void CB2_InitPartyMenu(void)
{ {
while (TRUE) while (TRUE)
{ {
if (sub_80BF748() == TRUE || ShowPartyMenu() == TRUE || MenuHelpers_LinkSomething() == TRUE) if (MenuHelpers_ShouldWaitForLinkRecv() == TRUE || ShowPartyMenu() == TRUE || MenuHelpers_IsLinkActive() == TRUE)
break; break;
} }
} }
@@ -509,7 +509,7 @@ static bool8 ShowPartyMenu(void)
++gMain.state; ++gMain.state;
break; break;
case 5: case 5:
if (!MenuHelpers_LinkSomething()) if (!MenuHelpers_IsLinkActive())
ResetTasks(); ResetTasks();
++gMain.state; ++gMain.state;
break; break;
@@ -1118,7 +1118,7 @@ u8 GetPartyMenuType(void)
void Task_HandleChooseMonInput(u8 taskId) void Task_HandleChooseMonInput(u8 taskId)
{ {
if (!gPaletteFade.active && sub_80BF748() != TRUE) if (!gPaletteFade.active && MenuHelpers_ShouldWaitForLinkRecv() != TRUE)
{ {
s8 *slotPtr = GetCurrentPartySlotPtr(); s8 *slotPtr = GetCurrentPartySlotPtr();
@@ -1248,7 +1248,7 @@ static void HandleChooseMonCancel(u8 taskId, s8 *slotPtr)
DisplayCancelChooseMonYesNo(taskId); DisplayCancelChooseMonYesNo(taskId);
else else
{ {
if (!MenuHelpers_LinkSomething()) if (!MenuHelpers_IsLinkActive())
gSpecialVar_0x8004 = SLOT_CANCEL; gSpecialVar_0x8004 = SLOT_CANCEL;
gPartyMenuUseExitCallback = FALSE; gPartyMenuUseExitCallback = FALSE;
*slotPtr = SLOT_CANCEL; *slotPtr = SLOT_CANCEL;
@@ -1548,7 +1548,7 @@ bool8 IsPartyMenuTextPrinterActive(void)
static void Task_WaitForLinkAndReturnToChooseMon(u8 taskId) static void Task_WaitForLinkAndReturnToChooseMon(u8 taskId)
{ {
if (sub_80BF748() != TRUE) if (MenuHelpers_ShouldWaitForLinkRecv() != TRUE)
{ {
DisplayPartyMenuStdMessage(PARTY_MSG_CHOOSE_MON); DisplayPartyMenuStdMessage(PARTY_MSG_CHOOSE_MON);
gTasks[taskId].func = Task_HandleChooseMonInput; gTasks[taskId].func = Task_HandleChooseMonInput;
@@ -1561,7 +1561,7 @@ static void Task_ReturnToChooseMonAfterText(u8 taskId)
{ {
ClearStdWindowAndFrameToTransparent(6, FALSE); ClearStdWindowAndFrameToTransparent(6, FALSE);
ClearWindowTilemap(6); ClearWindowTilemap(6);
if (MenuHelpers_LinkSomething() == TRUE) if (MenuHelpers_IsLinkActive() == TRUE)
{ {
gTasks[taskId].func = Task_WaitForLinkAndReturnToChooseMon; gTasks[taskId].func = Task_WaitForLinkAndReturnToChooseMon;
} }
@@ -3061,7 +3061,7 @@ static void Task_TryCreateSelectionWindow(u8 taskId)
static void Task_HandleSelectionMenuInput(u8 taskId) static void Task_HandleSelectionMenuInput(u8 taskId)
{ {
if (!gPaletteFade.active && sub_80BF748() != TRUE) if (!gPaletteFade.active && MenuHelpers_ShouldWaitForLinkRecv() != TRUE)
{ {
s8 input; s8 input;
s16 *data = gTasks[taskId].data; s16 *data = gTasks[taskId].data;
@@ -3912,7 +3912,7 @@ static void CursorCB_FieldMove(u8 taskId)
return; return;
PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]);
PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]);
if (MenuHelpers_LinkSomething() == TRUE || InUnionRoom() == TRUE) if (MenuHelpers_IsLinkActive() == TRUE || InUnionRoom() == TRUE)
{ {
if (fieldMove == FIELD_MOVE_MILK_DRINK || fieldMove == FIELD_MOVE_SOFT_BOILED) if (fieldMove == FIELD_MOVE_MILK_DRINK || fieldMove == FIELD_MOVE_SOFT_BOILED)
DisplayPartyMenuStdMessage(PARTY_MSG_CANT_USE_HERE); DisplayPartyMenuStdMessage(PARTY_MSG_CANT_USE_HERE);
+4 -4
View File
@@ -1117,7 +1117,7 @@ static void Task_InputHandler_Info(u8 taskId)
sMonSummaryScreen->state3270 = PSS_STATE3270_PLAYCRY; sMonSummaryScreen->state3270 = PSS_STATE3270_PLAYCRY;
break; break;
case PSS_STATE3270_HANDLEINPUT: case PSS_STATE3270_HANDLEINPUT:
if (MenuHelpers_CallLinkSomething() == TRUE) if (IsActiveOverworldLinkBusy() == TRUE)
return; return;
else if (IsLinkRecvQueueAtOverworldMax() == TRUE) else if (IsLinkRecvQueueAtOverworldMax() == TRUE)
return; return;
@@ -3501,7 +3501,7 @@ static void Task_HandleInput_SelectMove(u8 taskId)
switch (sMonSummaryScreen->selectMoveInputHandlerState) switch (sMonSummaryScreen->selectMoveInputHandlerState)
{ {
case 0: case 0:
if (MenuHelpers_CallLinkSomething() == TRUE || IsLinkRecvQueueAtOverworldMax() == TRUE) if (IsActiveOverworldLinkBusy() == TRUE || IsLinkRecvQueueAtOverworldMax() == TRUE)
return; return;
if (JOY_NEW(DPAD_UP)) if (JOY_NEW(DPAD_UP))
@@ -3662,7 +3662,7 @@ static void Task_HandleInput_SelectMove(u8 taskId)
sMonSummaryScreen->selectMoveInputHandlerState = 3; sMonSummaryScreen->selectMoveInputHandlerState = 3;
break; break;
case 3: case 3:
if (MenuHelpers_CallLinkSomething() == TRUE || IsLinkRecvQueueAtOverworldMax() == TRUE) if (IsActiveOverworldLinkBusy() == TRUE || IsLinkRecvQueueAtOverworldMax() == TRUE)
return; return;
CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2); CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2);
@@ -3880,7 +3880,7 @@ static void Task_InputHandler_SelectOrForgetMove(u8 taskId)
sMonSummaryScreen->selectMoveInputHandlerState = 4; sMonSummaryScreen->selectMoveInputHandlerState = 4;
break; break;
case 4: case 4:
if (MenuHelpers_CallLinkSomething() == TRUE || IsLinkRecvQueueAtOverworldMax() == TRUE) if (IsActiveOverworldLinkBusy() == TRUE || IsLinkRecvQueueAtOverworldMax() == TRUE)
return; return;
CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2); CopyWindowToVram(sMonSummaryScreen->windowIds[POKESUM_WIN_RIGHT_PANE], 2);
+1 -1
View File
@@ -1275,7 +1275,7 @@ static void SortQuestLogInSav1(void)
void SaveQuestLogData(void) void SaveQuestLogData(void)
{ {
if (MenuHelpers_LinkSomething() != TRUE) if (MenuHelpers_IsLinkActive() != TRUE)
{ {
QuestLog_CutRecording(); QuestLog_CutRecording();
SortQuestLogInSav1(); SortQuestLogInSav1();
+1 -1
View File
@@ -189,7 +189,7 @@ void SetQuestLogEvent(u16 eventId, const u16 *eventData)
if (TrySetLinkQuestLogEvent(eventId, eventData) == TRUE) if (TrySetLinkQuestLogEvent(eventId, eventData) == TRUE)
return; return;
if (MenuHelpers_LinkSomething() == TRUE) if (MenuHelpers_IsLinkActive() == TRUE)
return; return;
if (InUnionRoom() == TRUE) if (InUnionRoom() == TRUE)
+3 -3
View File
@@ -319,7 +319,7 @@ static s8 DoDrawStartMenu(void)
break; break;
case 5: case 5:
sStartMenuCursorPos = Menu_InitCursor(GetStartMenuWindowId(), FONT_2, 0, 0, 15, sNumStartMenuItems, sStartMenuCursorPos); sStartMenuCursorPos = Menu_InitCursor(GetStartMenuWindowId(), FONT_2, 0, 0, 15, sNumStartMenuItems, sStartMenuCursorPos);
if (!MenuHelpers_LinkSomething() && InUnionRoom() != TRUE && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_HELP) if (!MenuHelpers_IsLinkActive() && InUnionRoom() != TRUE && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_HELP)
{ {
DrawHelpMessageWindowWithText(sStartMenuDescPointers[sStartMenuOrder[sStartMenuCursorPos]]); DrawHelpMessageWindowWithText(sStartMenuDescPointers[sStartMenuOrder[sStartMenuCursorPos]]);
} }
@@ -403,7 +403,7 @@ static bool8 StartCB_HandleInput(void)
{ {
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
sStartMenuCursorPos = Menu_MoveCursor(-1); sStartMenuCursorPos = Menu_MoveCursor(-1);
if (!MenuHelpers_LinkSomething() && InUnionRoom() != TRUE && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_HELP) if (!MenuHelpers_IsLinkActive() && InUnionRoom() != TRUE && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_HELP)
{ {
PrintTextOnHelpMessageWindow(sStartMenuDescPointers[sStartMenuOrder[sStartMenuCursorPos]], 2); PrintTextOnHelpMessageWindow(sStartMenuDescPointers[sStartMenuOrder[sStartMenuCursorPos]], 2);
} }
@@ -412,7 +412,7 @@ static bool8 StartCB_HandleInput(void)
{ {
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
sStartMenuCursorPos = Menu_MoveCursor(+1); sStartMenuCursorPos = Menu_MoveCursor(+1);
if (!MenuHelpers_LinkSomething() && InUnionRoom() != TRUE && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_HELP) if (!MenuHelpers_IsLinkActive() && InUnionRoom() != TRUE && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_HELP)
{ {
PrintTextOnHelpMessageWindow(sStartMenuDescPointers[sStartMenuOrder[sStartMenuCursorPos]], 2); PrintTextOnHelpMessageWindow(sStartMenuDescPointers[sStartMenuOrder[sStartMenuCursorPos]], 2);
} }
+5 -5
View File
@@ -449,11 +449,11 @@ static void CB2_SetUpTMCaseUI_Blocking(void)
{ {
while (1) while (1)
{ {
if (MenuHelpers_CallLinkSomething() == TRUE) if (IsActiveOverworldLinkBusy() == TRUE)
break; break;
if (DoSetUpTMCaseUI() == TRUE) if (DoSetUpTMCaseUI() == TRUE)
break; break;
if (MenuHelpers_LinkSomething() == TRUE) if (MenuHelpers_IsLinkActive() == TRUE)
break; break;
} }
} }
@@ -894,7 +894,7 @@ static void Task_HandleListInput(u8 taskId)
if (!gPaletteFade.active) if (!gPaletteFade.active)
{ {
if (MenuHelpers_CallLinkSomething() != TRUE) if (IsActiveOverworldLinkBusy() != TRUE)
{ {
input = ListMenu_ProcessInput(tListTaskId); input = ListMenu_ProcessInput(tListTaskId);
ListMenuGetScrollAndRow(tListTaskId, &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow); ListMenuGetScrollAndRow(tListTaskId, &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow);
@@ -946,7 +946,7 @@ static void Task_SelectedTMHM_Field(u8 taskId)
// Create context window // Create context window
TMCase_SetWindowBorder2(WIN_SELECTED_MSG); TMCase_SetWindowBorder2(WIN_SELECTED_MSG);
if (!MenuHelpers_LinkSomething() && InUnionRoom() != TRUE) if (!MenuHelpers_IsLinkActive() && InUnionRoom() != TRUE)
{ {
// Regular TM/HM context menu // Regular TM/HM context menu
AddContextMenu(&sTMCaseDynamicResources->contextMenuWindowId, WIN_USE_GIVE_EXIT); AddContextMenu(&sTMCaseDynamicResources->contextMenuWindowId, WIN_USE_GIVE_EXIT);
@@ -995,7 +995,7 @@ static void Task_ContextMenu_HandleInput(u8 taskId)
{ {
s8 input; s8 input;
if (MenuHelpers_CallLinkSomething() != TRUE) if (IsActiveOverworldLinkBusy() != TRUE)
{ {
input = Menu_ProcessInputNoWrapAround(); input = Menu_ProcessInputNoWrapAround();
switch (input) switch (input)