2#include "message_ids.h"
12static s16 gPauseBadgesItemIds[128];
13static s32 gPauseBadgesCurrentPage;
17static s32 gPauseBadgesSelectedIndex;
19static s32 gPauseBadgesSelectedItem;
20static s16 gPauseBadgesNumItems;
22static s32 gPauseBadgesCurrentScrollPos;
23static s32 gPauseBadgesTargetScrollPos;
24static s32 gPauseBadgesTargetScrollIndex;
25static s32 gPauseBadgesLevel;
26static s32 gPauseBadgesCurrentTab;
27static s32 gPauseBadgesShowNotEnoughBP;
30static s32 gPauseBadgesIconIDs[22];
33#define BADGE_NONE_STANDIN 0x7FFE
35#define BADGE_INVALID 0x7FFF
38#define TRY_REMOVE_NOT_ENOUGH_BP_RESULT -1
99 .pos = { .x = 3, .y = 16 },
188 page)->numCols) * 16);
200 if (y < gPauseBadgesCurrentScrollPos - 32) {
203 return y < gPauseBadgesCurrentScrollPos + 128;
208 return offset - gPauseBadgesCurrentScrollPos;
373 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);
403 for (i = 0; i < 3; i++) {
410 if (!
page->enabled) {
431 if (
badgeID == *equippedBadges) {
438 gPauseBadgesLevel == 1 &&
471 baseY +
pause_badges_scroll_offset_y(posY) + 17, 0, 200, 13, 255, 0, 0, 0, 0, 0,
550 orbY +=
j / 5 * 6 - 3;
564 orbY +=
j / 5 * 6 - 3;
575 orbY +=
j / 5 * 6 - 3;
613 if (gPauseBadgesCurrentPage > 0) {
618 if (gPauseBadgesPages[gPauseBadgesCurrentPage + 1].enabled) {
686 91, 34, 255, gPauseBadgesCurrentTab == 1 ? 128 : 0, 0, 0,
693 if (gPauseBadgesCurrentTab == 0) {
698 if (gPauseBadgesCurrentTab == 1) {
705 if (gPauseBadgesCurrentTab == 0) {
715 if (gPauseBadgesCurrentTab == 0) {
720 if (gPauseBadgesCurrentTab == 1) {
727 gPauseBadgesCurrentTab != 0 ? 0 : 128, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
nullptr,
nullptr,
nullptr,
732 if (gPauseBadgesCurrentTab == 1) {
741 if (gPauseBadgesCurrentTab == 0) {
746 if (gPauseBadgesCurrentTab == 1) {
752 gPauseBadgesCurrentTab == 0 ? 128 : 0, 0, 0, 0, 0, 0, 0, 0, 0,
SCREEN_WIDTH,
SCREEN_HEIGHT, 0);
756 if (gPauseBadgesCurrentTab == 1) {
761 if (gPauseBadgesCurrentTab == 0) {
768 if (gPauseBadgesCurrentTab == 1) {
773 if (gPauseBadgesCurrentTab == 0) {
780 if (gPauseBadgesLevel == 0) {
783 selectedPosX =
pause_badges_get_pos_x(gPauseBadgesCurrentPage, gPauseBadgesSelectedIndex - gPauseBadgesPages[gPauseBadgesCurrentPage].listStart * gPauseBadgesPages[gPauseBadgesCurrentPage].numCols);
784 selectedPosY =
pause_badges_get_pos_y(gPauseBadgesCurrentPage, gPauseBadgesSelectedIndex - gPauseBadgesPages[gPauseBadgesCurrentPage].listStart * gPauseBadgesPages[gPauseBadgesCurrentPage].numCols);
793 if (gPauseBadgesCurrentScrollPos != gPauseBadgesTargetScrollPos) {
801 if (gPauseBadgesShowNotEnoughBP != 0) {
803 if (gPauseBadgesShowNotEnoughBP == 1) {
808 0, 0, 0, 0, 0, 0, 0, 0, 0,
SCREEN_WIDTH,
SCREEN_HEIGHT, 0);
813 0, 0, 0, 0, 0, 0, 0, 0, 0,
SCREEN_WIDTH,
SCREEN_HEIGHT, 0);
819 0, 0, 0, 0, 0, 0, 0, 0, 0,
SCREEN_WIDTH,
SCREEN_HEIGHT, 0);
867 gPauseBadgesNumItems = numItems;
868 for (i = numItems; i <
ARRAY_COUNT(gPauseBadgesItemIds); i++) {
872 gPauseBadgesSelectedIndex = 0;
873 gPauseBadgesSelectedItem = 0;
875 gPauseBadgesTargetScrollIndex = 0;
876 gPauseBadgesCurrentPage = 0;
878 page = &gPauseBadgesPages[0];
879 for (i = 0; i < gPauseBadgesNumItems / 8; i++,
page++) {
883 page->enabled =
true;
884 page->startIndex = i * 8;
888 if ((gPauseBadgesNumItems % 8) != 0) {
889 page->listStart = i * 8;
891 page->enabled =
true;
892 page->startIndex = i * 8;
893 page->count = gPauseBadgesNumItems % 8;
900 page->enabled =
false;
914 gPauseBadgesLevel = 0;
915 gPauseBadgesCurrentTab = 0;
916 gPauseBadgesShowNotEnoughBP = 0;
920 panel->initialized =
false;
924 for (i = 0; i <
ARRAY_COUNT(gPauseBadgesIconIDs); i++) {
933 panel->initialized =
true;
938 s32 numCols = gPauseBadgesPages[gPauseBadgesCurrentPage].
numCols;
946 if (gPauseBadgesShowNotEnoughBP != 0) {
947 gPauseBadgesShowNotEnoughBP = 0;
948 }
else if (gPauseBadgesLevel == 0) {
952 gPauseBadgesLevel = 1;
962 gPauseBadgesShowNotEnoughBP = 1;
971 gPauseBadgesShowNotEnoughBP = 1;
975 gPauseBadgesShowNotEnoughBP = 2;
986 gPauseBadgesShowNotEnoughBP = 0;
989 if (gPauseBadgesNumItems != 0) {
990 if (gPauseBadgesLevel == 0) {
994 gPauseBadgesCurrentTab ^= 1;
996 if (
oldTab != gPauseBadgesCurrentTab) {
1011 if (
selectedRow < gPauseBadgesPages[gPauseBadgesCurrentPage].listStart) {
1012 gPauseBadgesCurrentPage--;
1016 gPauseBadgesCurrentPage--;
1017 if (gPauseBadgesCurrentPage < 0) {
1018 gPauseBadgesCurrentPage = 0;
1032 gPauseBadgesCurrentPage += 1;
1033 if (!gPauseBadgesPages[gPauseBadgesCurrentPage].enabled) {
1034 gPauseBadgesCurrentPage--;
1042 gPauseBadgesCurrentPage++;
1043 newPage = &gPauseBadgesPages[gPauseBadgesCurrentPage];
1046 gPauseBadgesCurrentPage--;
1073 gPauseBadgesSelectedItem = gPauseBadgesItemIds[gPauseBadgesSelectedIndex];
1077 if (gPauseBadgesLevel == 1) {
1078 s32 itemID = gPauseBadgesSelectedItem;
1092 if (gPauseBadgesLevel == 0) {
1097 gPauseBadgesLevel = 0;
1099 if (gPauseBadgesCurrentTab == 1) {
1112 gPauseBadgesTargetScrollIndex = 0;
1116 if (
itemIndex - gPauseBadgesTargetScrollIndex >= 7) {
1117 gPauseBadgesTargetScrollIndex =
itemIndex - 6;
1118 }
else if (
itemIndex - gPauseBadgesTargetScrollIndex <= 0) {
1119 gPauseBadgesTargetScrollIndex =
itemIndex - 1;
1130 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)
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
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