2#include "message_ids.h"
12static s16 gPauseBadgesItemIds[128];
13static s32 gPauseBadgesCurrentPage;
18static s32 gPauseBadgesSelectedIndex;
20static s32 gPauseBadgesSelectedItem;
21static s16 gPauseBadgesNumItems;
23static s32 gPauseBadgesCurrentScrollPos;
24static s32 gPauseBadgesTargetScrollPos;
25static s32 gPauseBadgesTargetScrollIndex;
26static s32 gPauseBadgesLevel;
27static s32 gPauseBadgesCurrentTab;
28static s32 gPauseBadgesShowNotEnoughBP;
32static s32 gPauseBadgesIconIDs[22];
35#define BADGE_NONE_STANDIN 0x7FFE
37#define BADGE_INVALID 0x7FFF
40#define TRY_REMOVE_NOT_ENOUGH_BP_RESULT -1
101 .pos = { .x = 3, .y = 16 },
190 page)->numCols) * 16);
202 if (y < gPauseBadgesCurrentScrollPos - 32) {
205 return y < gPauseBadgesCurrentScrollPos + 128;
210 return offset - gPauseBadgesCurrentScrollPos;
376 draw_box(
DRAW_FLAG_NO_CLIP, &
gPauseWS_15,
baseX + 84,
baseY, 0, width - 84, height, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0,
SCREEN_WIDTH,
SCREEN_HEIGHT, 0);
406 for (i = 0; i < 3; i++) {
413 if (!
page->enabled) {
434 if (
badgeID == *equippedBadges) {
441 gPauseBadgesLevel == 1 &&
474 baseY +
pause_badges_scroll_offset_y(posY) + 17, 0, 200, 13, 255, 0, 0, 0, 0, 0,
553 orbY +=
j / 5 * 6 - 3;
567 orbY +=
j / 5 * 6 - 3;
578 orbY +=
j / 5 * 6 - 3;
616 if (gPauseBadgesCurrentPage > 0) {
621 if (gPauseBadgesPages[gPauseBadgesCurrentPage + 1].enabled) {
689 91, 34, 255, gPauseBadgesCurrentTab == 1 ? 128 : 0, 0, 0,
696 if (gPauseBadgesCurrentTab == 0) {
701 if (gPauseBadgesCurrentTab == 1) {
708 if (gPauseBadgesCurrentTab == 0) {
718 if (gPauseBadgesCurrentTab == 0) {
723 if (gPauseBadgesCurrentTab == 1) {
730 gPauseBadgesCurrentTab != 0 ? 0 : 128, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
NULL,
NULL,
NULL,
735 if (gPauseBadgesCurrentTab == 1) {
744 if (gPauseBadgesCurrentTab == 0) {
749 if (gPauseBadgesCurrentTab == 1) {
755 gPauseBadgesCurrentTab == 0 ? 128 : 0, 0, 0, 0, 0, 0, 0, 0, 0,
SCREEN_WIDTH,
SCREEN_HEIGHT, 0);
759 if (gPauseBadgesCurrentTab == 1) {
764 if (gPauseBadgesCurrentTab == 0) {
771 if (gPauseBadgesCurrentTab == 1) {
776 if (gPauseBadgesCurrentTab == 0) {
783 if (gPauseBadgesLevel == 0) {
786 selectedPosX =
pause_badges_get_pos_x(gPauseBadgesCurrentPage, gPauseBadgesSelectedIndex - gPauseBadgesPages[gPauseBadgesCurrentPage].listStart * gPauseBadgesPages[gPauseBadgesCurrentPage].numCols);
787 selectedPosY =
pause_badges_get_pos_y(gPauseBadgesCurrentPage, gPauseBadgesSelectedIndex - gPauseBadgesPages[gPauseBadgesCurrentPage].listStart * gPauseBadgesPages[gPauseBadgesCurrentPage].numCols);
796 if (gPauseBadgesCurrentScrollPos != gPauseBadgesTargetScrollPos) {
804 if (gPauseBadgesShowNotEnoughBP != 0) {
806 if (gPauseBadgesShowNotEnoughBP == 1) {
811 0, 0, 0, 0, 0, 0, 0, 0, 0,
SCREEN_WIDTH,
SCREEN_HEIGHT, 0);
816 0, 0, 0, 0, 0, 0, 0, 0, 0,
SCREEN_WIDTH,
SCREEN_HEIGHT, 0);
822 0, 0, 0, 0, 0, 0, 0, 0, 0,
SCREEN_WIDTH,
SCREEN_HEIGHT, 0);
870 gPauseBadgesNumItems = numItems;
871 for (i = numItems; i <
ARRAY_COUNT(gPauseBadgesItemIds); i++) {
875 gPauseBadgesSelectedIndex = 0;
876 gPauseBadgesSelectedItem = 0;
878 gPauseBadgesTargetScrollIndex = 0;
879 gPauseBadgesCurrentPage = 0;
881 page = &gPauseBadgesPages[0];
882 for (i = 0; i < gPauseBadgesNumItems / 8; i++,
page++) {
887 page->startIndex = i * 8;
891 if ((gPauseBadgesNumItems % 8) != 0) {
892 page->listStart = i * 8;
895 page->startIndex = i * 8;
896 page->count = gPauseBadgesNumItems % 8;
917 gPauseBadgesLevel = 0;
918 gPauseBadgesCurrentTab = 0;
919 gPauseBadgesShowNotEnoughBP = 0;
927 for (i = 0; i <
ARRAY_COUNT(gPauseBadgesIconIDs); i++) {
941 s32 numCols = gPauseBadgesPages[gPauseBadgesCurrentPage].
numCols;
949 if (gPauseBadgesShowNotEnoughBP != 0) {
950 gPauseBadgesShowNotEnoughBP = 0;
951 }
else if (gPauseBadgesLevel == 0) {
955 gPauseBadgesLevel = 1;
965 gPauseBadgesShowNotEnoughBP = 1;
974 gPauseBadgesShowNotEnoughBP = 1;
978 gPauseBadgesShowNotEnoughBP = 2;
989 gPauseBadgesShowNotEnoughBP = 0;
992 if (gPauseBadgesNumItems != 0) {
993 if (gPauseBadgesLevel == 0) {
994 s32
oldTab = gPauseBadgesCurrentTab;
997 gPauseBadgesCurrentTab ^= 1;
999 if (
oldTab != gPauseBadgesCurrentTab) {
1014 if (
selectedRow < gPauseBadgesPages[gPauseBadgesCurrentPage].listStart) {
1015 gPauseBadgesCurrentPage--;
1019 gPauseBadgesCurrentPage--;
1020 if (gPauseBadgesCurrentPage < 0) {
1021 gPauseBadgesCurrentPage = 0;
1035 gPauseBadgesCurrentPage += 1;
1036 if (!gPauseBadgesPages[gPauseBadgesCurrentPage].enabled) {
1037 gPauseBadgesCurrentPage--;
1045 gPauseBadgesCurrentPage++;
1046 newPage = &gPauseBadgesPages[gPauseBadgesCurrentPage];
1049 gPauseBadgesCurrentPage--;
1076 gPauseBadgesSelectedItem = gPauseBadgesItemIds[gPauseBadgesSelectedIndex];
1080 if (gPauseBadgesLevel == 1) {
1081 s32 itemID = gPauseBadgesSelectedItem;
1095 if (gPauseBadgesLevel == 0) {
1100 gPauseBadgesLevel = 0;
1102 if (gPauseBadgesCurrentTab == 1) {
1115 gPauseBadgesTargetScrollIndex = 0;
1119 if (
itemIndex - gPauseBadgesTargetScrollIndex >= 7) {
1120 gPauseBadgesTargetScrollIndex =
itemIndex - 6;
1121 }
else if (
itemIndex - gPauseBadgesTargetScrollIndex <= 0) {
1122 gPauseBadgesTargetScrollIndex =
itemIndex - 1;
1133 for (i = 0; i <
ARRAY_COUNT(gPauseBadgesIconIDs); i++) {
BSS s32 PopupMenu_SelectedIndex
@ DRAW_MSG_STYLE_DROP_SHADOW
@ DRAW_NUMBER_STYLE_ALIGN_RIGHT
drawn to the left of posX
@ DRAW_NUMBER_STYLE_MONOSPACE
@ DRAW_NUMBER_CHARSET_THIN
@ SOUND_MENU_BADGE_UNEQUIP
@ SOUND_MENU_CHANGE_SELECTION
void setup_pause_menu_tab(MenuWindowBP *bpArray, s32 arraySize)
void enforce_hpfp_limits(void)
void draw_number(s32 value, s32 x, s32 y, s32 variableWidthChars, s32 palette, s32 opacity, u16 style)
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
void pause_badges_init(MenuPanel *panel)
void pause_badges_draw_bp_orbs(s32 orbState, s32 x, s32 y)
s32 pause_badges_get_column(s32 page, s32 itemIdx)
void pause_badges_load_badges(s32 onlyEquipped)
s32 pause_badges_try_equip(s16 badgeID)
s32 pause_badges_scroll_offset_x(s32 x)
#define BADGE_NONE_STANDIN
#define TRY_REMOVE_NOT_ENOUGH_BP_RESULT
MenuWindowBP gPauseBadgesWindowBPs[]
void pause_badges_handle_input(MenuPanel *panel)
s32 pause_badges_get_row(s32 page, s32 itemIdx)
s32 pause_badges_get_pos_y(s32 page, s32 itemIndex)
s32 pause_badges_scroll_offset_y(s32 offset)
s32 pause_badges_count_equipped(void)
void pause_badges_cleanup(MenuPanel *panel)
s32 pause_badges_try_remove(s16 badgeID)
void pause_badges_draw_contents(MenuPanel *menu, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening)
void pause_badges_update(MenuPanel *panel)
s32 pause_badges_is_visible(s32 y)
s32 pause_badges_comparator(s16 *a, s16 *b)
s32 pause_badges_count_all(void)
s32 pause_badges_get_pos_x(s32 page, s32 itemIndex)
MenuPanel gPausePanelBadges
@ EQUIP_RESULT_TOO_MANY_BADGES
@ EQUIP_RESULT_NOT_ENOUGH_BP
@ EQUIP_RESULT_ALREADY_EQUIPPED
HudScript * gPauseBadgesElements[][22]
HudScript * gPauseCurrentDescIconScript
s32 pause_interp_vertical_scroll(s32 deltaBefore)
WindowStyleCustom gPauseWS_13
s32 pause_get_total_equipped_bp_cost(void)
void pause_set_cursor_opacity(s32 val)
WindowStyleCustom gPauseWS_14
void pause_set_cursor_pos_immediate(s32 windowID, s32 posX, s32 posY)
s32 pause_get_menu_msg(s32 index)
WindowStyleCustom gPauseWS_15
@ PAUSE_MSG_DONT_WEAR_MORE
@ PAUSE_MSG_BAGDE_DESC_ALL
@ PAUSE_MSG_NOT_ENOUGH_BP
@ PAUSE_MSG_BAGDE_DESC_ACTIVE
void pause_draw_menu_label(s32 index, s32 x, s32 y)
void pause_set_cursor_pos(s32 windowID, s32 posX, s32 posY)
void pause_draw_rect(s32 ulx, s32 uly, s32 lrx, s32 lry, s32 tileIdx, s32 uls, s32 ult, s32 dsdx, s32 dtdy)
void pause_sort_item_list(s16 *arr, s32 len, s32(*compare)(s16 *, s16 *))
WindowStyleCustom gPauseWS_16
void sfx_play_sound(s32 soundID)
#define BADGE_MENU_PAGE(index)
GameStatus * gGameStatusPtr