2#include "message_ids.h"
10static s16 gPauseItemsItemIDs[100];
11static s32 gPauseItemsCurrentPage;
13static s32 gPauseItemsSelectedIndex;
15static s32 gPauseItemsSelectedItem;
16static s16 gPauseItemsNumItems;
18static s32 gPauseItemsCurrentScrollPos;
19static s32 gPauseItemsTargetScrollPos;
20static s32 gPauseItemsTargetScrollIndex;
21static s32 gPauseItemsLevel;
22static s32 gPauseItemsCurrentTab;
25#define ITEM_NONE_STANDIN 0x7FFE
26#define ITEM_INVALID 0x7FFF
39 .pos = { .x = 3, .y = 16 },
92 if (y < gPauseItemsCurrentScrollPos - 32) {
95 return y < gPauseItemsCurrentScrollPos + 128;
99 return beforeY - gPauseItemsCurrentScrollPos;
134 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);
165 for (i = 0; i < 3; i++) {
170 if (!
page->enabled) {
189 gPauseItemsLevel == 1 &&
286 if (gPauseItemsCurrentPage > 0) {
291 if (gPauseItemsPages [gPauseItemsCurrentPage + 1].enabled) {
298 91, 34, 255, gPauseItemsCurrentTab == 1 ? 128 : 0, 0, 0,
303 if (gPauseItemsCurrentTab == 0) {
308 if (gPauseItemsCurrentTab == 1) {
314 91, 34, 255, gPauseItemsCurrentTab == 0 ? 128 : 0, 0, 0,
319 if (gPauseItemsCurrentTab == 1) {
324 if (gPauseItemsCurrentTab == 0) {
330 if (gPauseItemsLevel == 0) {
333 selectedPosX =
pause_items_get_pos_x(gPauseItemsCurrentPage, gPauseItemsSelectedIndex - gPauseItemsPages[gPauseItemsCurrentPage].listStart * gPauseItemsPages[gPauseItemsCurrentPage].numCols);
334 selectedPosY =
pause_items_get_pos_y(gPauseItemsCurrentPage, gPauseItemsSelectedIndex - gPauseItemsPages[gPauseItemsCurrentPage].listStart * gPauseItemsPages[gPauseItemsCurrentPage].numCols);
343 if (gPauseItemsCurrentScrollPos != gPauseItemsTargetScrollPos) {
360 if (invItems ==
true) {
389 page = gPauseItemsPages;
390 gPauseItemsSelectedIndex = 0;
391 gPauseItemsSelectedItem = 0;
393 gPauseItemsTargetScrollIndex = 0;
394 gPauseItemsCurrentPage = 0;
396 for (i = 0; i < gPauseItemsNumItems / 8; i++,
page++) {
397 page->listStart = i * 8;
400 page->enabled =
true;
401 page->startIndex = i * 8;
405 if ((gPauseItemsNumItems % 8) != 0) {
406 page->listStart = i * 8;
408 page->enabled =
true;
409 page->startIndex = i * 8;
410 page->count = gPauseItemsNumItems % 8;
417 page->enabled =
false;
426 gPauseItemsLevel = 0;
427 gPauseItemsCurrentTab = 0;
430 for (i = 0; i <
ARRAY_COUNT(gPauseItemsHIDs); i++) {
440 panel->initialized =
true;
446 s32 row = gPauseItemsSelectedIndex / gPauseItemsPages[gPauseItemsCurrentPage].
numCols;
447 s32 column = gPauseItemsSelectedIndex % gPauseItemsPages[gPauseItemsCurrentPage].
numCols;
453 gPauseItemsLevel = 1;
459 if (gPauseItemsNumItems != 0) {
460 if (gPauseItemsLevel == 0) {
461 oldTab = gPauseItemsCurrentTab;
463 gPauseItemsCurrentTab ^= 1;
466 if (
oldTab != gPauseItemsCurrentTab) {
478 if (row < gPauseItemsPages[gPauseItemsCurrentPage].listStart) {
479 gPauseItemsCurrentPage--;
482 gPauseItemsCurrentPage--;
483 if (gPauseItemsCurrentPage < 0) {
484 gPauseItemsCurrentPage = 0;
486 row = gPauseItemsPages[gPauseItemsCurrentPage].
listStart;
493 if (row >= gPauseItemsPages[gPauseItemsCurrentPage].listStart + gPauseItemsPages[gPauseItemsCurrentPage].numRows) {
494 gPauseItemsCurrentPage++;
496 if (!gPauseItemsPages[gPauseItemsCurrentPage].enabled) {
497 gPauseItemsCurrentPage--;
502 gPauseItemsCurrentPage++;
504 if (!gPauseItemsPages[gPauseItemsCurrentPage].enabled) {
505 gPauseItemsCurrentPage--;
507 row = gPauseItemsPages[gPauseItemsCurrentPage].
listStart;
512 if (gPauseItemsItemIDs[row * gPauseItemsPages[gPauseItemsCurrentPage].numCols] !=
ITEM_NONE_STANDIN) {
517 column = gPauseItemsPages[gPauseItemsCurrentPage].
numCols - 1;
521 if (column >= gPauseItemsPages[gPauseItemsCurrentPage].numCols) {
529 gPauseItemsSelectedIndex = column + row * gPauseItemsPages[gPauseItemsCurrentPage].
numCols;
534 gPauseItemsSelectedItem = gPauseItemsItemIDs[gPauseItemsSelectedIndex];
538 if (gPauseItemsLevel == 1) {
546 if (gPauseItemsCurrentTab == 1) {
556 if (gPauseItemsLevel == 0) {
561 gPauseItemsLevel = 0;
571 gPauseItemsTargetScrollIndex = 0;
573 gPauseItemsTargetScrollIndex =
page->numRows - 8;
574 }
else if (
selectedIndex - gPauseItemsTargetScrollIndex > 6) {
576 }
else if (
selectedIndex - gPauseItemsTargetScrollIndex < 1) {
580 gPauseItemsTargetScrollPos =
pause_items_get_pos_y(gPauseItemsCurrentPage, gPauseItemsTargetScrollIndex *
page->numCols);
587 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)
HudElemID hud_element_create(HudScript *anim)
Creates a new HUD element and returns its ID.
void hud_element_set_render_pos(s32 id, s32 x, s32 y)
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_MANUAL_RENDER
@ HUD_ELEMENT_FLAG_FILTER_TEX
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)