2#include "message_ids.h"
10static s16 gPauseItemsItemIDs[100];
11static s32 gPauseItemsCurrentPage;
14static s32 gPauseItemsSelectedIndex;
16static s32 gPauseItemsSelectedItem;
17static s16 gPauseItemsNumItems;
19static s32 gPauseItemsCurrentScrollPos;
20static s32 gPauseItemsTargetScrollPos;
21static s32 gPauseItemsTargetScrollIndex;
22static s32 gPauseItemsLevel;
23static s32 gPauseItemsCurrentTab;
26#define ITEM_NONE_STANDIN 0x7FFE
27#define ITEM_INVALID 0x7FFF
40 .pos = { .x = 3, .y = 16 },
93 if (y < gPauseItemsCurrentScrollPos - 32) {
96 return y < gPauseItemsCurrentScrollPos + 128;
100 return beforeY - gPauseItemsCurrentScrollPos;
136 draw_box(
DRAW_FLAG_NO_CLIP, &
gPauseWS_18,
baseX + 68,
baseY, 0, width - 68, height, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0,
SCREEN_WIDTH,
SCREEN_HEIGHT, 0);
167 for (i = 0; i < 3; i++) {
172 if (!
page->enabled) {
191 gPauseItemsLevel == 1 &&
236 itemIcon = gPauseItemsHIDs[19];
288 if (gPauseItemsCurrentPage > 0) {
293 if (gPauseItemsPages [gPauseItemsCurrentPage + 1].enabled) {
300 91, 34, 255, gPauseItemsCurrentTab == 1 ? 128 : 0, 0, 0,
305 if (gPauseItemsCurrentTab == 0) {
310 if (gPauseItemsCurrentTab == 1) {
316 91, 34, 255, gPauseItemsCurrentTab == 0 ? 128 : 0, 0, 0,
321 if (gPauseItemsCurrentTab == 1) {
326 if (gPauseItemsCurrentTab == 0) {
332 if (gPauseItemsLevel == 0) {
335 selectedPosX =
pause_items_get_pos_x(gPauseItemsCurrentPage, gPauseItemsSelectedIndex - gPauseItemsPages[gPauseItemsCurrentPage].listStart * gPauseItemsPages[gPauseItemsCurrentPage].numCols);
336 selectedPosY =
pause_items_get_pos_y(gPauseItemsCurrentPage, gPauseItemsSelectedIndex - gPauseItemsPages[gPauseItemsCurrentPage].listStart * gPauseItemsPages[gPauseItemsCurrentPage].numCols);
345 if (gPauseItemsCurrentScrollPos != gPauseItemsTargetScrollPos) {
367 if (invItems ==
TRUE) {
396 page = gPauseItemsPages;
397 gPauseItemsSelectedIndex = 0;
398 gPauseItemsSelectedItem = 0;
400 gPauseItemsTargetScrollIndex = 0;
401 gPauseItemsCurrentPage = 0;
403 for (i = 0; i < gPauseItemsNumItems / 8; i++,
page++) {
404 page->listStart = i * 8;
408 page->startIndex = i * 8;
412 if ((gPauseItemsNumItems % 8) != 0) {
413 page->listStart = i * 8;
416 page->startIndex = i * 8;
417 page->count = gPauseItemsNumItems % 8;
433 gPauseItemsLevel = 0;
434 gPauseItemsCurrentTab = 0;
437 for (i = 0; i <
ARRAY_COUNT(gPauseItemsHIDs); i++) {
453 s32 row = gPauseItemsSelectedIndex / gPauseItemsPages[gPauseItemsCurrentPage].
numCols;
454 s32 column = gPauseItemsSelectedIndex % gPauseItemsPages[gPauseItemsCurrentPage].
numCols;
460 gPauseItemsLevel = 1;
466 if (gPauseItemsNumItems != 0) {
467 if (gPauseItemsLevel == 0) {
468 oldTab = gPauseItemsCurrentTab;
470 gPauseItemsCurrentTab ^= 1;
473 if (
oldTab != gPauseItemsCurrentTab) {
485 if (row < gPauseItemsPages[gPauseItemsCurrentPage].listStart) {
486 gPauseItemsCurrentPage--;
489 gPauseItemsCurrentPage--;
490 if (gPauseItemsCurrentPage < 0) {
491 gPauseItemsCurrentPage = 0;
493 row = gPauseItemsPages[gPauseItemsCurrentPage].
listStart;
500 if (row >= gPauseItemsPages[gPauseItemsCurrentPage].listStart + gPauseItemsPages[gPauseItemsCurrentPage].numRows) {
501 gPauseItemsCurrentPage++;
503 if (!gPauseItemsPages[gPauseItemsCurrentPage].enabled) {
504 gPauseItemsCurrentPage--;
509 gPauseItemsCurrentPage++;
511 if (!gPauseItemsPages[gPauseItemsCurrentPage].enabled) {
512 gPauseItemsCurrentPage--;
514 row = gPauseItemsPages[gPauseItemsCurrentPage].
listStart;
519 if (gPauseItemsItemIDs[row * gPauseItemsPages[gPauseItemsCurrentPage].numCols] !=
ITEM_NONE_STANDIN) {
524 column = gPauseItemsPages[gPauseItemsCurrentPage].
numCols - 1;
528 if (column >= gPauseItemsPages[gPauseItemsCurrentPage].numCols) {
536 gPauseItemsSelectedIndex = column + row * gPauseItemsPages[gPauseItemsCurrentPage].
numCols;
541 gPauseItemsSelectedItem = gPauseItemsItemIDs[gPauseItemsSelectedIndex];
545 if (gPauseItemsLevel == 1) {
553 if (gPauseItemsCurrentTab == 1) {
563 if (gPauseItemsLevel == 0) {
568 gPauseItemsLevel = 0;
578 gPauseItemsTargetScrollIndex = 0;
580 gPauseItemsTargetScrollIndex =
page->numRows - 8;
581 }
else if (
selectedIndex - gPauseItemsTargetScrollIndex > 6) {
583 }
else if (
selectedIndex - gPauseItemsTargetScrollIndex < 1) {
587 gPauseItemsTargetScrollPos =
pause_items_get_pos_y(gPauseItemsCurrentPage, gPauseItemsTargetScrollIndex *
page->numCols);
594 for (i = 0; i <
ARRAY_COUNT(gPauseItemsHIDs); i++) {
BSS s32 PopupMenu_SelectedIndex
@ DRAW_MSG_STYLE_DROP_SHADOW
@ SOUND_MENU_CHANGE_SELECTION
void setup_pause_menu_tab(MenuWindowBP *bpArray, s32 arraySize)
HudScript HES_StatusStar1
void hud_element_set_scale(s32 index, f32 scale)
void hud_element_draw_without_clipping(s32 id)
void hud_element_set_script(s32 id, HudScript *anim)
void hud_element_draw_next(s32 id)
void hud_element_set_render_pos(s32 id, s32 x, s32 y)
s32 hud_element_create(HudScript *anim)
Creates a new HUD element and returns its ID.
void hud_element_set_flags(s32 id, s32 flags)
Turns on the given flags.
void hud_element_clear_flags(s32 id, s32 flags)
Turns off the given flags.
void hud_element_free(s32 id)
@ HUD_ELEMENT_FLAG_DROP_SHADOW
@ HUD_ELEMENT_FLAG_FILTER_TEX
#define INCLUDE_ASM(TYPE, FOLDER, NAME, ARGS...)
HudScript * gPauseCurrentDescIconScript
s32 pause_interp_vertical_scroll(s32 deltaBefore)
WindowStyleCustom gPauseWS_19
WindowStyleCustom gPauseWS_18
void pause_set_cursor_pos_immediate(s32 windowID, s32 posX, s32 posY)
s32 pause_get_menu_msg(s32 index)
@ PAUSE_MSG_DESC_KEY_ITEMS
@ PAUSE_MSG_DESC_CONSUMABLES
@ PAUSE_MSG_BAGDE_DESC_NONE
WindowStyleCustom gPauseWS_17
void pause_set_cursor_pos(s32 windowID, s32 posX, s32 posY)
void pause_sort_item_list(s16 *arr, s32 len, s32(*compare)(s16 *, s16 *))
void pause_items_draw_contents(MenuPanel *menu, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening)
s32 pause_items_get_column(s32 page, s32 itemIdx)
s32 pause_items_comparator(s16 *a, s16 *b)
s32 pause_items_scroll_offset_x(s32 beforeX)
void pause_items_handle_input(MenuPanel *panel)
s32 pause_items_get_pos_x(s32 page, s32 itemIndex)
s32 pause_items_scroll_offset_y(s32 beforeY)
void pause_items_load_items(s32 invItems)
void pause_items_init(MenuPanel *panel)
#define ITEM_NONE_STANDIN
s32 pause_items_get_row(s32 page, s32 itemIdx)
MenuPanel gPausePanelItems
MenuWindowBP gPauseItemsWindowBPs[]
s32 pause_items_get_pos_y(s32 page, s32 itemIndex)
s32 pause_items_is_visible(s32 y)
HudScript * gPauseItemsHudScripts[]
void pause_items_cleanup(MenuPanel *panel)
void pause_items_update(MenuPanel *panel)
void sfx_play_sound(s32 soundID)
#define ITEM_MENU_PAGE(index)