summaryrefslogtreecommitdiff
path: root/src/mailbox_pc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailbox_pc.c')
-rw-r--r--src/mailbox_pc.c143
1 files changed, 143 insertions, 0 deletions
diff --git a/src/mailbox_pc.c b/src/mailbox_pc.c
new file mode 100644
index 000000000..3c72b9b5a
--- /dev/null
+++ b/src/mailbox_pc.c
@@ -0,0 +1,143 @@
+#include "global.h"
+#include "malloc.h"
+#include "window.h"
+#include "menu.h"
+#include "string_util.h"
+#include "new_menu_helpers.h"
+#include "list_menu.h"
+#include "player_pc.h"
+#include "strings.h"
+#include "menu_indicators.h"
+#include "sound.h"
+#include "constants/songs.h"
+
+EWRAM_DATA u8 gUnknown_203ADDC[3] = {};
+EWRAM_DATA struct ListMenuItem * gUnknown_203ADE0 = NULL;
+
+void sub_810ED6C(s32 itemIndex, bool8 onInit, struct ListMenu * list);
+
+static const struct WindowTemplate gUnknown_8453FE8[] = {
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 10,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x008
+ }, {
+ .bg = 0,
+ .tilemapLeft = 19,
+ .tilemapTop = 1,
+ .width = 10,
+ .height = 18,
+ .paletteNum = 15,
+ .baseBlock = 0x01c
+ }, {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 15,
+ .height = 8,
+ .paletteNum = 15,
+ .baseBlock = 0x01c
+ }
+};
+
+static const u8 gUnknown_8454000[3] = {1, 2, 3};
+static const u8 gUnknown_8454003[] = _("");
+
+bool8 sub_810EB6C(u8 num)
+{
+ u8 i;
+
+ gUnknown_203ADE0 = Alloc(sizeof(struct ListMenuItem) * (num + 1));
+ if (gUnknown_203ADE0 == NULL)
+ return FALSE;
+ for (i = 0; i < NELEMS(gUnknown_203ADDC); i++)
+ gUnknown_203ADDC[i] = 0xFF;
+ return TRUE;
+}
+
+u8 sub_810EBAC(u8 winIdx)
+{
+ if (gUnknown_203ADDC[winIdx] == 0xFF)
+ {
+ gUnknown_203ADDC[winIdx] = AddWindow(&gUnknown_8453FE8[winIdx]);
+ SetStdWindowBorderStyle(gUnknown_203ADDC[winIdx], 0);
+ }
+ return gUnknown_203ADDC[winIdx];
+}
+
+void sub_810EBE0(u8 winIdx)
+{
+ ClearStdWindowAndFrameToTransparent(gUnknown_203ADDC[winIdx], FALSE);
+ ClearWindowTilemap(gUnknown_203ADDC[winIdx]);
+ RemoveWindow(gUnknown_203ADDC[winIdx]);
+ gUnknown_203ADDC[winIdx] = 0xFF;
+}
+
+u8 sub_810EC10(u8 winIdx)
+{
+ return gUnknown_203ADDC[winIdx];
+}
+
+void sub_810EC20(u8 windowId, s32 itemId, u8 y)
+{
+ u8 strbuf[30];
+ if (itemId != -2)
+ {
+ StringCopy(strbuf, gSaveBlock1Ptr->mail[itemId + PARTY_SIZE].playerName);
+ if (StringLength(strbuf) <= 5)
+ ConvertInternationalString(strbuf, LANGUAGE_JAPANESE);
+ AddTextPrinterParameterized4(windowId, 2, 8, y, 0, 0, gUnknown_8454000, -1, strbuf);
+ }
+}
+
+u8 sub_810EC98(struct PlayerPC_Unk_203AAC4 * playerPcStruct)
+{
+ u16 i;
+ for (i = 0; i < playerPcStruct->unk_5; i++)
+ {
+ gUnknown_203ADE0[i].label = gUnknown_8454003;
+ gUnknown_203ADE0[i].index = i;
+ }
+ gUnknown_203ADE0[i].label = gFameCheckerText_Cancel;
+ gUnknown_203ADE0[i].index = -2;
+
+ gMultiuseListMenuTemplate.items = gUnknown_203ADE0;
+ gMultiuseListMenuTemplate.totalItems = playerPcStruct->unk_5 + 1;
+ gMultiuseListMenuTemplate.windowId = gUnknown_203ADDC[1];
+ gMultiuseListMenuTemplate.header_X = 0;
+ gMultiuseListMenuTemplate.item_X = GetMenuCursorDimensionByFont(2, 0);
+ gMultiuseListMenuTemplate.cursor_X = 0;
+ gMultiuseListMenuTemplate.lettersSpacing = 0;
+ gMultiuseListMenuTemplate.itemVerticalPadding = 2;
+ gMultiuseListMenuTemplate.maxShowed = 8;
+ gMultiuseListMenuTemplate.fontId = 2;
+ gMultiuseListMenuTemplate.upText_Y = 10;
+ gMultiuseListMenuTemplate.cursorPal = 2;
+ gMultiuseListMenuTemplate.fillValue = 1;
+ gMultiuseListMenuTemplate.cursorShadowPal = 3;
+ gMultiuseListMenuTemplate.moveCursorFunc = sub_810ED6C;
+ gMultiuseListMenuTemplate.itemPrintFunc = sub_810EC20;
+ gMultiuseListMenuTemplate.cursorKind = 0;
+ gMultiuseListMenuTemplate.scrollMultiple = 0;
+ return ListMenuInit(&gMultiuseListMenuTemplate, playerPcStruct->scrollOffset, playerPcStruct->selectedRow);
+}
+
+void sub_810ED6C(s32 itemIndex, bool8 onInit, struct ListMenu * list)
+{
+ if (onInit != TRUE)
+ PlaySE(SE_SELECT);
+}
+
+void sub_810ED80(struct PlayerPC_Unk_203AAC4 * playerPcStruct)
+{
+ playerPcStruct->unk_A = AddScrollIndicatorArrowPairParameterized(2, 0xC2, 0xC, 0x94, playerPcStruct->unk_5 - playerPcStruct->unk_4 + 1, 110, 110, &playerPcStruct->scrollOffset);
+}
+
+void sub_810EDB0(void)
+{
+ Free(gUnknown_203ADE0);
+}