blob: 0be1a32a6217da265be004e345429d0aa75ccb43 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
#ifndef POKEDIAMOND_LIST_MENU_H
#define POKEDIAMOND_LIST_MENU_H
#include "text.h"
#define LIST_HEADER -3
#define LIST_CANCEL -2
#define LIST_NOTHING_CHOSEN -1
#define LIST_NO_MULTIPLE_SCROLL 0
#define LIST_MULTIPLE_SCROLL_DPAD 1
#define LIST_MULTIPLE_SCROLL_L_R 2
struct ListMenu;
// TODO: Move to its own header, and fill it out
struct ListMenuCursor
{
// ???
};
struct ListMenuItem
{
const u16 * text;
s32 index;
};
// TODO: Document remaining fields.
// A lot of these are named based on similar fields in gen 3.
typedef void (*LM_MOVECURSORFUNC)(s32, u8, struct ListMenu *);
typedef void (*LM_ITEMPRINTFUNC)(struct Window *, s32, u8);
struct ListMenuTemplate
{
/*0x00*/ struct ListMenuItem * items;
/*0x04*/ LM_MOVECURSORFUNC moveCursorFunc;
/*0x08*/ LM_ITEMPRINTFUNC itemPrintFunc;
/*0x0C*/ struct Window * window;
/*0x10*/ u16 totalItems;
/*0x12*/ u16 maxShowed;
/*0x14*/ u8 header_X;
/*0x15*/ u8 item_X;
/*0x16*/ u8 cursor_X;
/*0x17*/ u8 upText_Y:4;
u8 cursorPal:4;
/*0x18*/ u8 fillValue:4;
u8 cursorShadowPal:4;
/*0x1A*/ u16 lettersSpacing:3;
u16 itemVerticalPadding:4;
u16 scrollMultiple:2;
u16 fontId:6;
u16 unk_1B_7:1;
/*0x1C*/ u32 unk_1C;
};
struct ListMenu
{
/*0x00*/ struct ListMenuTemplate template;
// ListMenuOverride from gen 3
/*0x20*/ u8 cursorPal:4;
u8 fillValue:4;
/*0x21*/ u8 cursorShadowPal:4;
u8 unk_21_4:4;
/*0x22*/ u8 lettersSpacing:6;
/*0x23*/ u8 unk_23;
/*0x24*/ u8 fontId:7;
u8 overrideEnabled:1;
/*0x28*/ struct ListMenuCursor *cursor;
/*0x2c*/ u16 cursorPos;
/*0x2e*/ u16 itemsAbove;
/*0x30*/ u8 unk_30;
/*0x31*/ u8 unk_31;
/*0x32*/ u8 taskId;
/*0x33*/ u8 unk_33;
/*0x34*/ u8 heap_id;
};
THUMB_FUNC struct ListMenu * ListMenuInit(const struct ListMenuTemplate * template, u16 cursorPos, u16 itemsAbove, u32 heap_id);
THUMB_FUNC s32 ListMenu_ProcessInput(struct ListMenu * list);
THUMB_FUNC void DestroyListMenu(struct ListMenu * list, u16 * cursorPos, u16 * itemsAbove);
THUMB_FUNC void RedrawListMenu(struct ListMenu * list);
#endif // POKEDIAMOND_LIST_MENU_H
|