diff options
author | DizzyEggg <jajkodizzy@wp.pl> | 2018-03-03 01:02:07 +0100 |
---|---|---|
committer | DizzyEggg <jajkodizzy@wp.pl> | 2018-03-03 01:02:07 +0100 |
commit | 87274b9eedfcc1881a82b826dec1a6d63858ff33 (patch) | |
tree | 55ae0e381fd04491edf06f673fc8e6afcc8188c4 /src | |
parent | ae29f35afdd7c79b08a729be689248359153f587 (diff) |
more list menu work
Diffstat (limited to 'src')
-rw-r--r-- | src/list_menu.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/list_menu.c b/src/list_menu.c index 6df5d5d3a..91cc2532a 100644 --- a/src/list_menu.c +++ b/src/list_menu.c @@ -32,6 +32,7 @@ bool8 ListMenuChangeSelection(struct ListMenu *list, bool8 updateCursorAndCallCa void ListMenuPrintEntries(struct ListMenu *list, u16 startIndex, u16 yOffset, u16 count); void ListMenuDrawCursor(struct ListMenu *list); void ListMenuCallSelectionChangedCallback(struct ListMenu *list, u8 a2); +u8 ListMenuAddCursorObject(struct ListMenu *list, u32 cursorKind); // code void ListMenuDummyTask(u8 taskId) @@ -376,3 +377,49 @@ void ListMenuPrintEntries(struct ListMenu *list, u16 startIndex, u16 yOffset, u1 startIndex++; } } + +extern const u8 gText_SelectorArrow2[]; + +void ListMenuDrawCursor(struct ListMenu *list) +{ + u8 yMultiplier = GetFontAttribute(list->template.fontId, 1) + list->template.unk_16_3; + u8 x = list->template.cursor_Y; + u8 y = list->selectedRow * yMultiplier + list->template.upText_Y; + switch (list->template.cursorKind) + { + case 0: + ListMenuPrint(list, gText_SelectorArrow2, x, y); + break; + case 1: + break; + case 2: + if (list->unk_1E == 0xFF) + list->unk_1E = ListMenuAddCursorObject(list, 0); + ListMenuUpdateCursorObject(list->unk_1E, + GetWindowAttribute(list->template.windowId, WINDOW_TILEMAP_LEFT) * 8 - 1, + GetWindowAttribute(list->template.windowId, WINDOW_TILEMAP_TOP) * 8 + y - 1, 0); + break; + case 3: + if (list->unk_1E == 0xFF) + list->unk_1E = ListMenuAddCursorObject(list, 1); + ListMenuUpdateCursorObject(list->unk_1E, + GetWindowAttribute(list->template.windowId, WINDOW_TILEMAP_LEFT) * 8 + x, + GetWindowAttribute(list->template.windowId, WINDOW_TILEMAP_TOP) * 8 + y, 1); + break; + } +} + +u8 ListMenuAddCursorObject(struct ListMenu *list, u32 cursorKind) +{ + struct CursorStruct cursor; + + cursor.unk0 = 0; + cursor.unk1 = 0xA0; + cursor.unk2 = GetWindowAttribute(list->template.windowId, WINDOW_WIDTH) * 8 + 2; + cursor.unk4 = GetFontAttribute(list->template.fontId, 1) + 2; + cursor.unk6 = 0x4000; + cursor.unk8 = 0xFFFF; + cursor.unkA = 0xF; + + return ListMenuAddCursorObjectInternal(&cursor, cursorKind); +} |