diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-06-16 18:12:11 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-06-16 18:12:11 -0400 |
commit | d681d7f727e01f1e5b167f5042e9edd1542ae6c6 (patch) | |
tree | d08afe4f1968d1ea25c1666dcdc485fb42d449d8 /src/item_pc.c | |
parent | b624de76db01db7e8b2e65f054483bfe1ec4b590 (diff) |
item_pc: through sub_810E200
Diffstat (limited to 'src/item_pc.c')
-rw-r--r-- | src/item_pc.c | 127 |
1 files changed, 126 insertions, 1 deletions
diff --git a/src/item_pc.c b/src/item_pc.c index 8b0b67d2f..7a3fbd7af 100644 --- a/src/item_pc.c +++ b/src/item_pc.c @@ -6,6 +6,7 @@ #include "graphics.h" #include "help_system.h" #include "item.h" +#include "item_menu.h" #include "item_menu_icons.h" #include "list_menu.h" #include "main.h" @@ -76,6 +77,11 @@ void sub_810DDA4(void); void sub_810DE08(void); void sub_810DE94(u8); void sub_810DEA0(u8 taskId); +void sub_810DFE0(u8 taskId, s16 pos); +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_810E8F0(void); void sub_810EA34(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); @@ -368,7 +374,7 @@ void sub_810D878(void) for (i = 0; i < gUnknown_203ADBC->field_07; i++) { - gUnknown_203ADC4[i].label = ItemId_GetItem(gSaveBlock1Ptr->pcItems[i].itemId)->name; + gUnknown_203ADC4[i].label = ItemId_GetName(gSaveBlock1Ptr->pcItems[i].itemId); gUnknown_203ADC4[i].index = i; } gUnknown_203ADC4[i].label = gFameCheckerText_Cancel; @@ -598,3 +604,122 @@ void sub_810DE94(u8 a0) { gUnknown_203ADCC.field_8 = a0; } + +void sub_810DEA0(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + u16 scroll; + u16 row; + s32 input; + + if (!gPaletteFade.active && !sub_80A0A98()) + { + if (JOY_NEW(SELECT_BUTTON)) + { + ListMenuGetScrollAndRow(data[0], &scroll, &row); + if (scroll + row != gUnknown_203ADBC->field_07) + { + PlaySE(SE_SELECT); + sub_810DFE0(taskId, scroll + row); + return; + } + } + input = ListMenuHandleInput(data[0]); + ListMenuGetScrollAndRow(data[0], &gUnknown_203ADCC.field_4, &gUnknown_203ADCC.field_6); + switch (input) + { + case -1: + break; + case -2: + PlaySE(SE_SELECT); + sub_810DE94(0); + gTasks[taskId].func = sub_810DC8C; + break; + default: + PlaySE(SE_SELECT); + sub_810DE6C(1); + sub_810DBD0(); + data[1] = input; + data[2] = ItemPc_GetItemQuantityBySlotId(input); + sub_810DAB4(data[0], 2); + gTasks[taskId].func = sub_810E274; + break; + } + } +} + +void sub_810DFB0(u8 taskId) +{ + sub_810DE6C(0); + sub_810DB5C(); + gTasks[taskId].func = sub_810DEA0; +} + +void sub_810DFE0(u8 taskId, s16 pos) +{ + s16 * data = gTasks[taskId].data; + + sub_8107BD0(data[0], 16, 1); + data[1] = pos; + gUnknown_203ADBC->field_04 = pos; + StringCopy(gStringVar1, ItemId_GetName(ItemPc_GetItemIdBySlotId(data[1]))); + StringExpandPlaceholders(gStringVar4, gUnknown_841633F); + FillWindowPixelBuffer(1, 0x00); + sub_810EA34(1, 2, gStringVar4, 0, 3, 2, 3, 0, 0); + sub_80986A8(-32, ListMenuGetYCoordForPrintingArrowCursor(data[0])); + sub_8098660(0); + sub_810DAB4(data[0], 2); + gTasks[taskId].func = sub_810E0B4; +} + +void sub_810E0B4(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + ListMenuHandleInput(data[0]); + ListMenuGetScrollAndRow(data[0], &gUnknown_203ADCC.field_4, &gUnknown_203ADCC.field_6); + sub_80986A8(-32, ListMenuGetYCoordForPrintingArrowCursor(data[0])); + if (JOY_NEW(A_BUTTON | SELECT_BUTTON)) + { + PlaySE(SE_SELECT); + gUnknown_203ADBC->field_04 = 0xFF; + sub_810E160(taskId, gUnknown_203ADCC.field_4 + gUnknown_203ADCC.field_6); + } + else if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + gUnknown_203ADBC->field_04 = 0xFF; + sub_810E200(taskId, gUnknown_203ADCC.field_4 + gUnknown_203ADCC.field_6); + } +} + +void sub_810E160(u8 taskId, u32 pos) +{ + s16 * data = gTasks[taskId].data; + if (data[1] == pos || data[1] == pos - 1) + sub_810E200(taskId, pos); + else + { + sub_8108D60(gSaveBlock1Ptr->pcItems, data[1], pos); + DestroyListMenu(data[0], &gUnknown_203ADCC.field_4, &gUnknown_203ADCC.field_6); + if (data[1] < pos) + gUnknown_203ADCC.field_6--; + sub_810D878(); + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_203ADCC.field_4, gUnknown_203ADCC.field_6); + sub_8098660(1); + gTasks[taskId].func = sub_810DEA0; + } +} + +void sub_810E200(u8 taskId, u32 pos) +{ + s16 * data = gTasks[taskId].data; + + DestroyListMenu(data[0], &gUnknown_203ADCC.field_4, &gUnknown_203ADCC.field_6); + if (data[1] < pos) + gUnknown_203ADCC.field_6--; + sub_810D878(); + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_203ADCC.field_4, gUnknown_203ADCC.field_6); + sub_8098660(1); + gTasks[taskId].func = sub_810DEA0; +} |