sync DisplayItemMessage

This commit is contained in:
cawtds 2025-06-04 22:37:15 +02:00
parent b899e9f87f
commit 84e3e1296a
3 changed files with 42 additions and 44 deletions

View File

@ -26,7 +26,7 @@ enum {
ITEMWIN_2,
ITEMWIN_YESNO_BOTTOMRIGHT,
ITEMWIN_YESNO_TOPRIGHT,
ITEMWIN_5,
ITEMWIN_MESSAGE,
ITEMWIN_6,
ITEMWIN_7,
ITEMWIN_8,
@ -90,7 +90,7 @@ void MoveItemSlotInList(struct ItemSlot * itemSlots_, u32 from, u32 to_);
void Task_FadeAndCloseBagMenu(u8 taskId);
void Bag_BeginCloseWin0Animation(void);
void ItemMenu_SetExitCallback(void (*)(void));
void DisplayItemMessageInBag(u8 taskId, u8 fontId, const u8 * string, TaskFunc followUpFunc);
void DisplayItemMessage(u8 taskId, u8 fontId, const u8 *str, void (*callback)(u8 taskId));
void Task_ReturnToBagFromContextMenu(u8 taskId);
void CB2_BagMenuFromBattle(void);
void InitOldManBag(void);
@ -107,7 +107,6 @@ void BagPrintTextOnWin1CenteredColor0(const u8 * str, u8 unused);
void BagDrawDepositItemTextBox(void);
u32 ShowBagWindow(u32 whichWindow);
void BagMenu_RemoveWindow(u8 whichWindow);
u8 OpenBagWindow(u8 whichWindow);
void CloseBagWindow(u8 whichWindow);
u8 GetBagWindow(u8 whichWindow);
void BagMenu_YesNo(u8 taskId, u8 windowType, const struct YesNoFuncTable *funcTable);

View File

@ -1,6 +1,5 @@
#include "global.h"
#include "gflib.h"
#include "bag.h"
#include "battle.h"
#include "battle_controllers.h"
#include "battle_main.h"
@ -90,6 +89,7 @@ static void CalculateInitialCursorPosAndItemsAbove(void);
static void UpdatePocketScrollPositions(void);
static void DestroyBagMenuResources(void);
static void Task_CloseBagMenu(u8 taskId);
static u8 AddItemMessageWindow(u8);
static void Task_AnimateWin0v(u8 taskId);
static void ShowBagOrBeginWin0OpenTask(void);
static void All_CalculateNItemsAndMaxShowed(void);
@ -442,7 +442,7 @@ static const struct WindowTemplate sWindowTemplates[] = {
.paletteNum = 15,
.baseBlock = 0x28a
},
[ITEMWIN_5] =
[ITEMWIN_MESSAGE] =
{
.bg = 0,
.tilemapLeft = 2,
@ -1256,13 +1256,13 @@ static void All_CalculateNItemsAndMaxShowed(void)
Pocket_CalculateNItemsAndMaxShowed(i);
}
void DisplayItemMessageInBag(u8 taskId, u8 fontId, const u8 * string, TaskFunc followUpFunc)
void DisplayItemMessage(u8 taskId, u8 fontId, const u8 *str, void (*callback)(u8 taskId))
{
s16 *data = gTasks[taskId].data;
data[10] = OpenBagWindow(ITEMWIN_5);
FillWindowPixelBuffer(data[10], PIXEL_FILL(1));
DisplayMessageAndContinueTask(taskId, data[10], 0x06D, 0x0D, fontId, GetPlayerTextSpeedDelay(), string, followUpFunc);
ScheduleBgCopyTilemapToVram(0);
tMsgWindowId = AddItemMessageWindow(ITEMWIN_MESSAGE);
FillWindowPixelBuffer(tMsgWindowId, PIXEL_FILL(1));
DisplayMessageAndContinueTask(taskId, tMsgWindowId, 0x06D, 13, fontId, GetPlayerTextSpeedDelay(), str, callback);
ScheduleBgCopyTilemapToVram(sWindowTemplates[ITEMWIN_MESSAGE].bg);
}
void ItemMenu_SetExitCallback(MainCallback cb)
@ -1844,7 +1844,7 @@ static void Task_ItemMenuAction_Give(u8 taskId)
PutWindowTilemap(1);
CopyWindowToVram(0, COPYWIN_MAP);
if (!IsWritingMailAllowed(itemId))
DisplayItemMessageInBag(taskId, FONT_NORMAL, gText_CantWriteMailHere, Task_WaitAButtonAndCloseContextMenu);
DisplayItemMessage(taskId, FONT_NORMAL, gText_CantWriteMailHere, Task_WaitAButtonAndCloseContextMenu);
else if (GetItemImportance(itemId) == 0)
{
if (CalculatePlayerPartyCount() == 0)
@ -1863,14 +1863,14 @@ static void Task_ItemMenuAction_Give(u8 taskId)
static void Task_PrintThereIsNoPokemon(u8 taskId)
{
DisplayItemMessageInBag(taskId, FONT_NORMAL, gText_ThereIsNoPokemon, Task_WaitAButtonAndCloseContextMenu);
DisplayItemMessage(taskId, FONT_NORMAL, gText_ThereIsNoPokemon, Task_WaitAButtonAndCloseContextMenu);
}
static void Task_PrintItemCantBeHeld(u8 taskId)
{
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_ItemCantBeHeld);
DisplayItemMessageInBag(taskId, FONT_NORMAL, gStringVar4, Task_WaitAButtonAndCloseContextMenu);
DisplayItemMessage(taskId, FONT_NORMAL, gStringVar4, Task_WaitAButtonAndCloseContextMenu);
}
static void Task_WaitAButtonAndCloseContextMenu(u8 taskId)
@ -1885,7 +1885,7 @@ static void Task_WaitAButtonAndCloseContextMenu(u8 taskId)
void Task_ReturnToBagFromContextMenu(u8 taskId)
{
s16 *data = gTasks[taskId].data;
CloseBagWindow(ITEMWIN_5);
CloseBagWindow(ITEMWIN_MESSAGE);
DestroyListMenuTask(data[0], &gBagPosition.scrollPosition[gBagPosition.pocket], &gBagPosition.cursorPosition[gBagPosition.pocket]);
Pocket_CalculateNItemsAndMaxShowed(gBagPosition.pocket);
PocketCalculateInitialCursorPosAndItemsAbove(gBagPosition.pocket);
@ -1949,7 +1949,7 @@ static void Task_ItemContext_FieldGive(u8 taskId)
u16 itemId = BagGetItemIdByPocketPosition(gBagPosition.pocket + 1, data[1]);
if (!IsWritingMailAllowed(itemId))
{
DisplayItemMessageInBag(taskId, FONT_NORMAL, gText_CantWriteMailHere, Task_WaitAButtonAndCloseContextMenu);
DisplayItemMessage(taskId, FONT_NORMAL, gText_CantWriteMailHere, Task_WaitAButtonAndCloseContextMenu);
}
else if (itemId == ITEM_TM_CASE)
{
@ -1993,7 +1993,7 @@ static void Task_ItemContext_PcBoxGive(u8 taskId)
u16 itemId = BagGetItemIdByPocketPosition(gBagPosition.pocket + 1, data[1]);
if (ItemIsMail(itemId) == TRUE)
{
DisplayItemMessageInBag(taskId, FONT_NORMAL, gText_CantWriteMailHere, Task_WaitAButtonAndCloseContextMenu);
DisplayItemMessage(taskId, FONT_NORMAL, gText_CantWriteMailHere, Task_WaitAButtonAndCloseContextMenu);
}
else if (itemId == ITEM_TM_CASE)
{
@ -2048,7 +2048,7 @@ static void Task_ItemContext_Sell(u8 taskId)
{
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_OhNoICantBuyThat);
DisplayItemMessageInBag(taskId, GetDialogBoxFontId(), gStringVar4, Task_ReturnToBagFromContextMenu);
DisplayItemMessage(taskId, GetDialogBoxFontId(), gStringVar4, Task_ReturnToBagFromContextMenu);
}
else
{
@ -2064,7 +2064,7 @@ static void Task_ItemContext_Sell(u8 taskId)
data[2] = 99;
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_HowManyWouldYouLikeToSell);
DisplayItemMessageInBag(taskId, GetDialogBoxFontId(), gStringVar4, Task_InitSaleQuantitySelectInterface);
DisplayItemMessage(taskId, GetDialogBoxFontId(), gStringVar4, Task_InitSaleQuantitySelectInterface);
}
}
}
@ -2091,7 +2091,7 @@ static void Task_PrintSaleConfirmationText(u8 taskId)
s16 *data = gTasks[taskId].data;
ConvertIntToDecimalStringN(gStringVar3, (GetItemPrice(BagGetItemIdByPocketPosition(gBagPosition.pocket + 1, data[1])) / ITEM_SELL_FACTOR) * data[8], STR_CONV_MODE_LEFT_ALIGN, 6);
StringExpandPlaceholders(gStringVar4, gText_ICanPayThisMuch_WouldThatBeOkay);
DisplayItemMessageInBag(taskId, GetDialogBoxFontId(), gStringVar4, Task_ShowSellYesNoMenu);
DisplayItemMessage(taskId, GetDialogBoxFontId(), gStringVar4, Task_ShowSellYesNoMenu);
}
static void Task_ShowSellYesNoMenu(u8 taskId)
@ -2103,7 +2103,7 @@ static void Task_SellItem_No(u8 taskId)
{
s16 *data = gTasks[taskId].data;
BagMenu_RemoveWindow(ITEMWIN_2);
CloseBagWindow(ITEMWIN_5);
CloseBagWindow(ITEMWIN_MESSAGE);
PutWindowTilemap(2);
PutWindowTilemap(0);
PutWindowTilemap(1);
@ -2152,7 +2152,7 @@ static void Task_SelectQuantityToSell(u8 taskId)
PlaySE(SE_SELECT);
BagMenu_RemoveWindow(ITEMWIN_1);
BagMenu_RemoveWindow(ITEMWIN_2);
CloseBagWindow(ITEMWIN_5);
CloseBagWindow(ITEMWIN_MESSAGE);
PutWindowTilemap(2);
PutWindowTilemap(0);
PutWindowTilemap(1);
@ -2171,7 +2171,7 @@ static void Task_SellItem_Yes(u8 taskId)
CopyItemName(gSpecialVar_ItemId, gStringVar1);
ConvertIntToDecimalStringN(gStringVar3, (GetItemPrice(BagGetItemIdByPocketPosition(gBagPosition.pocket + 1, data[1])) / ITEM_SELL_FACTOR) * data[8], STR_CONV_MODE_LEFT_ALIGN, 6);
StringExpandPlaceholders(gStringVar4, gText_TurnedOverItemsWorthYen);
DisplayItemMessageInBag(taskId, FONT_NORMAL, gStringVar4, Task_FinalizeSaleToShop);
DisplayItemMessage(taskId, FONT_NORMAL, gStringVar4, Task_FinalizeSaleToShop);
}
static void Task_FinalizeSaleToShop(u8 taskId)
@ -2264,7 +2264,7 @@ static void Task_TryDoItemDeposit(u8 taskId)
}
else
{
DisplayItemMessageInBag(taskId, FONT_NORMAL, gText_NoRoomToStoreItems, Task_WaitAButtonAndCloseContextMenu);
DisplayItemMessage(taskId, FONT_NORMAL, gText_NoRoomToStoreItems, Task_WaitAButtonAndCloseContextMenu);
}
}
@ -2745,13 +2745,12 @@ void BagMenu_RemoveWindow(u8 whichWindow)
}
}
u8 OpenBagWindow(u8 whichWindow)
{
if (gBagMenu->windowIds[whichWindow] == WINDOW_NONE)
{
gBagMenu->windowIds[whichWindow] = AddWindow(&sWindowTemplates[whichWindow]);
}
return gBagMenu->windowIds[whichWindow];
static u8 AddItemMessageWindow(u8 windowType)
{
u8 *windowId = &gBagMenu->windowIds[windowType];
if (*windowId == WINDOW_NONE)
*windowId = AddWindow(&sWindowTemplates[windowType]);
return *windowId;
}
void CloseBagWindow(u8 whichWindow)

View File

@ -137,7 +137,7 @@ static void DisplayItemMessageInCurrentContext(u8 taskId, bool8 inField, u8 font
{
StringExpandPlaceholders(gStringVar4, str);
if (inField == FALSE)
DisplayItemMessageInBag(taskId, fontId, gStringVar4, Task_ReturnToBagFromContextMenu);
DisplayItemMessage(taskId, fontId, gStringVar4, Task_ReturnToBagFromContextMenu);
else
DisplayItemMessageOnField(taskId, fontId, gStringVar4, Task_ItemUse_CloseMessageBoxAndReturnToField);
}
@ -227,7 +227,7 @@ void ItemUseOutOfBattle_ExpShare(u8 taskId)
if (!gTasks[taskId].data[2]) // to account for pressing select in the overworld
DisplayItemMessageOnField(taskId, FONT_NORMAL, gText_ExpShareOff, Task_ItemUse_CloseMessageBoxAndReturnToField);
else
DisplayItemMessageInBag(taskId, FONT_NORMAL, gText_ExpShareOff, Task_ReturnToBagFromContextMenu);
DisplayItemMessage(taskId, FONT_NORMAL, gText_ExpShareOff, Task_ReturnToBagFromContextMenu);
}
else
{
@ -235,7 +235,7 @@ void ItemUseOutOfBattle_ExpShare(u8 taskId)
if (!gTasks[taskId].data[2]) // to account for pressing select in the overworld
DisplayItemMessageOnField(taskId, FONT_NORMAL, gText_ExpShareOn, Task_ItemUse_CloseMessageBoxAndReturnToField);
else
DisplayItemMessageInBag(taskId, FONT_NORMAL, gText_ExpShareOn, Task_ReturnToBagFromContextMenu);
DisplayItemMessage(taskId, FONT_NORMAL, gText_ExpShareOn, Task_ReturnToBagFromContextMenu);
}
FlagToggle(I_EXP_SHARE_FLAG);
#else
@ -415,7 +415,7 @@ void ItemUseOutOfBattle_CoinCase(u8 taskId)
StringExpandPlaceholders(gStringVar4, gText_CoinCase);
ItemUse_SetQuestLogEvent(QL_EVENT_USED_ITEM, NULL, gSpecialVar_ItemId, 0xFFFF);
if (gTasks[taskId].tIsFieldUse == FALSE)
DisplayItemMessageInBag(taskId, FONT_NORMAL, gStringVar4, Task_ReturnToBagFromContextMenu);
DisplayItemMessage(taskId, FONT_NORMAL, gStringVar4, Task_ReturnToBagFromContextMenu);
else
DisplayItemMessageOnField(taskId, FONT_NORMAL, gStringVar4, Task_ItemUse_CloseMessageBoxAndReturnToField);
}
@ -432,7 +432,7 @@ void ItemUseOutOfBattle_PowderJar(u8 taskId)
StringExpandPlaceholders(gStringVar4, gText_PowderQty);
ItemUse_SetQuestLogEvent(QL_EVENT_USED_ITEM, NULL, gSpecialVar_ItemId, 0xFFFF);
if (gTasks[taskId].tIsFieldUse == FALSE)
DisplayItemMessageInBag(taskId, FONT_NORMAL, gStringVar4, Task_ReturnToBagFromContextMenu);
DisplayItemMessage(taskId, FONT_NORMAL, gStringVar4, Task_ReturnToBagFromContextMenu);
else
DisplayItemMessageOnField(taskId, FONT_NORMAL, gStringVar4, Task_ItemUse_CloseMessageBoxAndReturnToField);
}
@ -499,14 +499,14 @@ void ItemUseOutOfBattle_PokeFlute(u8 taskId)
{
ItemUse_SetQuestLogEvent(QL_EVENT_USED_ITEM, NULL, gSpecialVar_ItemId, 0xFFFF);
if (gTasks[taskId].tIsFieldUse == FALSE)
DisplayItemMessageInBag(taskId, FONT_NORMAL, gText_PlayedPokeFlute, Task_PlayPokeFlute);
DisplayItemMessage(taskId, FONT_NORMAL, gText_PlayedPokeFlute, Task_PlayPokeFlute);
else
DisplayItemMessageOnField(taskId, FONT_NORMAL, gText_PlayedPokeFlute, Task_PlayPokeFlute);
}
else
{
if (gTasks[taskId].tIsFieldUse == FALSE)
DisplayItemMessageInBag(taskId, FONT_NORMAL, gText_PlayedPokeFluteCatchy, Task_ReturnToBagFromContextMenu);
DisplayItemMessage(taskId, FONT_NORMAL, gText_PlayedPokeFluteCatchy, Task_ReturnToBagFromContextMenu);
else
DisplayItemMessageOnField(taskId, FONT_NORMAL, gText_PlayedPokeFluteCatchy, Task_ItemUse_CloseMessageBoxAndReturnToField);
}
@ -523,7 +523,7 @@ static void Task_DisplayPokeFluteMessage(u8 taskId)
if (WaitFanfare(FALSE))
{
if (gTasks[taskId].tIsFieldUse == FALSE)
DisplayItemMessageInBag(taskId, FONT_NORMAL, gText_PokeFluteAwakenedMon, Task_ReturnToBagFromContextMenu);
DisplayItemMessage(taskId, FONT_NORMAL, gText_PokeFluteAwakenedMon, Task_ReturnToBagFromContextMenu);
else
DisplayItemMessageOnField(taskId, FONT_NORMAL, gText_PokeFluteAwakenedMon, Task_ItemUse_CloseMessageBoxAndReturnToField);
}
@ -723,7 +723,7 @@ void ItemUseOutOfBattle_Repel(u8 taskId)
}
else
// An earlier repel is still in effect
DisplayItemMessageInBag(taskId, FONT_NORMAL, gText_RepelEffectsLingered, Task_ReturnToBagFromContextMenu);
DisplayItemMessage(taskId, FONT_NORMAL, gText_RepelEffectsLingered, Task_ReturnToBagFromContextMenu);
}
static void Task_UseRepel(u8 taskId)
@ -736,7 +736,7 @@ static void Task_UseRepel(u8 taskId)
VarSet(VAR_LAST_REPEL_LURE_USED, gSpecialVar_ItemId);
#endif
RemoveUsedItem();
DisplayItemMessageInBag(taskId, FONT_NORMAL, gStringVar4, Task_ReturnToBagFromContextMenu);
DisplayItemMessage(taskId, FONT_NORMAL, gStringVar4, Task_ReturnToBagFromContextMenu);
}
}
@ -745,7 +745,7 @@ void ItemUseOutOfBattle_Lure(u8 taskId)
if (LURE_STEP_COUNT == 0)
gTasks[taskId].func = Task_StartUseLure;
else
DisplayItemMessageInBag(taskId, FONT_NORMAL, gText_LureEffectsLingered, Task_ReturnToBagFromContextMenu);
DisplayItemMessage(taskId, FONT_NORMAL, gText_LureEffectsLingered, Task_ReturnToBagFromContextMenu);
}
static void Task_StartUseLure(u8 taskId)
@ -769,7 +769,7 @@ static void Task_UseLure(u8 taskId)
VarSet(VAR_LAST_REPEL_LURE_USED, gSpecialVar_ItemId);
#endif
RemoveUsedItem();
DisplayItemMessageInBag(taskId, FONT_NORMAL, gStringVar4, Task_ReturnToBagFromContextMenu);
DisplayItemMessage(taskId, FONT_NORMAL, gStringVar4, Task_ReturnToBagFromContextMenu);
}
}
@ -823,7 +823,7 @@ static void Task_UsedBlackWhiteFlute(u8 taskId)
if (++gTasks[taskId].data[8] > 7)
{
PlaySE(SE_GLASS_FLUTE);
DisplayItemMessageInBag(taskId, FONT_NORMAL, gStringVar4, Task_ReturnToBagFromContextMenu);
DisplayItemMessage(taskId, FONT_NORMAL, gStringVar4, Task_ReturnToBagFromContextMenu);
}
}
@ -945,7 +945,7 @@ void ItemUseInBattle_BagMenu(u8 taskId)
}
else if (CannotUseItemsInBattle(gSpecialVar_ItemId, NULL))
{
DisplayItemMessageInBag(taskId, FONT_NORMAL, gStringVar4, Task_ReturnToBagFromContextMenu);
DisplayItemMessage(taskId, FONT_NORMAL, gStringVar4, Task_ReturnToBagFromContextMenu);
}
else
{