186 lines
4.7 KiB
C
186 lines
4.7 KiB
C
![]() |
#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);
|
||
|
}
|