diff options
Diffstat (limited to 'src/menu_unknown.c')
-rw-r--r-- | src/menu_unknown.c | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/src/menu_unknown.c b/src/menu_unknown.c new file mode 100644 index 000000000..21f42d264 --- /dev/null +++ b/src/menu_unknown.c @@ -0,0 +1,186 @@ +#include "global.h" +#include "alloc.h" +#include "international_string_util.h" +#include "menu.h" +#include "menu_unknown.h" +#include "player_pc.h" +#include "sound.h" +#include "strings.h" +#include "string_util.h" +#include "window.h" +#include "constants/songs.h" + +#define WINDOW_UNK_0 0 +#define WINDOW_UNK_1 1 +#define WINDOW_UNK_2 2 + +extern struct ListMenuItem *gUnknown_0203CF4C; +extern u8 gUnknown_0203CF48[3]; + +void sub_81D1E7C(s32 itemIndex, bool8 onInit, struct ListMenu *list); + +const struct WindowTemplate gUnknown_086253E8[] = +{ + [WINDOW_UNK_0] = { + //0x08010100, + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 8, + //0x00080F02, + .height = 2, + .paletteNum = 0xF, + .baseBlock = 0x8 + }, + [WINDOW_UNK_1] = { + //0x08 01 15 00, + .bg = 0, + .tilemapLeft = 21, + .tilemapTop = 1, + .width = 8, + //0x0018 0F 12, + .height = 18, + .paletteNum = 0xF, + .baseBlock = 0x18 + }, + [WINDOW_UNK_2] = { + //0x0B 01 01 00 + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 11, + //0x0018 0F 08 + .height = 8, + .paletteNum = 0xF, + .baseBlock = 0x18 + } +}; + +const u8 gUnknown_08625400[] = { + 1, 2, 3 +}; + +static const u8 sEmptyItemName[] = _(""); + +bool8 sub_81D1C44(u8 count) +{ + u32 i; + struct ListMenuItem **v1; + v1 = &gUnknown_0203CF4C; + *v1 = Alloc(count * sizeof(struct ListMenuItem) + sizeof(struct ListMenuItem)); + + if (gUnknown_0203CF4C == NULL) + return FALSE; + + for (i = 0; i < ARRAY_COUNT(gUnknown_0203CF48); i = (u8)(i + 1)) + { + gUnknown_0203CF48[i] |= 0xFF; + } + + return TRUE; +} + +u8 sub_81D1C84(u8 a0) +{ + struct WindowTemplate template; + + u8 windowId = gUnknown_0203CF48[a0]; + if (windowId == 0xFF) + { + if (a0 == WINDOW_UNK_2) + { + u32 v1; + u32 v2; + s32 v3; + + template = gUnknown_086253E8[WINDOW_UNK_2]; + v3 = GetMaxWidthInMenuTable(&gMailboxMailOptions[0], 4); + template.width = v3; + gUnknown_0203CF48[WINDOW_UNK_2] = AddWindow(&template); + } + else + { + gUnknown_0203CF48[a0] = AddWindow(&gUnknown_086253E8[a0]); + } + SetStandardWindowBorderStyle(gUnknown_0203CF48[a0], 0); + } + return gUnknown_0203CF48[a0]; +} + +void sub_81D1D04(u8 a0) +{ + sub_8198070(gUnknown_0203CF48[a0], 0); + ClearWindowTilemap(gUnknown_0203CF48[a0]); + RemoveWindow(gUnknown_0203CF48[a0]); + gUnknown_0203CF48[a0] = 0xFF; +} + +u8 sub_81D1D34(u8 a0) +{ + return gUnknown_0203CF48[a0]; +} + +void sub_81D1D44(u8 windowId, s32 itemId, u8 y) +{ + u8 buffer[30]; + u16 length; + + if (itemId == LIST_CANCEL) + return; + + StringCopy(buffer, gSaveBlock1Ptr->mail[6 + itemId].playerName); + sub_81DB52C(buffer); + length = StringLength(buffer); + if (length <= 5) + ConvertInternationalString(buffer, LANGUAGE_JAPANESE); + AddTextPrinterParameterized4(windowId, 1, 8, y, 0, 0, gUnknown_08625400, -1, buffer); +} + +u8 sub_81D1DC0(struct PlayerPCItemPageStruct *page) +{ + u16 i; + for (i = 0; i < page->count; i++) + { + gUnknown_0203CF4C[i].name = sEmptyItemName; + gUnknown_0203CF4C[i].id = i; + } + + gUnknown_0203CF4C[i].name = gText_Cancel2; + gUnknown_0203CF4C[i].id = LIST_CANCEL; + + gMultiuseListMenuTemplate.items = gUnknown_0203CF4C; + gMultiuseListMenuTemplate.totalItems = page->count + 1; + gMultiuseListMenuTemplate.windowId = gUnknown_0203CF48[1]; + gMultiuseListMenuTemplate.header_X = 0; + gMultiuseListMenuTemplate.item_X = 8; + gMultiuseListMenuTemplate.cursor_X = 0; + gMultiuseListMenuTemplate.maxShowed = 8; + gMultiuseListMenuTemplate.upText_Y = 9; + gMultiuseListMenuTemplate.cursorPal = 2; + gMultiuseListMenuTemplate.fillValue = 1; + gMultiuseListMenuTemplate.cursorShadowPal = 3; + gMultiuseListMenuTemplate.moveCursorFunc = sub_81D1E7C; + gMultiuseListMenuTemplate.itemPrintFunc = sub_81D1D44; + gMultiuseListMenuTemplate.fontId = 1; + gMultiuseListMenuTemplate.cursorKind = 0; + gMultiuseListMenuTemplate.lettersSpacing = 0; + gMultiuseListMenuTemplate.itemVerticalPadding = 0; + gMultiuseListMenuTemplate.scrollMultiple = LIST_NO_MULTIPLE_SCROLL; + return ListMenuInit(&gMultiuseListMenuTemplate, page->itemsAbove, page->cursorPos); +} + +void sub_81D1E7C(s32 itemIndex, bool8 onInit, struct ListMenu *list) +{ + if (onInit != TRUE) + PlaySE(SE_SELECT); +} + +void sub_81D1E90(struct PlayerPCItemPageStruct *page) +{ + page->scrollIndicatorId = AddScrollIndicatorArrowPairParameterized(2, 0xC8, 12, 0x94, page->count - page->pageItems + 1, 0x6E, 0x6E, &page->itemsAbove); +} + +void sub_81D1EC0(void) +{ + Free(gUnknown_0203CF4C); +}
\ No newline at end of file |