summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/item_pc.c124
1 files changed, 124 insertions, 0 deletions
diff --git a/src/item_pc.c b/src/item_pc.c
index 7a3fbd7af..753463761 100644
--- a/src/item_pc.c
+++ b/src/item_pc.c
@@ -9,6 +9,7 @@
#include "item_menu.h"
#include "item_menu_icons.h"
#include "list_menu.h"
+#include "item_use.h"
#include "main.h"
#include "malloc.h"
#include "menu.h"
@@ -82,8 +83,21 @@ void sub_810E0B4(u8 taskId);
void sub_810E160(u8 taskId, u32 pos);
void sub_810E200(u8 taskId, u32 pos);
void sub_810E274(u8 taskId);
+void sub_810E358(u8 taskId);
+void sub_810E3A4(u8 taskId);
+void sub_810E418(u8 taskId);
+void sub_810E4F4(u8 taskId);
+void sub_810E548(u8 taskId);
+void sub_810E578(u8 taskId);
+void sub_810E5E0(u16 itemId);
+void sub_810E6D8(u8 taskId);
+void sub_810E79C(u8 taskId);
+void sub_810E8A0(u8 taskId);
void sub_810E8F0(void);
void sub_810EA34(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx);
+void sub_810EA9C(u8 windowId);
+u8 sub_810EAB4(u8 idx);
+void sub_810EAF0(u8 idx);
const struct BgTemplate gUnknown_8453F6C[2] = {
{
@@ -99,6 +113,12 @@ const struct BgTemplate gUnknown_8453F6C[2] = {
}
};
+const struct MenuAction gUnknown_8453F74[] = {
+ {gUnknown_84178B5, {.void_u8 = sub_810E3A4}},
+ {gOtherText_Give, {.void_u8 = sub_810E79C}},
+ {gFameCheckerText_Cancel, {.void_u8 = sub_810E8A0}}
+};
+
void sub_810D3F4(u8 a0, MainCallback callback)
{
u8 i;
@@ -723,3 +743,107 @@ void sub_810E200(u8 taskId, u32 pos)
sub_8098660(1);
gTasks[taskId].func = sub_810DEA0;
}
+
+void sub_810E274(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u8 windowId;
+
+ sub_810EA9C(4);
+ windowId = sub_810EAB4(0);
+ PrintTextArray(4, 2, 8, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, 3, gUnknown_8453F74);
+ ProgramAndPlaceMenuCursorOnWindow(4, 2, 0, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, 3, 0);
+ CopyItemName(ItemPc_GetItemIdBySlotId(data[1]), gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gUnknown_84162FF);
+ sub_810EA34(windowId, 2, gStringVar4, 0, 2, 1, 0, 0, 1);
+ schedule_bg_copy_tilemap_to_vram(0);
+ gTasks[taskId].func = sub_810E358;
+}
+
+void sub_810E358(u8 taskId)
+{
+ s8 input = ProcessMenuInputNoWrapAround();
+ switch (input)
+ {
+ case -1:
+ PlaySE(SE_SELECT);
+ sub_810E8A0(taskId);
+ break;
+ case -2:
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ gUnknown_8453F74[input].func.void_u8(taskId);
+ }
+}
+
+void sub_810E3A4(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ sub_810F4D8(4, 0);
+ sub_810EAF0(0);
+ ClearWindowTilemap(4);
+ data[8] = 1;
+ if (ItemPc_GetItemQuantityBySlotId(data[1]) == 1)
+ {
+ PutWindowTilemap(0);
+ schedule_bg_copy_tilemap_to_vram(0);
+ sub_810E418(taskId);
+ }
+ else
+ {
+ PutWindowTilemap(0);
+ sub_810E5E0(data[1]);
+ sub_810DB98();
+ gTasks[taskId].func = sub_810E6D8;
+ }
+}
+
+void sub_810E418(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u16 itemId = ItemPc_GetItemIdBySlotId(data[1]);
+ u8 windowId;
+
+ if (AddBagItem(itemId, data[8]) == TRUE)
+ {
+ sub_80A2294(29, 0, itemId, 0xFFFF);
+ CopyItemName(itemId, gStringVar1);
+ ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringExpandPlaceholders(gStringVar4, gUnknown_84177C5);
+ windowId = sub_810EAB4(2);
+ AddTextPrinterParameterized(windowId, 2, gStringVar4, 0, 2, 0, NULL);
+ gTasks[taskId].func = sub_810E4F4;
+ }
+ else
+ {
+ windowId = sub_810EAB4(2);
+ AddTextPrinterParameterized(windowId, 2, gUnknown_841778A, 0, 2, 0, NULL);
+ gTasks[taskId].func = sub_810E548;
+ }
+}
+
+void sub_810E4F4(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u16 itemId;
+
+ if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ itemId = ItemPc_GetItemIdBySlotId(data[1]);
+ sub_809A460(itemId, data[8]);
+ sub_809A4E8();
+ sub_810E578(taskId);
+ }
+}
+
+void sub_810E548(u8 taskId)
+{
+ if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ sub_810E578(taskId);
+ }
+}