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 | |
parent | b624de76db01db7e8b2e65f054483bfe1ec4b590 (diff) |
item_pc: through sub_810E200
Diffstat (limited to 'src')
-rw-r--r-- | src/item_pc.c | 127 | ||||
-rw-r--r-- | src/quest_log.c | 28 |
2 files changed, 140 insertions, 15 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; +} diff --git a/src/quest_log.c b/src/quest_log.c index ed061a8b6..258e6a688 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -3708,7 +3708,7 @@ const u16 * sub_8113FBC(const u16 * a0) case POCKET_ITEMS: case POCKET_POKE_BALLS: case POCKET_BERRY_POUCH: - StringCopy(gStringVar1, ItemId_GetItem(r5[0])->name); + StringCopy(gStringVar1, ItemId_GetName(r5[0])); if (r5[0] == ITEM_ESCAPE_ROPE) { sub_80C4DF8(gStringVar2, r5[2]); @@ -3725,7 +3725,7 @@ const u16 * sub_8113FBC(const u16 * a0) } break; case POCKET_KEY_ITEMS: - StringCopy(gStringVar1, ItemId_GetItem(r5[0])->name); + StringCopy(gStringVar1, ItemId_GetName(r5[0])); StringExpandPlaceholders(gStringVar4, gUnknown_841A220); break; case POCKET_TM_CASE: @@ -3771,7 +3771,7 @@ const u16 * sub_8114188(const u16 * a0) { const u16 * r4 = sub_8113E88(5, a0); QuestLog_AutoGetSpeciesName(r4[1], gStringVar1, 0); - StringCopy(gStringVar2, ItemId_GetItem(r4[0])->name); + StringCopy(gStringVar2, ItemId_GetName(r4[0])); StringExpandPlaceholders(gStringVar4, gUnknown_841AB74); r4 += 2; return r4; @@ -3787,7 +3787,7 @@ const u16 * sub_81141E4(const u16 * a0) const u16 * r4 = sub_8113E88(6, a0); QuestLog_AutoGetSpeciesName(r4[1], gStringVar1, 0); - StringCopy(gStringVar2, ItemId_GetItem(r4[0])->name); + StringCopy(gStringVar2, ItemId_GetName(r4[0])); StringExpandPlaceholders(gStringVar4, gUnknown_841AB8E); r4 += 2; return r4; @@ -3803,7 +3803,7 @@ const u16 * sub_8114240(const u16 * a0) const u16 * r4 = sub_8113E88(7, a0); QuestLog_AutoGetSpeciesName(r4[1], gStringVar2, 0); - StringCopy(gStringVar1, ItemId_GetItem(r4[0])->name); + StringCopy(gStringVar1, ItemId_GetName(r4[0])); StringExpandPlaceholders(gStringVar4, gUnknown_841A6A5); r4 += 2; return r4; @@ -3819,7 +3819,7 @@ const u16 * sub_811429C(const u16 * a0) const u16 * r4 = sub_8113E88(8, a0); QuestLog_AutoGetSpeciesName(r4[1], gStringVar1, 0); - StringCopy(gStringVar2, ItemId_GetItem(r4[0])->name); + StringCopy(gStringVar2, ItemId_GetName(r4[0])); StringExpandPlaceholders(gStringVar4, gUnknown_841A1CD); r4 += 2; return r4; @@ -3846,8 +3846,8 @@ const u16 * sub_8114324(const u16 * a0) { const u16 * r4 = sub_8113E88(9, a0); QuestLog_AutoGetSpeciesName(r4[2], gStringVar1, 0); - StringCopy(gStringVar2, ItemId_GetItem(r4[0])->name); - StringCopy(gStringVar3, ItemId_GetItem(r4[1])->name); + StringCopy(gStringVar2, ItemId_GetName(r4[0])); + StringCopy(gStringVar3, ItemId_GetName(r4[1])); StringExpandPlaceholders(gStringVar4, gUnknown_841A193); r4 += 3; return r4; @@ -3862,8 +3862,8 @@ const u16 * sub_8114394(const u16 * a0) { const u16 * r4 = sub_8113E88(10, a0); QuestLog_AutoGetSpeciesName(r4[2], gStringVar2, 0); - StringCopy(gStringVar3, ItemId_GetItem(r4[0])->name); - StringCopy(gStringVar1, ItemId_GetItem(r4[1])->name); + StringCopy(gStringVar3, ItemId_GetName(r4[0])); + StringCopy(gStringVar1, ItemId_GetName(r4[1])); StringExpandPlaceholders(gStringVar4, gUnknown_841A6E1); r4 += 3; return r4; @@ -4817,7 +4817,7 @@ const u16 * sub_8115518(const u16 * a0) UnkTextUtil_Reset(); sub_80C4DF8(gStringVar1, r7[0]); UnkTextUtil_SetPtrI(0, gStringVar1); - UnkTextUtil_SetPtrI(1, ItemId_GetItem(r4[0])->name); + UnkTextUtil_SetPtrI(1, ItemId_GetName(r4[0])); if (r4[1] < 2) UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A7DD); else @@ -4852,7 +4852,7 @@ const u16 * sub_81155E0(const u16 * a0) { if (r7[1] == 0) { UnkTextUtil_SetPtrI(0, gSaveBlock2Ptr->playerName); UnkTextUtil_SetPtrI(1, gStringVar1); - UnkTextUtil_SetPtrI(2, ItemId_GetItem(r5[0])->name); + UnkTextUtil_SetPtrI(2, ItemId_GetName(r5[0])); if (r5[1] == 1) UnkTextUtil_SetPtrI(3, gUnknown_841A8D4); else @@ -4867,7 +4867,7 @@ const u16 * sub_81155E0(const u16 * a0) { else { UnkTextUtil_SetPtrI(0, gStringVar1); - UnkTextUtil_SetPtrI(1, ItemId_GetItem(r5[0])->name); + UnkTextUtil_SetPtrI(1, ItemId_GetName(r5[0])); ConvertIntToDecimalStringN(gStringVar2, r6, STR_CONV_MODE_LEFT_ALIGN, 6); UnkTextUtil_SetPtrI(2, gStringVar2); UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A896); @@ -4890,7 +4890,7 @@ const u16 * sub_8115700(const u16 * a0) const u16 * r4 = sub_8113E88(40, a0); const u8 * r5 = (const u8 *)r4 + 2; sub_80C4DF8(gStringVar1, r5[0]); - StringCopy(gStringVar2, ItemId_GetItem(r4[0])->name); + StringCopy(gStringVar2, ItemId_GetName(r4[0])); StringExpandPlaceholders(gStringVar4, gUnknown_841B03F); return (const u16 *)(r5 + 2); } |