Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
btl_states_menus.c File Reference

Go to the source code of this file.

Macros

#define TABMAX   6
 
#define Y_VAR1   0
 
#define X_VAR1   108
 
#define X_VAR2   93
 
#define Y_VAR2   0
 

Functions

void create_battle_popup_menu (PopupMenu *popup)
 
s32 get_player_anim_for_status (s32 animID)
 
void btl_menu_moves_draw_content (void *data, s32 x, s32 y)
 
void btl_menu_moves_show_title (void *data, s32 x, s32 y)
 
void btl_menu_moves_show_icon (void *data, s32 x, s32 y)
 
void btl_menu_moves_show_desc (void *data, s32 x, s32 y)
 
void btl_menu_moves_show_error (void *data, s32 x, s32 y)
 
void btl_menu_strats_draw_content (void *data, s32 x, s32 y)
 
void btl_menu_strats_show_title (void *data, s32 x, s32 y)
 
void btl_menu_strats_show_desc (void *data, s32 x, s32 y)
 
void btl_menu_strats_show_error (void *data, s32 x, s32 y)
 
void btl_init_menu_items (void)
 
void btl_check_can_change_partner (void)
 
void btl_init_menu_partner (void)
 
void func_800F52BC (void)
 
void func_800F16CC (void)
 
void btl_init_menu_boots (void)
 
void btl_init_menu_hammer (void)
 
void btl_main_menu_init (void)
 
void func_802A1030 (void)
 
void func_802A1050 (void)
 
void func_802A1078 (void)
 
void func_802A1098 (void)
 
void btl_main_menu_destroy (void)
 
s32 btl_main_menu_update (void)
 
void btl_main_menu_draw (void)
 
void func_802A2684 (void)
 
void func_802A27D0 (void)
 
void func_802A27E4 (void)
 
void func_802A2910 (void)
 
void func_802A2AB8 (void)
 
void func_802A2C58 (void)
 
s32 btl_submenu_moves_update (void)
 
void func_802A45D8 (void)
 
void func_802A4718 (void)
 
void func_802A472C (void)
 
void func_802A47E0 (void)
 
void func_802A48FC (void)
 
void func_802A4A10 (void)
 
s32 btl_update_strats_menu (void)
 
s32 can_switch_to_player (void)
 
s32 can_switch_to_partner (void)
 
void btl_state_update_player_menu (void)
 
void btl_state_draw_player_menu (void)
 
void btl_state_update_partner_menu (void)
 
void btl_state_draw_partner_menu (void)
 
s32 btl_menu_show_switch_to_twink (void)
 
void btl_state_update_peach_menu (void)
 
void btl_state_draw_peach_menu (void)
 
s32 btl_menu_show_switch_to_peach (void)
 
void btl_state_update_twink_menu (void)
 
void btl_state_draw_twink_menu (void)
 
void btl_state_update_select_target (void)
 
void btl_state_draw_select_target (void)
 
void btl_state_update_22 (void)
 
void btl_state_draw_22 (void)
 

Variables

HudScript HES_YellowArrow
 
HudScript HES_MenuFlee
 
HudScript HES_MenuFleeDisabled
 
HudScript HES_MenuDefend
 
HudScript HES_MenuDefendDisabled
 
HudScript HES_MenuStrategies
 
HudScript HES_MenuStrategiesDisabled
 
HudScript HES_MenuPouch
 
HudScript HES_MenuPouchDisabled
 
HudScript HES_MenuDoNothing
 
HudScript HES_MenuDoNothingDisabled
 
HudScript HES_Kooper
 
HudScript HES_Bombette
 
HudScript HES_Partner0
 
HudScript HES_Partner0Disabled
 
HudScript HES_Goombario
 
HudScript HES_GoombarioDisabled
 
HudScript HES_KooperDisabled
 
HudScript HES_BombetteDisabled
 
HudScript HES_Parakarry
 
HudScript HES_ParakarryDisabled
 
HudScript HES_Bow
 
HudScript HES_BowDisabled
 
HudScript HES_Watt
 
HudScript HES_WattDisabled
 
HudScript HES_Sushie
 
HudScript HES_SushieDisabled
 
HudScript HES_Lakilester
 
HudScript HES_LakilesterDisabled
 
HudScript HES_PartnerA
 
HudScript HES_PartnerADisabled
 
HudScript HES_MenuBoots1
 
HudScript HES_MenuBoots1Disabled
 
HudScript HES_MenuBoots2
 
HudScript HES_MenuBoots2Disabled
 
HudScript HES_MenuBoots3
 
HudScript HES_MenuBoots3Disabled
 
HudScript HES_MenuHammer1
 
HudScript HES_MenuHammer1Disabled
 
HudScript HES_MenuHammer2
 
HudScript HES_MenuHammer2Disabled
 
HudScript HES_MenuHammer3
 
HudScript HES_MenuHammer3Disabled
 
HudScript HES_MenuItem
 
HudScript HES_MenuItemDisabled
 
HudScript HES_MenuStarPower
 
HudScript HES_MenuStarPowerDisabled
 
HudScript HES_Eldstar
 
HudScript HES_EldstarDisabled
 
HudScript HES_Mamar
 
HudScript HES_MamarDisabled
 
HudScript HES_Skolar
 
HudScript HES_SkolarDisabled
 
HudScript HES_Muskular
 
HudScript HES_MuskularDisabled
 
HudScript HES_Misstar
 
HudScript HES_MisstarDisabled
 
HudScript HES_Klevar
 
HudScript HES_KlevarDisabled
 
HudScript HES_Kalmar
 
HudScript HES_KalmarDisabled
 
HudScript HES_StarBeam
 
HudScript HES_StarBeamDisabled
 
HudScript HES_PeachBeam
 
HudScript HES_PeachBeamDisabled
 
HudScript HES_MoveDiamond
 
HudScript HES_MoveDiamond_disabled
 
HudScript HES_MoveBlueOrb
 
HudScript HES_MoveBlueOrbDisabled
 
HudScript HES_MoveGreenOrb
 
HudScript HES_MoveGreenOrbDisabled
 
HudScript HES_MoveRedOrb
 
HudScript HES_MoveRedOrbDisabled
 
HudScript HES_GreenArrowDown
 
HudScript HES_GreenArrowUp
 
HudScript HES_HandPointer
 
HudScript HES_HandPointDownLoop
 
HudScript HES_HandPointLeftLoop
 
HudScript HES_FPCost
 
HudScript HES_FPCostReduced
 
HudScript HES_FPCostReducedTwice
 
HudScript HES_POWCost
 
HudScript HES_POWCostReduced
 
HudScript HES_POWCostReducedTwice
 
HudScript HES_StatusFlower
 
HudScript HES_NotEnoughFP
 
HudScript HES_NotEnoughPOW
 
HudScript HES_ProjectorBeam
 
HudScript HES_ProjectorReel
 
HudScript HES_ProjectorSpot
 
HudScript HES_SwapArrowLeft
 
HudScript HES_SwapArrowRight
 
HudScript HES_SwapBackground
 
HudScript HES_SwapZ
 
IconHudScriptPair gItemHudScripts []
 
s16 D_802AB340 [] = { 28, 40 }
 
s16 D_802AB344 [] = { 0, -2 }
 
IconHudScriptPair battle_menu_JumpHudScripts []
 
IconHudScriptPair battle_menu_HammerHudScripts []
 
IconHudScriptPair battle_menu_ItemHudScripts = { &HES_MenuItem, &HES_MenuItemDisabled }
 
IconHudScriptPair battle_menu_StarPowerHudScripts = { &HES_MenuStarPower, &HES_MenuStarPowerDisabled }
 
HudScriptbattle_menu_StarPowerMovesHudScripts []
 
HudScriptbattle_menu_PartnerHudScripts []
 
HudScriptbattle_menu_DisabledPartnerHudScripts []
 
IconHudScriptPair battle_menu_StrategiesHudScript = { &HES_MenuStrategies, &HES_MenuStrategiesDisabled }
 
IconHudScriptPair battle_menu_DoNothingHudScripts = { &HES_MenuDoNothing, &HES_MenuDoNothingDisabled }
 
IconHudScriptPair battle_menu_FleeHudScripts = { &HES_MenuFlee, &HES_MenuFleeDisabled }
 
s32 BattleMenu_LeftJustMessages []
 
s32 BattleMenu_CenteredMessages []
 
s32 BattleMenu_CategoryForSubmenu []
 
AnimID BattleMenu_PartnerThinkAnims []
 
AnimID BattleMenu_PartnerIdleAnims []
 
HudScriptbattle_menu_PartnerMoveHudScripts [10][10]
 
IconHudScriptPair battle_menu_PeachStarPowerHudScripts = { &HES_MenuStarPower, &HES_MenuStarPowerDisabled }
 
s32 D_802AB728 []
 
IconHudScriptPair battle_menu_TwinkStarPowerHudScripts = { &HES_MenuStarPower, &HES_MenuStarPowerDisabled }
 
s32 D_802AB734 []
 
s32 PartnerNameMessages []
 
BSS s32 D_802ACC60
 
BSS s32 BattleMenu_TargetPointerAlpha
 
BSS s32 BattleMenu_TargetNameOffsetX
 
BSS s32 BattleMenu_SwapDelay
 
BSS s32 BattleMenu_TargetHudElems [MAX_ENEMY_ACTORS]
 
BSS PopupMenu D_802ACCD0
 
BSS s8 BattleMenuState
 
BSS s8 D_802AD001
 
BSS s8 BattleMenu_CurPos
 
BSS s8 BattleMenu_PrevPos
 
BSS s8 D_802AD004
 
BSS s16 D_802AD006
 
BSS s16 BattleMenuAlpha
 
BSS s16 D_802AD00A
 
BSS s16 D_802AD00C
 
BSS s32 D_802AD010 [6]
 
BSS s32 D_802AD028 [6]
 
BSS s32 D_802AD040
 
BSS s32 D_802AD044
 
BSS s32 D_802AD048
 
BSS s32 D_802AD04C
 
BSS s32 D_802AD050
 
BSS s32 D_802AD054
 
BSS s32 D_802AD058
 
BSS s32 D_802AD05C
 
BSS s32 BattleMenu_BasePosX
 
BSS s32 BattleMenu_BasePosY
 
BSS s8 BattleMenuDisableMsg
 
BSS s8 BattleMenu_MinIdx
 
BSS s8 BattleMenu_MaxIdx
 
BSS s8 BattleMenu_HomePos
 
BSS f32 BattleMenu_WheelAngle
 
BSS f32 D_802AD070
 
BSS s32 D_802AD074
 
BSS HudScriptBattleMenu_HudScripts [6]
 
BSS s32 BattleMenu_TitleMessages [6]
 
BSS s32 D_802AD0A8
 
BSS s32 BattleMenu_NumOptions
 
BSS s32 D_802AD0B0
 
BSS s32 D_802AD0B4
 
BSS s32 battle_menu_submenuIDs [6]
 
BSS s32 BattleMenu_OptionEnabled [6]
 
BSS s32 battle_menu_isMessageDisabled [6]
 
BSS s32 D_802AD100
 
BSS s32 BattleMenu_ShowSwapIcons
 
BSS s8 battle_menu_moveState
 
BSS s8 battle_menu_moveCursorPos
 
BSS s8 D_802AD10A
 
BSS s8 D_802AD10B
 
BSS s8 battle_menu_moveScrollLine
 
BSS s8 D_802AD10D
 
BSS s8 D_802AD10E
 
BSS s8 D_802AD10F
 
BSS s16 battle_menu_moveScrollOffset
 
BSS s16 D_802AD112
 
BSS s16 BattleMenu_Moves_TextColor
 
BSS s16 BattleMenu_Moves_TextAlpha
 
BSS HudElemID BattleMenu_Moves_CursorID
 
BSS HudElemID BattleMenu_Moves_UpArrowID
 
BSS HudElemID BattleMenu_Moves_DownArrowID
 
BSS s32 D_802AD124
 
BSS HudElemID BattleMenu_Moves_OptionIDs [24]
 
BSS HudElemID BattleMenu_Moves_TitleID
 
BSS s32 D_802AD18C
 
BSS HudElemID BattleMenu_Moves_OptionCostUnitIDs [24]
 
BSS s16 BattleMenu_Moves_PosX
 
BSS s16 BattleMenu_Moves_PosY
 
BSS s32 D_802AD1F4
 
BSS s32 BattleMenu_Moves_OptionIndexMap [24]
 
BSS s32 D_802AD258
 
BSS s32 D_802AD25C
 
BSS HudScriptbattle_menu_moveOptionIconScripts [24]
 
BSS s32 battle_menu_moveOptionNames [24]
 
BSS s32 battle_menu_moveOptionDisplayCosts [24]
 
BSS s32 battle_menu_moveOptionDisplayCostReductions [24]
 
BSS s32 battle_menu_moveOptionDisplayCostReductionColors [24]
 
BSS s32 battle_menu_moveOptionBPCosts [24]
 
BSS s32 BattleMenu_UsingSpiritsSubmenu
 
BSS s32 BattleMenu_Moves_OptionCount
 
BSS s32 D_802AD4A8
 
BSS s32 D_802AD4AC
 
BSS s32 BattleMenu_Moves_OptionIndices [24]
 
BSS s32 BattleMenu_Moves_OptionEnabled [24]
 
BSS s32 BattleMenu_Moves_OptionDescMessages [24]
 
BSS s8 BattleMenu_Moves_OptionSortPriority [24]
 
BSS s8 BattleMenu_Moves_OptionCantUseMessages [24]
 
BSS s32 battle_menu_moveOptionActive
 
BSS s8 BattleSubmenuStratsState
 
BSS s8 StratsMenuPos
 
BSS s8 OldStratsMenuPos
 
BSS s8 ShowingErrorMessage
 
BSS s8 D_802AD608
 
BSS s8 D_802AD609
 
BSS s8 StratsMenuLines
 
BSS s8 D_802AD60B
 
BSS s16 D_802AD60C
 
BSS s16 D_802AD60E
 
BSS s16 D_802AD610
 
BSS s16 D_802AD612
 
BSS s8 D_802AD614
 
BSS s32 D_802AD618
 
BSS HudElemID HID_GreenArrowUp
 
BSS HudElemID HID_GreenArrowDown
 
BSS s32 D_802AD624
 
BSS s32 D_802AD628 [5]
 
BSS s16 D_802AD63C
 
BSS s16 D_802AD63E
 
BSS HudScriptD_802AD640 [6]
 
BSS s32 D_802AD658 [5]
 
BSS s32 D_802AD66C
 
BSS s32 StratsMenuLastPos
 
BSS s32 D_802AD674
 
BSS s32 D_802AD678 [6]
 
BSS s32 D_802AD690 [6]
 
BSS s32 D_802AD6A8 [6]
 
BSS s32 D_802AD6C0 [5]
 
BSS s32 D_802AD6D4
 
s32 MenuIndexFromPartnerID []
 

Macro Definition Documentation

◆ TABMAX

#define TABMAX   6

Definition at line 424 of file btl_states_menus.c.

◆ Y_VAR1

#define Y_VAR1   0

Definition at line 1444 of file btl_states_menus.c.

Referenced by btl_menu_moves_draw_content().

◆ X_VAR1

#define X_VAR1   108

Definition at line 1445 of file btl_states_menus.c.

Referenced by btl_menu_moves_draw_content().

◆ X_VAR2

#define X_VAR2   93

Definition at line 1446 of file btl_states_menus.c.

Referenced by btl_menu_moves_draw_content().

◆ Y_VAR2

#define Y_VAR2   0

Definition at line 2012 of file btl_states_menus.c.

Referenced by btl_menu_strats_draw_content().

Function Documentation

◆ create_battle_popup_menu()

void create_battle_popup_menu ( PopupMenu * popup)

Definition at line 2324 of file 8a860_len_3f30.c.

2324 {
2325 gPopupMenu = popup;
2326
2328 D_8010D693 = popup->titleNumber;
2330 PopupDipMode = 0;
2331 PopupNotDipping = TRUE;
2334 PopupDipMode = 1;
2337 PopupDipMode = 2;
2338 }
2339 PopupNotDipping = FALSE;
2340 }
2341
2342 PopupNotBattle = FALSE;
2348 }
2352
2355 }
2356
2360 }
2361
2362 PopupMenu_Alpha = 255;
2363 D_8010D691 = 9;
2364 D_8010D692 = 2;
2365 gPopupWorker = create_worker_frontUI((void (*) (void)) popup_menu_update, NULL);
2366}
BSS s32 PopupMenu_PrevSelectedIndex
BSS s8 D_8010D692
BSS s8 PopupNotBattle
BSS s32 PopupMenu_Alpha
BSS s8 PopupMenu_FirstDisplayIndex
BSS s8 PopupMenu_DisplayedEntryCount
s32 popup_menu_update(void)
BSS s8 PopupDipMode
BSS s8 PopupNotDipping
BSS s32 gPopupWorker
BSS s8 PopupMenu_LastDisplayIndex
s8 status_bar_is_ignoring_changes(void)
Definition inventory.c:1523
BSS s8 D_8010D691
BSS s32 gPopupState
BSS s32 PopupMenu_SelectedIndex
BSS s8 PopupMenu_WasStatusBarIgnoringChanges
BSS PopupMenu * gPopupMenu
BSS s8 PopupMenu_MaxDisplayableEntryCount
BSS s8 D_8010D693
@ POPUP_MENU_DOUBLE_DIP
Definition enums.h:3145
@ POPUP_RESULT_CHOOSING
Definition enums.h:3177
@ POPUP_STATE_INIT
Definition enums.h:3150
s32 create_worker_frontUI(void(*updateFunc)(void), void(*drawFunc)(void))
Definition worker.c:63
s32 titleNumber

Referenced by btl_state_update_partner_menu(), and btl_state_update_player_menu().

◆ get_player_anim_for_status()

s32 get_player_anim_for_status ( s32 animID)

Definition at line 1965 of file 190B20.c.

1965 {
1966 BattleStatus* battleStatus = &gBattleStatus;
1967 PlayerData* playerData = &gPlayerData;
1968 Actor* player = battleStatus->playerActor;
1969 u32* anim = &player->partsTable->idleAnimations[0];
1970 s32 ret;
1971
1972 if (anim == NULL) {
1973 return 0;
1974 }
1975 ret = 0;
1976
1977 if (!(battleStatus->flags2 & BS_FLAGS2_PEACH_BATTLE)) {
1978 // switch to danger override animations
1979 if (playerData->curHP <= DANGER_THRESHOLD) {
1980 if (statusKey == STATUS_KEY_NORMAL) {
1981 statusKey = STATUS_KEY_DANGER;
1982 }
1983 if (statusKey == STATUS_KEY_INACTIVE) {
1984 statusKey = STATUS_KEY_INACTIVE_WEARY;
1985 }
1986 if (statusKey == STATUS_KEY_THINKING) {
1987 statusKey = STATUS_KEY_WEARY;
1988 }
1989 }
1990
1991 // switch to poisoned override animations
1992 if (player->debuff == STATUS_KEY_POISON) {
1993 if (statusKey == STATUS_KEY_NORMAL) {
1994 statusKey = STATUS_KEY_DANGER;
1995 }
1996 if (statusKey == STATUS_KEY_INACTIVE) {
1997 statusKey = STATUS_KEY_INACTIVE_WEARY;
1998 }
1999 if (statusKey == STATUS_KEY_THINKING) {
2000 statusKey = STATUS_KEY_WEARY;
2001 }
2002 }
2003
2004 // switch to dizzy override animations
2005 if (player->debuff == STATUS_KEY_DIZZY) {
2006 if (statusKey == STATUS_KEY_INACTIVE) {
2007 statusKey = STATUS_KEY_INACTIVE_DIZZY;
2008 }
2009 }
2010 }
2011
2012 // search IdleAnimations to get animID for key
2013 while (*anim != NULL) {
2014 if (*anim == 1) {
2015 ret = anim[1];
2016 }
2017 if (*anim == statusKey) {
2018 ret = anim[1];
2019 break;
2020 }
2021 anim += 2;
2022 }
2023
2024 return ret;
2025}
u32 * idleAnimations
struct ActorPart * partsTable
@ BS_FLAGS2_PEACH_BATTLE
Definition enums.h:3609
@ STATUS_KEY_INACTIVE_DIZZY
Definition enums.h:2220
@ STATUS_KEY_THINKING
Definition enums.h:2224
@ STATUS_KEY_WEARY
Definition enums.h:2225
@ STATUS_KEY_INACTIVE_WEARY
Definition enums.h:2218
@ STATUS_KEY_DANGER
Definition enums.h:2222
@ STATUS_KEY_INACTIVE
Definition enums.h:2214
@ STATUS_KEY_DIZZY
Definition enums.h:2200
@ STATUS_KEY_POISON
Definition enums.h:2205
@ STATUS_KEY_NORMAL
Definition enums.h:2197
#define DANGER_THRESHOLD
Definition battle.h:266
struct Actor * playerActor
PlayerData gPlayerData
Definition 77480.c:40
BattleStatus gBattleStatus
Definition battle.c:11

Referenced by btl_state_update_player_menu().

◆ btl_menu_moves_draw_content()

void btl_menu_moves_draw_content ( void * data,
s32 x,
s32 y )

Definition at line 1449 of file btl_states_menus.c.

1449 {
1450 s32 var_t0;
1451 s32 temp_f6;
1452 s32 xPos, yPos;
1453 s32 yRenderPos;
1454 s32 palette;
1455 s32 num;
1456 s32 v0;
1457 s32 a0;
1458 s32 idx;
1459 s32 id;
1460 s32 i;
1461
1462 switch (battle_menu_moveState) {
1463 case -1:
1464 case 1:
1465 case 10:
1466 case 20:
1467 case 30:
1468 case 40:
1469 case 41:
1470 yPos = -battle_menu_moveScrollLine * 13;
1472 temp_f6 = (yPos - var_t0) * 0.5;
1473 if (temp_f6 == 0) {
1474 var_t0 = yPos;
1475 } else {
1476 var_t0 += temp_f6;
1477 }
1479
1480 xPos = x + 2;
1481 yPos = y + 18;
1482 var_t0 = yPos + 1 + (D_802AD10E * 13);
1483 gDPSetScissor(
1484 gMainGfxPos++, G_SC_NON_INTERLACE,
1485 xPos,
1486 yPos,
1487 x + 153,
1488 var_t0
1489 );
1490
1491 xPos = x + 31;
1492 yPos = y + 19 + battle_menu_moveScrollOffset;
1493
1494 idx = 0;
1495 for (i = 0; i < BattleMenu_Moves_OptionCount; i++, idx++) {
1498
1500 palette = MSG_PAL_0B;
1501 }
1502
1504 draw_msg(
1506 xPos, yPos - Y_VAR1, BattleMenu_Moves_TextAlpha, palette, 1
1507 );
1508 }
1509
1513 } else {
1516 }
1517 num = v0 - a0;
1518
1519 if (v0 != 0 && num <= 0) {
1520 num = 1;
1521 }
1522
1524 if (i == battle_menu_moveCursorPos) {
1527 } else {
1529 }
1530 }
1531 } else {
1532 if (i == battle_menu_moveCursorPos) {
1535 } else {
1539 );
1540 }
1541 }
1542 }
1543
1545 case 0:
1546 palette = MSG_PAL_STANDARD;
1547 break;
1548 case 1:
1549 palette = MSG_PAL_37;
1550 break;
1551 default:
1552 palette = MSG_PAL_38;
1553 break;
1554 }
1555
1557 palette = MSG_PAL_0B;
1558 }
1559
1562
1565 num, xPos + X_VAR1, yPos, DRAW_NUMBER_CHARSET_THIN, palette, BattleMenu_Moves_TextAlpha,
1567 );
1570 }
1571 yRenderPos = yPos + 7;
1572 hud_element_set_render_pos(id, xPos + 116, yRenderPos);
1573 } else {
1575 num, xPos + X_VAR2, yPos, DRAW_NUMBER_CHARSET_THIN, palette, BattleMenu_Moves_TextAlpha,
1577 );
1580 }
1581 yRenderPos = yPos + 7;
1582 hud_element_set_render_pos(id, xPos + 102, yRenderPos);
1583 }
1586 }
1587 }
1588 yPos += 13;
1589 }
1590
1591 xPos = x + 24;
1592 yPos = battle_menu_moveScrollOffset + y + 24;
1593
1594 idx = 0;
1595 for (i = 0; i < BattleMenu_Moves_OptionCount; i++, idx++) {
1596 if (i < battle_menu_moveScrollLine - 1) {
1597 yPos += 13;
1598 } else if (battle_menu_moveScrollLine + D_802AD10E < i) {
1599 yPos += 13;
1600 } else {
1602 hud_element_set_render_pos(id, xPos, yPos);
1605 yPos += 13;
1606 }
1607 }
1608
1610 var_t0 = D_802AD112;
1611 temp_f6 = (yPos - D_802AD112) * 1.0;
1612 xPos = x + 10;
1613 if (temp_f6 == 0) {
1614 var_t0 = yPos;
1615 } else {
1616 var_t0 += temp_f6;
1617 }
1618 D_802AD112 = var_t0;
1619 yPos = y + 26 + D_802AD112;
1620
1622 hud_element_set_render_pos(id, xPos, yPos);
1625
1628 hud_element_set_render_pos(id, x + 72, y + 15);
1631 }
1632
1635 hud_element_set_render_pos(id, x + 72, y + 100);
1638 }
1639
1640 if (battle_menu_moveState == -1) {
1643 } else {
1645 }
1646 }
1647 break;
1648 }
1649}
BSS s32 battle_menu_moveOptionDisplayCostReductionColors[24]
BSS s8 battle_menu_moveCursorPos
BSS s32 battle_menu_moveOptionNames[24]
BSS s8 D_802AD10D
BSS HudElemID BattleMenu_Moves_UpArrowID
BSS s32 BattleMenu_Moves_OptionCount
#define Y_VAR1
HudScript HES_NotEnoughFP
BSS HudElemID BattleMenu_Moves_CursorID
#define X_VAR2
BSS s32 BattleMenu_UsingSpiritsSubmenu
BSS s32 BattleMenu_Moves_OptionEnabled[24]
BSS s16 BattleMenu_Moves_TextAlpha
BSS s16 battle_menu_moveScrollOffset
BSS s16 BattleMenu_Moves_TextColor
BSS s16 D_802AD112
HudScript HES_NotEnoughPOW
#define X_VAR1
BSS s8 D_802AD10E
BSS s32 BattleMenu_Moves_OptionIndexMap[24]
BSS HudElemID BattleMenu_Moves_DownArrowID
BSS HudElemID BattleMenu_Moves_OptionCostUnitIDs[24]
BSS HudElemID BattleMenu_Moves_OptionIDs[24]
BSS s8 battle_menu_moveScrollLine
BSS s32 battle_menu_moveOptionDisplayCosts[24]
BSS s8 battle_menu_moveState
BSS s32 battle_menu_moveOptionDisplayCostReductions[24]
#define draw_msg
@ DRAW_NUMBER_STYLE_ALIGN_RIGHT
drawn to the left of posX
Definition enums.h:5392
@ DRAW_NUMBER_STYLE_MONOSPACE
Definition enums.h:5393
@ MSG_PAL_38
Definition enums.h:5460
@ MSG_PAL_37
Definition enums.h:5459
@ MSG_PAL_STANDARD
Definition enums.h:5414
@ MSG_PAL_0B
Definition enums.h:5415
@ DRAW_NUMBER_CHARSET_THIN
Definition enums.h:5400
void status_bar_start_blinking_fp(void)
Definition inventory.c:1564
void status_bar_stop_blinking_sp(void)
Definition inventory.c:1620
void status_bar_stop_blinking_fp(void)
Definition inventory.c:1577
void draw_number(s32 value, s32 x, s32 y, s32 variableWidthChars, s32 palette, s32 opacity, u16 style)
Definition msg.c:2223
void status_bar_start_blinking_sp_bars(s32 numBarsToBlink)
Definition inventory.c:1629
void hud_element_set_alpha(s32 id, s32 opacity)
void hud_element_draw_without_clipping(s32 id)
void hud_element_set_script(s32 id, HudScript *anim)
void hud_element_set_render_pos(s32 id, s32 x, s32 y)
void hud_element_draw_clipped(s32 id)
Gfx * gMainGfxPos
Definition cam_main.c:15

Referenced by btl_submenu_moves_update().

◆ btl_menu_moves_show_title()

void btl_menu_moves_show_title ( void * data,
s32 x,
s32 y )

Definition at line 1651 of file btl_states_menus.c.

1651 {
1652 s32 msgID;
1653 s32 posX;
1654 s32 posY;
1655 s32 opacity;
1656 s32 palette;
1657
1659 msgID = MSG_Menus_Abilities;
1660 posX = x + 16;
1661 posY = y + 2;
1663 palette = MSG_PAL_30;
1664 } else {
1665 msgID = MSG_Menus_StarSpirits;
1666 posX = x + 6;
1667 posY = y + 2;
1669 palette = MSG_PAL_31;
1670 }
1671 draw_msg(msgID, posX, posY, opacity, palette, DRAW_MSG_STYLE_MENU);
1672}
@ DRAW_MSG_STYLE_MENU
Definition enums.h:5384
@ MSG_PAL_30
Definition enums.h:5452
@ MSG_PAL_31
Definition enums.h:5453

Referenced by btl_submenu_moves_update().

◆ btl_menu_moves_show_icon()

void btl_menu_moves_show_icon ( void * data,
s32 x,
s32 y )

Definition at line 1674 of file btl_states_menus.c.

1674 {
1675 s32 icon = BattleMenu_Moves_TitleID;
1676
1677 hud_element_set_render_pos(icon, x + 16, y + 15);
1680}
BSS HudElemID BattleMenu_Moves_TitleID

Referenced by btl_submenu_moves_update().

◆ btl_menu_moves_show_desc()

void btl_menu_moves_show_desc ( void * data,
s32 x,
s32 y )

Definition at line 1682 of file btl_states_menus.c.

1682 {
1683 switch (battle_menu_moveState) {
1689 if (D_802AD10F != 0) {
1692 }
1693 break;
1694 }
1695}
BSS s8 D_802AD10F
BSS s32 BattleMenu_Moves_OptionDescMessages[24]
@ BTL_SUBMENU_MOVES_STATE_UNK_NEGATIVE_ONE
Definition enums.h:4183
@ BTL_SUBMENU_MOVES_STATE_UNK_14
Definition enums.h:4188
@ BTL_SUBMENU_MOVES_STATE_UNK_1
Definition enums.h:4185
@ BTL_SUBMENU_MOVES_STATE_UNK_1E
Definition enums.h:4189
@ BTL_SUBMENU_MOVES_STATE_UNK_A
Definition enums.h:4186

Referenced by btl_submenu_moves_update().

◆ btl_menu_moves_show_error()

void btl_menu_moves_show_error ( void * data,
s32 x,
s32 y )

Definition at line 1697 of file btl_states_menus.c.

1697 {
1698 s32 posY = y;
1699 s32 posX;
1700 s32 msgID;
1701
1702 posY += 6;
1703 posX = x + 11;
1704
1705 if (D_802AD258 != 0) {
1706 msgID = MSG_Menus_Battle_CantSelectNow;
1707 } else if (!BattleMenu_UsingSpiritsSubmenu) {
1708 msgID = MSG_Menus_NotEnoughFP;
1709 } else {
1710 msgID = MSG_Menus_NotEnoughStarPower;
1711 }
1712 draw_msg(msgID, posX, posY + D_802AB344[get_msg_lines(msgID) - 1], 255, MSG_PAL_0F, 0);
1713}
BSS s32 D_802AD258
s16 D_802AB344[]
@ MSG_PAL_0F
Definition enums.h:5419
s32 get_msg_lines(s32 messageID)
Definition msg.c:1979

Referenced by btl_submenu_moves_update().

◆ btl_menu_strats_draw_content()

void btl_menu_strats_draw_content ( void * data,
s32 x,
s32 y )

Definition at line 2015 of file btl_states_menus.c.

2015 {
2016 s32 var_t0;
2017 s32 temp_f6;
2018 s32 xPos, yPos;
2019 s32 idx;
2020 s32 id;
2021 s32 i;
2022
2023 switch (BattleSubmenuStratsState) {
2031 yPos = -D_802AD608 * 13;
2032 var_t0 = D_802AD60C;
2033 temp_f6 = (yPos - var_t0) * 0.5;
2034 if (temp_f6 != 0) {
2035 var_t0 += temp_f6;
2036 } else {
2037 var_t0 = yPos;
2038 }
2039 D_802AD60C = var_t0;
2040
2041 xPos = x + 4;
2042 yPos = y + 18;
2043 var_t0 = yPos + 1 + (StratsMenuLines * 13);
2044 gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, xPos, yPos, x + 142, var_t0);
2045
2046 xPos = x + 33;
2047 yPos = y + 19 + D_802AD60C;
2048
2049 idx = 0;
2050 for (i = 0; i < D_802AD66C; i++, idx++) {
2051 s32 palette = D_802AD614;
2052
2054 palette = MSG_PAL_37;
2055 }
2056 if (D_802AD690[idx] == 0) {
2057 palette = MSG_PAL_0B;
2058 }
2059 draw_msg(D_802AD658[idx], xPos, yPos - Y_VAR2, D_802AD624, palette, DRAW_MSG_STYLE_MENU);
2060 yPos += 13;
2061 }
2062
2063 xPos = x + 24;
2064 yPos = D_802AD60C + y + 24;
2065
2066 idx = 0;
2067 for (i = 0; i < D_802AD66C; i++, idx++) {
2068 id = D_802AD628[idx];
2069 hud_element_set_render_pos(id, xPos, yPos);
2072 yPos += 13;
2073 }
2074
2075 yPos = (StratsMenuPos - D_802AD608) * 13;
2076 var_t0 = D_802AD60E;
2077 temp_f6 = (yPos - var_t0) * 1.0;
2078 xPos = x + 10;
2079 if (temp_f6 != 0) {
2080 var_t0 += temp_f6;
2081 } else {
2082 var_t0 = yPos;
2083 }
2084 D_802AD60E = var_t0;
2085 yPos = y + 26 + D_802AD60E;
2086
2087 id = D_802AD618;
2088 hud_element_set_render_pos(id, xPos, yPos);
2091
2092 if (D_802AD608 > 0) {
2093 id = HID_GreenArrowUp;
2094 hud_element_set_render_pos(id, x + 67, y + 16);
2097 }
2098 if (D_802AD609 < D_802AD66C) {
2099 id = HID_GreenArrowDown;
2100 hud_element_set_render_pos(id, x + 67, y + 100);
2103 }
2104 break;
2105 }
2106}
BSS s8 D_802AD614
BSS s8 StratsMenuLines
BSS s32 D_802AD678[6]
BSS HudElemID HID_GreenArrowUp
BSS s8 D_802AD609
#define Y_VAR2
BSS s16 D_802AD60C
BSS s32 D_802AD690[6]
BSS s32 D_802AD66C
BSS s8 StratsMenuPos
BSS s32 D_802AD658[5]
BSS s8 D_802AD608
BSS s8 BattleSubmenuStratsState
BSS s16 D_802AD60E
BSS s32 D_802AD618
BSS s32 D_802AD624
BSS HudElemID HID_GreenArrowDown
BSS s32 D_802AD628[5]
@ BTL_SUBMENU_STRATS_STATE_ERROR_INIT
Definition enums.h:4205
@ BTL_SUBMENU_STRATS_STATE_UNK_20
Definition enums.h:4203
@ BTL_SUBMENU_STRATS_STATE_SELECT
Definition enums.h:4198
@ BTL_SUBMENU_STRATS_STATE_UNK_30
Definition enums.h:4204
@ BTL_SUBMENU_STRATS_STATE_ERROR_SHOW
Definition enums.h:4206
@ BTL_SUBMENU_STRATS_STATE_UNK_10
Definition enums.h:4201
@ BTL_SUBMENU_STRATS_STATE_CHOOSE
Definition enums.h:4200
@ ABILITY_QUICK_CHANGE
Definition enums.h:462
s32 is_ability_active(s32 arg0)
Definition inventory.c:1736

Referenced by btl_update_strats_menu().

◆ btl_menu_strats_show_title()

void btl_menu_strats_show_title ( void * data,
s32 x,
s32 y )

Definition at line 2108 of file btl_states_menus.c.

2108 {
2109 draw_msg(MSG_Menus_Strategies, x + 15, y + 2, D_802AD624, MSG_PAL_33, DRAW_MSG_STYLE_MENU);
2110}
@ MSG_PAL_33
Definition enums.h:5455

Referenced by btl_update_strats_menu().

◆ btl_menu_strats_show_desc()

void btl_menu_strats_show_desc ( void * data,
s32 x,
s32 y )

Definition at line 2112 of file btl_states_menus.c.

2112 {
2113 switch (BattleSubmenuStratsState) {
2119 if (D_802AD60B != 0) {
2121 }
2122 break;
2123 }
2124}
BSS s8 D_802AD60B
BSS s32 D_802AD6C0[5]

Referenced by btl_update_strats_menu().

◆ btl_menu_strats_show_error()

void btl_menu_strats_show_error ( void * data,
s32 x,
s32 y )

Definition at line 2126 of file btl_states_menus.c.

2126 {
2127 s32 msgID;
2128 x += 11;
2129 y += 6;
2130
2131 switch (D_802AD610) {
2132 case 0:
2133 msgID = MSG_Menus_Battle_CantSwitch2;
2134 break;
2135 case 1:
2136 msgID = MSG_Menus_Battle_CantRunAway;
2137 break;
2138 default:
2139 msgID = MSG_Menus_Battle_CantRunAway;
2140 break;
2141 }
2142 draw_msg(msgID, x, y, 255, MSG_PAL_0F, 0);
2143}
BSS s16 D_802AD610

Referenced by btl_update_strats_menu().

◆ btl_init_menu_items()

void btl_init_menu_items ( void )

Definition at line 601 of file 190B20.c.

601 {
602 BattleStatus* battleStatus = &gBattleStatus;
603 Actor* player = battleStatus->playerActor;
604 PlayerData* playerData = &gPlayerData;
605 s32 hasValidItem;
606 s32 i;
607
608 battleStatus->menuStatus[0] = 0;
609 hasValidItem = FALSE;
610
611 for (i = 0; i < ARRAY_COUNT(playerData->invItems); i++) {
612 s16 itemID = playerData->invItems[i];
613
614 if (itemID != ITEM_NONE) {
615 ItemData* itemData = &gItemTable[itemID];
616
617 if (itemData->typeFlags & ITEM_TYPE_FLAG_BATTLE_USABLE) {
618 battleStatus->moveCategory = BTL_MENU_TYPE_ITEMS;
619 battleStatus->moveArgument = playerData->invItems[i];
620 battleStatus->curTargetListFlags = itemData->targetFlags;
622
623 if (player->targetListLength != 0) {
624 battleStatus->menuStatus[0]++;
625 hasValidItem = TRUE;
626 }
627 }
628 }
629 }
630
631 if (!hasValidItem) {
632 battleStatus->menuStatus[0] = 0;
633 }
634}
void create_current_pos_target_list(Actor *actor)
Definition 190B20.c:472
s8 targetListLength
s16 invItems[10]
@ BTL_MENU_TYPE_ITEMS
Definition enums.h:4228
@ ITEM_TYPE_FLAG_BATTLE_USABLE
Definition enums.h:1835
#define ARRAY_COUNT(arr)
Definition macros.h:40
s8 moveCategory
0 = jump, 1 = hammer, 5 = partner, ...
s8 menuStatus[4]
-1 = automatically pick the first move, 0 = disabled, 1 = enabled
ItemData gItemTable[]

Referenced by btl_state_update_partner_menu(), and btl_state_update_player_menu().

◆ btl_check_can_change_partner()

void btl_check_can_change_partner ( void )

Definition at line 566 of file 190B20.c.

566 {
567 BattleStatus* battleStatus = &gBattleStatus;
568 PlayerData* playerData = &gPlayerData;
569 Actor* partner = battleStatus->partnerActor;
570
571 battleStatus->changePartnerAllowed = 0;
572 if (partner != NULL) {
573 s32 partnersEnabled;
574 s32 i;
575
576 battleStatus->changePartnerAllowed = 1;
577 partnersEnabled = 0;
578
579 for (i = 0; i < ARRAY_COUNT(playerData->partners); i++) {
580 if (playerData->partners[i].enabled) {
581 partnersEnabled++;
582 }
583 }
584
585 if (partnersEnabled >= 2) {
586 if (partner->koStatus == STATUS_KEY_DAZE) {
587 battleStatus->changePartnerAllowed = 0;
588 } else if (partner->debuff == STATUS_KEY_FROZEN) {
589 battleStatus->changePartnerAllowed = 0;
590 } else if (playerData->curPartner == PARTNER_GOOMPA) {
591 battleStatus->changePartnerAllowed = -1;
592 }
593 } else {
594 battleStatus->changePartnerAllowed = -1;
595 }
596 } else {
597 battleStatus->changePartnerAllowed = -1;
598 }
599}
PartnerData partners[12]
@ STATUS_KEY_FROZEN
Definition enums.h:2203
@ STATUS_KEY_DAZE
Definition enums.h:2209
@ PARTNER_GOOMPA
Definition enums.h:2890
struct Actor * partnerActor

Referenced by btl_state_update_partner_menu(), and btl_state_update_player_menu().

◆ btl_init_menu_partner()

void btl_init_menu_partner ( void )

Definition at line 857 of file 190B20.c.

857 {
858 PlayerData* playerData = &gPlayerData;
859 BattleStatus* battleStatus = &gBattleStatus;
860 Actor* player = battleStatus->playerActor;
861 Actor* partner = battleStatus->partnerActor;
862 s32 fpCost;
863 s32 i;
864 s32 hasAnyBadgeMoves;
865
866 for (i = 0; i < ARRAY_COUNT(battleStatus->submenuMoves); i++) {
867 battleStatus->submenuMoves[i] = 0;
868 }
869
870 // In the move table (enum MoveIDs), partners get move IDs set up like this:
871 //
872 // Move ID offset | Description | Goombario example
873 // ----------------+----------------------+-------------------
874 // 0 | No rank only | Headbonk
875 // 1 | Super rank only | Headbonk (2)
876 // 2 | Ultra rank only | Headbonk (3)
877 // 3 | Always unlocked | Tattle
878 // 4 | Unlocked after super | Charge
879 // 5 | Unlocked after ultra | Multibonk
880
881 battleStatus->submenuMoveCount = partner->actorBlueprint->level + 2;
882
883 // Offsets 0,1,2
884 battleStatus->submenuMoves[0] =
885 playerData->curPartner * 6
886 + (MOVE_HEADBONK1 - 6)
887 + partner->actorBlueprint->level;
888
889 // Offsets 3,4,5
890 for (i = 1; i < battleStatus->submenuMoveCount; i++) {
891 battleStatus->submenuMoves[i] =
892 playerData->curPartner * 6
893 + (MOVE_TATTLE - 6)
894 + (i - 1);
895 }
896
897 hasAnyBadgeMoves = FALSE;
898 for (i = 0; i < battleStatus->submenuMoveCount; i++){
899 MoveData* move = &gMoveTable[battleStatus->submenuMoves[i]];
900
901 fpCost = move->costFP;
902 if (fpCost != 0) {
905 if (fpCost < 1) {
906 fpCost = 1;
907 }
908 }
909
911 battleStatus->moveArgument = partner->actorBlueprint->level;
912 battleStatus->curTargetListFlags = move->flags;
914
915 if (partner->targetListLength != 0){
916 hasAnyBadgeMoves = TRUE;
918 }
919
920 if (partner->targetListLength == 0) {
922 }
923
924 if (playerData->curFP < fpCost) {
926 }
929 }
930 }
931
932 if (!hasAnyBadgeMoves) {
933 battleStatus->menuStatus[3] = -1;
934 } else {
935 battleStatus->menuStatus[3] = 1;
936 }
937}
s32 player_team_is_ability_active(Actor *actor, s32 ability)
Definition 190B20.c:2765
struct ActorBlueprint * actorBlueprint
@ BTL_MENU_TYPE_CHANGE_PARTNER
Definition enums.h:4231
@ BS_FLAGS2_NO_TARGET_AVAILABLE
Definition enums.h:3613
@ BATTLE_SUBMENU_STATUS_ENABLED
Definition enums.h:5226
@ BATTLE_SUBMENU_STATUS_NO_TARGETS
Definition enums.h:5228
@ BATTLE_SUBMENU_STATUS_NOT_ENOUGH_FP
Definition enums.h:5227
@ BATTLE_SUBMENU_STATUS_NO_TARGETS_2
Definition enums.h:5229
@ ABILITY_FLOWER_SAVER
Definition enums.h:460
@ ABILITY_FLOWER_FANATIC
Definition enums.h:474
MoveData gMoveTable[]

Referenced by btl_state_update_partner_menu().

◆ func_800F52BC()

void func_800F52BC ( void )

Definition at line 2368 of file 8a860_len_3f30.c.

2368 {
2370}

Referenced by btl_state_update_partner_menu(), and btl_state_update_player_menu().

◆ func_800F16CC()

void func_800F16CC ( void )

Definition at line 254 of file 8a860_len_3f30.c.

254 {
255 if (PopupNotBattle) {
256 switch (gPopupMenu->popupType) {
269 break;
275 break;
281 break;
282 }
284 } else {
285 switch (gPopupMenu->popupType) {
297 break;
302 break;
307 break;
308 }
309 }
310
314 }
317 }
320 }
326
330 }
334 }
337 }
340 }
344}
BSS s8 D_8010D690
BSS HudElemID PopupMenu_TitleIconHID
BSS HudElemID PopupMenu_CursorHID
BSS HudElemID PopupMenu_EmptybarHID
BSS HudElemID PopupMenu_DownArrowHID
BSS HudElemID PopupMenu_EntryIconHID
BSS HudElemID PopupMenu_PartnerLevelHID
BSS HudElemID PopupMenu_TimesHID
BSS HudElemID PopupMenu_UpArrowHID
@ POPUP_MENU_TRADE_FOR_BADGE
Definition enums.h:3134
@ POPUP_MENU_READ_DIARY_PAGE
Definition enums.h:3141
@ POPUP_MENU_SELL_ITEM
Definition enums.h:3136
@ POPUP_MENU_CHECK_ITEM
Definition enums.h:3137
@ POPUP_MENU_POST_OFFICE
Definition enums.h:3144
@ POPUP_MENU_USE_ITEM
Definition enums.h:3131
@ POPUP_MENU_TAKE_FROM_CHEST
Definition enums.h:3140
@ POPUP_MENU_USEKEY
Definition enums.h:3143
@ POPUP_MENU_CLAIM_ITEM
Definition enums.h:3138
@ POPUP_MENU_READ_LETTER
Definition enums.h:3139
@ POPUP_MENU_UPGRADE_PARTNER
Definition enums.h:3135
@ POPUP_MENU_THROW_AWAY_ITEM
Definition enums.h:3133
@ POPUP_MENU_SWITCH_PARTNER
Definition enums.h:3132
@ POPUP_MENU_READ_POSTCARD
Definition enums.h:3142
@ WINDOW_UPDATE_SHOW
Definition enums.h:5310
@ SOUND_OPEN_POPUP_1
Definition enums.h:548
@ SOUND_OPEN_POPUP_2
Definition enums.h:549
@ POPUP_STATE_20
Definition enums.h:3154
@ WIN_CURRENCY_COUNTER
Definition enums.h:5260
@ WIN_POPUP_DESC
Definition enums.h:5259
@ WIN_POPUP_CONTENT
Definition enums.h:5254
@ WIN_POPUP_COST
Definition enums.h:5256
@ WIN_POPUP_PROMPT
Definition enums.h:5261
@ WIN_PARTNER_COST
Definition enums.h:5258
void set_window_update(s32 panelID, s32)
Definition windows.c:434
void basic_window_update(s32 windowIndex, s32 *flags, s32 *posX, s32 *posY, s32 *posZ, f32 *scaleX, f32 *scaleY, f32 *rotX, f32 *rotY, f32 *rotZ, s32 *darkening, s32 *opacity)
Definition windows.c:161
HudScript HES_AnimatedHandPointer
void hud_element_set_tint(s32 id, s32 r, s32 g, s32 b)
void sfx_play_sound(s32 soundID)
Definition sfx.c:517

Referenced by btl_state_update_partner_menu(), and btl_state_update_player_menu().

◆ btl_init_menu_boots()

void btl_init_menu_boots ( void )

Definition at line 671 of file 190B20.c.

671 {
672 BattleStatus* battleStatus = &gBattleStatus;
673 PlayerData* playerData = &gPlayerData;
674 Actor* player = battleStatus->playerActor;
675 MoveData* move;
676 s32 i;
677 s32 moveCount;
678 s32 hasAnyBadgeMoves;
679 s32 fpCost;
680
681 // If you don't have boots equipped, disable this menu
682 if (playerData->bootsLevel == -1) {
683 battleStatus->menuStatus[1] = 0;
684 return;
685 }
686
687 for (i = 0; i < ARRAY_COUNT(battleStatus->submenuMoves); i++) {
688 battleStatus->submenuMoves[i] = MOVE_NONE;
689 }
690
691 // Standard jump move
692 moveCount = 1;
693 battleStatus->submenuMoves[0] = playerData->bootsLevel + MOVE_JUMP1;
694 battleStatus->submenuIcons[0] = ITEM_PARTNER_ATTACK;
695
696 // Jump badges
697 for (i = 0; i < ARRAY_COUNT(playerData->equippedBadges); i++) {
698 s16 badge = playerData->equippedBadges[i];
699
700 if (badge != ITEM_NONE) {
701 MoveData* moveTable = gMoveTable;
702 u8 moveID = gItemTable[badge].moveID;
703
704 move = &moveTable[moveID];
705 if (move->category == MOVE_TYPE_JUMP) {
706 battleStatus->submenuMoves[moveCount] = moveID;
707 battleStatus->submenuIcons[moveCount] = playerData->equippedBadges[i];
708 moveCount++;
709 }
710 }
711 }
712
713 battleStatus->submenuMoveCount = moveCount;
714
715 hasAnyBadgeMoves = FALSE;
716 for (i = 0; i < battleStatus->submenuMoveCount; i++) {
717 move = &gMoveTable[battleStatus->submenuMoves[i]];
718
719 // Calculate FP cost
720 fpCost = move->costFP;
721 if (fpCost != 0) {
724 if (fpCost < 1) {
725 fpCost = 1;
726 }
727 }
728
729 // See if there are any targets for this move
730 battleStatus->moveCategory = BTL_MENU_TYPE_JUMP;
731 battleStatus->moveArgument = playerData->bootsLevel;
732 battleStatus->curTargetListFlags = move->flags; // Controls target filters
734
735 // If there are targets, enable the move
736 if (player->targetListLength != 0) {
737 hasAnyBadgeMoves = TRUE;
739 }
740
741 // If you don't have enough FP, disable the move
742 if (playerData->curFP < fpCost) {
744 }
745
746 // If there are no targets available, disable the move
747 if (player->targetListLength == 0) {
749 }
751 battleStatus->submenuStatus[moveCount] = BATTLE_SUBMENU_STATUS_NO_TARGETS;
752 }
753 }
754
755 if (!hasAnyBadgeMoves) {
756 // Only the standard jump is available - no badge moves.
757 // Selecting this submenu should immediately pick the standard jump move
758 battleStatus->menuStatus[1] = -1;
759 } else {
760 // Enable this submenu
761 battleStatus->menuStatus[1] = 1;
762 }
763}
s16 equippedBadges[64]
@ BTL_MENU_TYPE_JUMP
Definition enums.h:4226
@ MOVE_TYPE_JUMP
Definition enums.h:5213
s16 submenuIcons[24]

Referenced by btl_state_update_player_menu().

◆ btl_init_menu_hammer()

void btl_init_menu_hammer ( void )

Definition at line 765 of file 190B20.c.

765 {
766 BattleStatus* battleStatus = &gBattleStatus;
767 PlayerData* playerData = &gPlayerData;
768 Actor* player = battleStatus->playerActor;
769 MoveData* move;
770 s32 i;
771 s32 moveCount;
772 s32 hasAnyBadgeMoves;
773 s32 fpCost;
774
775 // If you don't have a hammer, disable this menu
776 if (playerData->hammerLevel == -1) {
777 battleStatus->menuStatus[2] = 0;
778 return;
779 }
780
781 for (i = 0; i < ARRAY_COUNT(battleStatus->submenuMoves); i++) {
782 battleStatus->submenuMoves[i] = 0;
783 }
784
785 // Standard hammer move
786 moveCount = 1;
787 battleStatus->submenuMoves[0] = playerData->hammerLevel + MOVE_HAMMER1;
788 battleStatus->submenuIcons[0] = ITEM_PARTNER_ATTACK;
789
790 // Hammer badges
791 for (i = 0; i < ARRAY_COUNT(playerData->equippedBadges); i++) {
792 s16 badge = playerData->equippedBadges[i];
793 if (badge != MOVE_NONE) {
794 MoveData* moveTable = gMoveTable;
795 u8 moveID = gItemTable[badge].moveID;
796 move = &moveTable[moveID];
797 if (move->category == MOVE_TYPE_HAMMER) {
798 battleStatus->submenuMoves[moveCount] = moveID;
799 battleStatus->submenuIcons[moveCount] = playerData->equippedBadges[i];
800 moveCount++;
801 }
802 }
803 }
804
805 battleStatus->submenuMoveCount = moveCount;
806
807 hasAnyBadgeMoves = FALSE;
808 for (i = 0; i < battleStatus->submenuMoveCount; i++) {
809 move = &gMoveTable[battleStatus->submenuMoves[i]];
810
811 // Calculate FP cost
812 fpCost = move->costFP;
813 if (fpCost != 0) {
816 if (fpCost < 1) {
817 fpCost = 1;
818 }
819 }
820
821 // See if there are any targets for this move
822 battleStatus->moveCategory = BTL_MENU_TYPE_SMASH;
823 battleStatus->moveArgument = playerData->hammerLevel;
824 battleStatus->curTargetListFlags = move->flags;
826
827 // If there are targets, enable the move
828 if (player->targetListLength != 0) {
829 hasAnyBadgeMoves = TRUE;
830 battleStatus->submenuStatus[i] = 1;
831 }
832
833 // If you don't have enough FP, disable the move
834 if (playerData->curFP < fpCost) {
835 battleStatus->submenuStatus[i] = 0;
836 }
837
838 // If there are no targets available, disable the move
839 if (player->targetListLength == 0) {
841 }
843 battleStatus->submenuStatus[moveCount] = BATTLE_SUBMENU_STATUS_NO_TARGETS;
844 }
845 }
846
847 if (!hasAnyBadgeMoves) {
848 // Only the standard hammer is available - no badge moves.
849 // Selecting this submenu should immediately pick the standard hammer move
850 battleStatus->menuStatus[2] = -1;
851 } else {
852 // Enable this submenu
853 battleStatus->menuStatus[2] = 1;
854 }
855}
@ BTL_MENU_TYPE_SMASH
Definition enums.h:4227
@ MOVE_TYPE_HAMMER
Definition enums.h:5212

Referenced by btl_state_update_player_menu().

◆ btl_main_menu_init()

void btl_main_menu_init ( void )

Definition at line 466 of file btl_states_menus.c.

466 {
467 D_802AD006 = 255;
468 BattleMenuAlpha = 255;
471}
BSS s16 BattleMenuAlpha
BSS s8 BattleMenuDisableMsg
BSS s8 BattleMenuState
BSS s16 D_802AD006
@ BTL_MENU_STATE_CREATE
Definition enums.h:4170

Referenced by btl_state_update_partner_menu(), btl_state_update_peach_menu(), btl_state_update_player_menu(), and btl_state_update_twink_menu().

◆ func_802A1030()

void func_802A1030 ( void )

◆ func_802A1050()

void func_802A1050 ( void )

◆ func_802A1078()

void func_802A1078 ( void )

Definition at line 487 of file btl_states_menus.c.

487 {
488 BattleMenuAlpha = 255;
490}
@ BTL_MENU_STATE_UNK_14
Definition enums.h:4175

Referenced by btl_state_update_partner_menu(), and btl_state_update_player_menu().

◆ func_802A1098()

void func_802A1098 ( void )

Definition at line 493 of file btl_states_menus.c.

493 {
494 BattleMenuAlpha = 100;
496}
@ BTL_MENU_STATE_UNK_1E
Definition enums.h:4176

Referenced by btl_state_update_partner_menu(), and btl_state_update_player_menu().

◆ btl_main_menu_destroy()

void btl_main_menu_destroy ( void )

Definition at line 498 of file btl_states_menus.c.

498 {
499 s32 i;
500
501 for (i = 0; i < BattleMenu_NumOptions; i++) {
502 s32* icons1 = D_802AD010;
503 s32* icons2 = D_802AD028;
504
505 hud_element_free(icons1[i]);
506 hud_element_free(icons2[i]);
507 }
508
517}
BSS s32 D_802AD058
BSS s32 D_802AD050
BSS s32 D_802AD05C
BSS s32 D_802AD040
BSS s32 D_802AD010[6]
BSS s32 D_802AD044
BSS s32 BattleMenu_NumOptions
BSS s32 D_802AD028[6]
BSS s32 D_802AD04C
BSS s32 D_802AD048
BSS s32 D_802AD054
void hud_element_free(s32 id)

Referenced by btl_state_update_partner_menu(), btl_state_update_peach_menu(), btl_state_update_player_menu(), and btl_state_update_twink_menu().

◆ btl_main_menu_update()

s32 btl_main_menu_update ( void )

Definition at line 519 of file btl_states_menus.c.

519 {
520 BattleStatus* battleStatus = &gBattleStatus;
521 f32 theta;
522 HudElemID hid;
523 s32 i;
524 f32 x, y;
525 s32 l, t;
526
527 switch (BattleMenuState) {
531 D_802AD070 = 0.3f;
532 D_802AD004 = 0;
538
539 for (i = 0; i < BattleMenu_NumOptions; i++) {
545 hud_element_set_scale(hid, 0.75f);
546
553 }
554
561
565 hud_element_set_render_pos(hid, 40, 212);
566 hud_element_set_tint(hid, 0, 91, 127);
570 hud_element_set_alpha(hid, 240);
571
575 hud_element_set_render_pos(hid, 39, 212);
576 hud_element_set_tint(hid, 0, 91, 127);
580 hud_element_set_alpha(hid, 240);
581
585 hud_element_set_render_pos(hid, 78, 178);
586 hud_element_set_tint(hid, 255, 255, 255);
588 hud_element_set_transform_rotation(hid, 0.0f, 0.0f, -45.0f);
589 hud_element_set_alpha(hid, 200);
593
596 hud_element_set_render_pos(hid, 97, 208);
597 hud_element_set_tint(hid, 255, 255, 255);
600 hud_element_set_alpha(hid, 230);
601
606 hud_element_set_render_pos(hid, 94, 209);
607
612 hud_element_set_render_pos(hid, 81, 210);
613
618 hud_element_set_render_pos(hid, 102, 210);
619 D_802AD00A = 100;
620 D_802AD001 = 3;
622 BattleMenu_WheelAngle = theta = D_802AD100 * 28;
623 break;
625 D_802AD00A = (D_802AD001 * 100) / 3;
626
627 switch (D_802AD001) {
628 case 1:
629 if (D_802AD001 == 1) {
630 hid = D_802AD04C;
632 }
633 default:
634 D_802AD001--;
635 break;
636 case 0:
639 BattleMenu_WheelAngle = theta = D_802AD100 * 28;
640 for (i = 0; i < BattleMenu_NumOptions; i++, theta += 28.0f) {
641 x = 0.0f;
642 y = 0.0f;
643 add_vec2D_polar(&x, &y, 87.0f, theta);
644
645 l = BattleMenu_BasePosX + x;
646 t = BattleMenu_BasePosY + y;
647 hid = D_802AD010[i];
650
651 hid = D_802AD028[i];
653 hud_element_set_alpha(hid, 100);
655 }
656
657 x = 0.0f;
658 y = 0.0f;
659 theta = D_802AD100 * 28;
660 add_vec2D_polar(&x, &y, 87.0f, theta);
661
662 l = BattleMenu_BasePosX + x;
663 t = BattleMenu_BasePosY + y;
664 hid = D_802AD040;
666 hud_element_set_alpha(hid, 180);
667 hud_element_set_scale(hid, 0.85f);
670 break;
671 }
672 break;
674 if (battleStatus->curButtonsPressed & BUTTON_A) {
678 } else {
682 }
683 } else {
685 if (D_802AD004 == 0) {
686 if ((battleStatus->curButtonsHeld & (BUTTON_STICK_LEFT | BUTTON_STICK_UP)) &&
688 {
690 }
691 if ((battleStatus->curButtonsHeld & (BUTTON_STICK_RIGHT | BUTTON_STICK_DOWN)) &&
693 {
695 }
696 }
697
699 D_802AD004 = 1;
701 }
702 }
703 break;
705 BattleMenuAlpha = 100;
708 D_802AD001 = 0;
709 D_802AD006 = 0;
715 D_802AD001 = 3;
716 D_802AD006 = 255;
720 D_802AD001 = 3;
721 D_802AD006 = 255;
723 break;
727 break;
730 break;
731 }
734 break;
735 }
736 return 0;
737}
BSS s8 BattleMenu_MaxIdx
HudScript HES_SwapArrowRight
BSS s8 BattleMenu_CurPos
HudScript HES_ProjectorBeam
HudScript HES_SwapArrowLeft
BSS s32 BattleMenu_BasePosY
HudScript HES_ProjectorReel
BSS s32 D_802AD0B0
BSS s32 D_802AD100
BSS s32 BattleMenu_OptionEnabled[6]
BSS s32 BattleMenu_BasePosX
BSS f32 BattleMenu_WheelAngle
BSS s8 D_802AD004
BSS f32 D_802AD070
BSS s8 BattleMenu_PrevPos
HudScript HES_SwapBackground
HudScript HES_ProjectorSpot
HudScript HES_SwapZ
BSS HudScript * BattleMenu_HudScripts[6]
BSS s32 battle_menu_isMessageDisabled[6]
BSS s8 BattleMenu_MinIdx
BSS s8 BattleMenu_HomePos
BSS s16 D_802AD00A
s32 HudElemID
@ BUTTON_A
Definition enums.h:2790
@ BUTTON_STICK_UP
Definition enums.h:2791
@ BUTTON_STICK_DOWN
Definition enums.h:2792
@ BUTTON_STICK_LEFT
Definition enums.h:2793
@ BUTTON_STICK_RIGHT
Definition enums.h:2794
@ BTL_MENU_STATE_UNK_1
Definition enums.h:4171
@ BTL_MENU_STATE_SHOW_DISABLED_POPUP
Definition enums.h:4177
@ BTL_MENU_STATE_OPENED_SUBMENU
Definition enums.h:4169
@ BTL_MENU_STATE_UNK_B
Definition enums.h:4174
@ BTL_MENU_STATE_AWAIT_DISABLED_POPUP
Definition enums.h:4178
@ SOUND_MENU_CHANGE_TAB
Definition enums.h:699
@ SOUND_MENU_NEXT
Definition enums.h:700
@ SOUND_MENU_ERROR
Definition enums.h:933
void btl_show_battle_message(s32 messageIndex, s32 duration)
s32 btl_is_popup_displayed(void)
void add_vec2D_polar(f32 *x, f32 *y, f32 r, f32 theta)
Definition 43F0.c:684
void hud_element_set_scale(s32 index, f32 scale)
void hud_element_set_render_depth(s32 id, s32 z)
void hud_element_create_transform_B(s32 id)
void hud_element_set_transform_rotation(s32 id, f32 x, f32 y, f32 z)
void hud_element_set_transform_rotation_pivot(s32 id, s32 dx, s32 dy)
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.
@ HUD_ELEMENT_FLAG_DISABLED
Definition hud_element.h:72
@ HUD_ELEMENT_FLAG_80
Definition hud_element.h:78
@ HUD_ELEMENT_FLAG_FILTER_TEX
Definition hud_element.h:86

Referenced by btl_state_update_partner_menu(), btl_state_update_peach_menu(), btl_state_update_player_menu(), and btl_state_update_twink_menu().

◆ btl_main_menu_draw()

void btl_main_menu_draw ( void )

Definition at line 739 of file btl_states_menus.c.

739 {
740 s32 id;
741 s32 opacity;
742 f32 theta;
743 s32 cond;
744 f32 x, y;
745 f32 scale;
746 s32 i;
747 s32 l, t;
748
749 switch (BattleMenuState) {
751 func_80144218(-1);
752 id = D_802AD048;
753 hud_element_set_transform_rotation(id, 0.0f, 0.0f, 0.0f);
754 hud_element_set_alpha(id, (D_802AD006 * 254) / 255);
756 func_80144238(id);
757 id = D_802AD044;
758 hud_element_set_alpha(id, (D_802AD006 * 254) / 255);
760 func_80144238(id);
761 break;
767 opacity = (D_802AD006 * BattleMenuAlpha) / 255;
768 func_80144218(-1);
769 theta = (D_802AD100 - BattleMenu_CurPos) * 28;
770
771 cond = FALSE;
772 if (BattleMenu_WheelAngle > theta) {
774 if (BattleMenu_WheelAngle < theta) {
775 BattleMenu_WheelAngle = theta;
776 cond = TRUE;
777 }
778 } else if (BattleMenu_WheelAngle < theta) {
780 if (BattleMenu_WheelAngle > theta) {
781 BattleMenu_WheelAngle = theta;
782 cond = TRUE;
783 }
784 } else {
785 cond = TRUE;
786 }
787
788 if (!cond) {
789 D_802AD070 = (D_802AD070 * (D_802AD070 + 1.0) * (D_802AD070 + 1.0));
790 } else {
791 D_802AD004 = 0;
792 D_802AD070 = 0.3f;
793 }
794
795 theta = BattleMenu_WheelAngle;
796 for (i = 0; i < BattleMenu_NumOptions; i++, theta += 28.0f) {
797 x = 0.0f;
798 y = 0.0f;
799 add_vec2D_polar(&x, &y, 87.0f, theta);
800 id = D_802AD028[i];
801 x = BattleMenu_BasePosX + x;
802 y = BattleMenu_BasePosY + y;
803 hud_element_set_transform_pos(id, x, -y, 0.0f);
805 hud_element_set_alpha(id, (opacity * 150) / 255);
806
807 if (theta == 56.0f && cond == TRUE) {
808 hud_element_set_scale(id, 1.6f);
809 } else {
810 hud_element_set_scale(id, 1.0f);
811 }
812
813 func_80144238(id);
815 x = 0.0f;
816 y = 0.0f;
817 add_vec2D_polar(&x, &y, 87.0f, 56.0f);
818 x = BattleMenu_BasePosX + x;
819 y = BattleMenu_BasePosY + y;
820 id = D_802AD040;
821 hud_element_set_transform_pos(id, x, -y, 0.0f);
823 hud_element_set_alpha(id, (opacity * 180) / 255);
824 hud_element_set_scale(id, 1.2f);
825 if (!cond) {
827 } else {
829 }
830 func_80144238(id);
831 }
832 }
833 theta = (D_802AD100 - BattleMenu_CurPos) * 28;
834 scale = (fabsf(fabsf((BattleMenu_WheelAngle - theta) * (45.0 / 28.0)) - 22.5) / 22.5) + 0.01;
835 if (cond) {
836 scale = 1.0f;
837 }
838
839 id = D_802AD04C;
841 hud_element_set_transform_rotation(id, 0.0f, 0.0f, -43.0f);
842 hud_element_set_scale(id, scale);
843 hud_element_set_transform_scale(id, 1.0f, 1.8f, 1.0f);
844 hud_element_set_alpha(id, (opacity * 200) / 255);
845 hud_element_set_render_pos(id, 79, 176);
846 func_80144238(id);
847
848 id = D_802AD048;
849 theta = (D_802AD100 - BattleMenu_CurPos) * 28;
850 scale = (BattleMenu_WheelAngle - theta) * (45.0 / 28.0);
851 hud_element_set_transform_rotation(id, 0.0f, 0.0f, -scale);
853 hud_element_set_scale(id, 0.95f);
854 hud_element_set_alpha(id, (opacity * 254) / 255);
856 func_80144238(id);
857
858 id = D_802AD044;
859 hud_element_set_alpha(id, (opacity * 254) / 255);
861 hud_element_set_scale(id, 1.0f);
862 func_80144238(id);
863
864 theta = BattleMenu_WheelAngle;
865 for (i = 0; i < BattleMenu_NumOptions; i++, theta += 28.0f) {
866 x = 0.0f;
867 y = 0.0f;
868 add_vec2D_polar(&x, &y, 87.0f, theta);
869 l = x = BattleMenu_BasePosX + x;
870 t = y = BattleMenu_BasePosY + y;
871 btl_draw_prim_quad(0, 0, 0, 0, l - 12, t - 12, 24, 24);
872 id = D_802AD010[i];
874 hud_element_set_alpha(id, (opacity * 180) / 255);
876 hud_element_set_alpha(id, opacity);
877 }
879 }
880
881 if (cond) {
882 l = BattleMenu_BasePosX + 20;
883 t = BattleMenu_BasePosY - 34;
884 btl_draw_prim_quad(0, 0, 0, 0, l + 26, t, 48, 16);
886 }
887
890 }
891
893 id = D_802AD05C;
894 hud_element_set_alpha(id, (opacity * 200) / 255);
896 id = D_802AD050;
897 hud_element_set_alpha(id, opacity);
899 id = D_802AD054;
900 hud_element_set_alpha(id, opacity);
902 id = D_802AD058;
903 hud_element_set_alpha(id, opacity);
905 }
906 break;
907 }
908}
BSS s32 BattleMenu_TitleMessages[6]
BSS s32 BattleMenu_ShowSwapIcons
@ BS_FLAGS1_TUTORIAL_BATTLE
Definition enums.h:3593
@ MSG_PAL_35
Definition enums.h:5457
f32 fabsf(f32 f)
void btl_draw_prim_quad(u8 r, u8 g, u8 b, u8 a, u16 left, u16 top, u16 arg6, u16 arg7)
Definition 190B20.c:2931
void func_80144238(s32 id)
void hud_element_set_transform_pos(s32 id, f32 x, f32 y, f32 z)
void hud_element_set_transform_scale(s32 id, f32 x, f32 y, f32 z)
void func_80144218(s32 id)

Referenced by btl_state_draw_partner_menu(), btl_state_draw_peach_menu(), btl_state_draw_player_menu(), and btl_state_draw_twink_menu().

◆ func_802A2684()

void func_802A2684 ( void )

Definition at line 911 of file btl_states_menus.c.

Referenced by btl_state_update_partner_menu(), and btl_state_update_player_menu().

◆ func_802A27D0()

void func_802A27D0 ( void )

◆ func_802A27E4()

void func_802A27E4 ( void )

Definition at line 955 of file btl_states_menus.c.

Referenced by btl_state_update_partner_menu(), btl_state_update_player_menu(), and btl_submenu_moves_update().

◆ func_802A2910()

void func_802A2910 ( void )

Definition at line 984 of file btl_states_menus.c.

984 {
985 s32* moveOptionIconIDs;
986 s32* moveOptionCostUnitIconIDs;
987 s32 i;
988
989 moveOptionIconIDs = BattleMenu_Moves_OptionIDs;
990
991 for (i = 0; i < BattleMenu_Moves_OptionCount; i++) {
992 hud_element_set_tint(moveOptionIconIDs[i], 255, 255, 255);
993 }
994
999
1000 moveOptionCostUnitIconIDs = BattleMenu_Moves_OptionCostUnitIDs;
1001
1002 for (i = 0; i < BattleMenu_Moves_OptionCount; i++) {
1003 hud_element_set_tint(moveOptionCostUnitIconIDs[i], 255, 255, 255);
1004 }
1005
1008
1012 } else {
1015 }
1016
1019 D_802AD10F = 1;
1022}
@ WINDOW_UPDATE_TRANSPARENT
Definition enums.h:5314

Referenced by btl_state_update_player_menu().

◆ func_802A2AB8()

void func_802A2AB8 ( void )

Definition at line 1024 of file btl_states_menus.c.

1024 {
1025 s32* moveOptionIconIDs;
1026 s32* moveOptionCostUnitIconIDs;
1027 s32 i;
1028
1030
1034 } else {
1037 }
1039
1040 moveOptionIconIDs = BattleMenu_Moves_OptionIDs;
1041
1042 for (i = 0; i < BattleMenu_Moves_OptionCount; i++) {
1043 hud_element_set_tint(moveOptionIconIDs[i], 255, 255, 255);
1044 }
1045
1050
1051 moveOptionCostUnitIconIDs = BattleMenu_Moves_OptionCostUnitIDs;
1052
1053 for (i = 0; i < BattleMenu_Moves_OptionCount; i++) {
1054 hud_element_set_tint(moveOptionCostUnitIconIDs[i], 255, 255, 255);
1055 }
1056
1059 D_802AD10F = 1;
1061}

Referenced by btl_state_update_partner_menu(), and btl_state_update_player_menu().

◆ func_802A2C58()

void func_802A2C58 ( void )

◆ btl_submenu_moves_update()

s32 btl_submenu_moves_update ( void )

Definition at line 1068 of file btl_states_menus.c.

1068 {
1069 BattleStatus* battleStatus = &gBattleStatus;
1070 s32 moveX;
1071 s32 moveY;
1072 s32 msgWidth;
1073 s32 msgX;
1074 s32 msgID;
1075 s32 cond;
1076 HudElemID hid;
1077 s32 i;
1078 s32 j;
1079
1080 switch (battle_menu_moveState) {
1086
1087 for (i = 0; i < BattleMenu_Moves_OptionCount; i++) {
1089 }
1090
1092 for (i = 0; i < (BattleMenu_Moves_OptionCount - 1); i++) {
1093 for (j = i + 1; j < BattleMenu_Moves_OptionCount; j++) {
1094 s32 temp1 = BattleMenu_Moves_OptionIndexMap[i];
1095 s32 temp2 = BattleMenu_Moves_OptionIndexMap[j];
1096
1098 continue;
1099 }
1100
1101 if (
1106 )
1107 {
1108 s32 swapTmp = BattleMenu_Moves_OptionIndexMap[i];
1111 }
1112 }
1113 }
1114 }
1115
1116 for (i = 0; i < BattleMenu_Moves_OptionCount; i++) {
1119 hud_element_set_scale(hid, 0.45f);
1121 }
1122
1127
1132
1137
1142 } else {
1145 hud_element_set_scale(hid, 0.75f);
1147 }
1149
1150 for (i = 0; i < BattleMenu_Moves_OptionCount; i++) {
1153 case 0:
1156 break;
1157 case 1:
1160 break;
1161 default:
1164 break;
1165 }
1166 } else {
1168 case 0:
1171 break;
1172 case 1:
1175 break;
1176 default:
1179 break;
1180 }
1181 }
1184 }
1185
1187
1188 moveX = BattleMenu_Moves_PosX;
1189 moveY = BattleMenu_Moves_PosY;
1191 set_window_properties(WIN_BTL_MOVES_MENU, moveX, moveY, 150, (D_802AD10E * 13) + 28, 0, btl_menu_moves_draw_content, NULL, -1);
1192 set_window_properties(WIN_BTL_MOVES_TITLE, moveX + 16, moveY - 6, 90, 16, 1, btl_menu_moves_show_title, NULL, -1);
1193 set_window_properties(WIN_BTL_MOVES_ICON, moveX + 114, moveY - 12, 32, 32, 1, btl_menu_moves_show_icon, NULL, -1);
1194 } else {
1195 set_window_properties(WIN_BTL_MOVES_MENU, moveX, moveY, 144, (D_802AD10E * 13) + 28, 0, btl_menu_moves_draw_content, NULL, -1);
1196 set_window_properties(WIN_BTL_SPIRITS_TITLE, moveX + 10, moveY - 6, 100, 16, 1, btl_menu_moves_show_title, 0, -1);
1197 set_window_properties(WIN_BTL_SPIRITS_ICON, moveX + 110, moveY - 12, 32, 35, 1, btl_menu_moves_show_icon, 0, -1);
1198 }
1199
1205 } else {
1208 }
1210
1211 do {
1212 cond = FALSE;
1219 }
1220 } else {
1221 cond = TRUE;
1222 }
1223 }
1224 } while (cond);
1225
1230 break;
1233 if (battleStatus->curButtonsHeld & (BUTTON_STICK_UP | BUTTON_Z)) {
1234 if (battle_menu_moveCursorPos > 0) {
1236 } else if (battleStatus->curButtonsPressed & (BUTTON_STICK_UP | BUTTON_Z)) {
1238 }
1239 }
1240
1241 if (battleStatus->curButtonsHeld & (BUTTON_STICK_DOWN | BUTTON_R)) {
1244 } else if (battleStatus->curButtonsPressed & (BUTTON_STICK_DOWN | BUTTON_R)) {
1246 }
1247 }
1248
1249 if (battle_menu_moveCursorPos < 0) {
1251 }
1252
1255 }
1256
1260 }
1261
1266 }
1267 }
1268
1275 }
1276 }
1277 }
1278
1280 if (battleStatus->curButtonsPressed & BUTTON_A) {
1284 } else {
1288 }
1289 break;
1290 }
1291
1292 if (battleStatus->curButtonsPressed & BUTTON_B) {
1294 func_802A27E4();
1296 }
1297 break;
1299 for (i = 0; i < BattleMenu_Moves_OptionCount; i++) {
1301 hud_element_set_tint(hid, 160, 160, 160);
1302 }
1307
1308 for (i = 0; i < BattleMenu_Moves_OptionCount; i++) {
1310 hud_element_set_tint(hid, 160, 160, 160);
1311 }
1312
1319 } else {
1322 }
1326 } else {
1328 }
1334 } else {
1336 }
1337 return 255;
1343 } else {
1346 }
1350 } else {
1352 }
1364 } else {
1367 }
1377 } else {
1380 }
1383 break;
1387 return -1;
1393 } else {
1396 }
1398
1399 msgID = MSG_Menus_Battle_CantSelectNow;
1400 if (D_802AD258 == 0) {
1402 msgID = MSG_Menus_NotEnoughFP;
1403 } else {
1404 msgID = MSG_Menus_NotEnoughStarPower;
1405 }
1406 }
1407
1408 msgWidth = get_msg_width(msgID, 0) + 23;
1409 moveX = (SCREEN_WIDTH / 2) - (msgWidth / 2);
1410 set_window_properties(WIN_BTL_POPUP, moveX, 80, msgWidth, D_802AB340[get_msg_lines(msgID) - 1], 20, btl_menu_moves_show_error, NULL, -1);
1412 D_802AD10B = 60;
1414 return -1;
1417 D_802AD10B = 0;
1418 }
1419 if (D_802AD10B != 0) {
1420 D_802AD10B--;
1421 return -1;
1422 }
1428 } else {
1431 }
1434 break;
1435 }
1436 return 0;
1437}
HudScript HES_POWCostReducedTwice
s16 D_802AB340[]
BSS s32 battle_menu_moveOptionBPCosts[24]
void btl_menu_moves_show_error(void *data, s32 x, s32 y)
HudScript HES_FPCostReducedTwice
HudScript HES_HandPointer
BSS HudScript * battle_menu_moveOptionIconScripts[24]
void btl_menu_moves_show_desc(void *data, s32 x, s32 y)
void btl_menu_moves_show_title(void *data, s32 x, s32 y)
HudScript HES_GreenArrowDown
BSS s16 BattleMenu_Moves_PosX
BSS s8 BattleMenu_Moves_OptionCantUseMessages[24]
HudScript HES_GreenArrowUp
BSS s16 BattleMenu_Moves_PosY
HudScript HES_FPCost
void btl_menu_moves_draw_content(void *data, s32 x, s32 y)
HudScript HES_POWCostReduced
HudScript HES_POWCost
BSS s8 D_802AD10B
void btl_menu_moves_show_icon(void *data, s32 x, s32 y)
void func_802A27E4(void)
HudScript HES_FPCostReduced
HudScript HES_StatusFlower
BSS s8 BattleMenu_Moves_OptionSortPriority[24]
HudScript HES_MenuStarPower
u32 pressedButtons[4]
#define get_msg_width
@ BUTTON_R
Definition enums.h:2781
@ BUTTON_B
Definition enums.h:2789
@ BUTTON_Z
Definition enums.h:2788
@ WINDOW_PRIORITY_20
Definition enums.h:3186
@ MSG_PAL_0D
Definition enums.h:5417
@ WINDOW_UPDATE_9
Definition enums.h:5318
@ WINDOW_UPDATE_DARKENED
Definition enums.h:5313
@ BTL_SUBMENU_MOVES_STATE_UNK_2A
Definition enums.h:4192
@ BTL_SUBMENU_MOVES_STATE_UNK_B
Definition enums.h:4187
@ BTL_SUBMENU_MOVES_STATE_UNK_28
Definition enums.h:4190
@ BTL_SUBMENU_MOVES_STATE_UNK_29
Definition enums.h:4191
@ BTL_SUBMENU_MOVES_STATE_UNK_NEGATIVE_TWO
Definition enums.h:4182
@ SOUND_MENU_BACK
Definition enums.h:701
@ SOUND_MENU_CHANGE_SELECTION
Definition enums.h:698
@ WIN_BTL_POPUP
Definition enums.h:5249
void set_window_properties(s32 panelID, s32 posX, s32 posY, s32 width, s32 height, u8, void *drawContents, void *drawContentsArg, s8 parent)
Definition windows.c:373
@ HUD_ELEMENT_FLAG_DROP_SHADOW
#define SCREEN_WIDTH
Definition macros.h:109
GameStatus * gGameStatusPtr
Definition main_loop.c:32

Referenced by btl_state_update_partner_menu(), and btl_state_update_player_menu().

◆ func_802A45D8()

void func_802A45D8 ( void )

Definition at line 1715 of file btl_states_menus.c.

1715 {
1716 s32 sixTemp;
1717 s8 temp802AD673;
1718
1722 D_802AD608 = 0;
1724
1725 if (StratsMenuLines > 6) {
1726 StratsMenuLines = 6;
1727 }
1728
1729 D_802AD609 = sixTemp = 6;
1730
1731 if (D_802AD609 > D_802AD66C) {
1733 }
1734
1735 D_802AD624 = 255;
1736 D_802AD60B = 1;
1737 temp802AD673 = StratsMenuLastPos;
1738
1739 if ((s8) StratsMenuLastPos < 0) {
1741 }
1742 if ((s8) StratsMenuLastPos >= D_802AD609) {
1743 D_802AD608 = (temp802AD673 + 1 - StratsMenuLines);
1744 }
1745
1746 D_802AD609 = D_802AD608 + sixTemp;
1747 if (D_802AD609 > D_802AD66C) {
1749 }
1750
1751 D_802AD60C = -D_802AD608 * 13;
1752 D_802AD60E = ((s8) StratsMenuLastPos - D_802AD608) * 13;
1753 ShowingErrorMessage = FALSE;
1754 D_802AD6D4 = 0;
1755}
BSS s32 D_802AD6D4
BSS s8 OldStratsMenuPos
BSS s8 ShowingErrorMessage
BSS s32 StratsMenuLastPos
@ BTL_SUBMENU_STRATS_STATE_INIT
Definition enums.h:4199

Referenced by btl_state_update_partner_menu(), and btl_state_update_player_menu().

◆ func_802A4718()

void func_802A4718 ( void )

◆ func_802A472C()

◆ func_802A47E0()

◆ func_802A48FC()

◆ func_802A4A10()

◆ btl_update_strats_menu()

s32 btl_update_strats_menu ( void )

Definition at line 1824 of file btl_states_menus.c.

1824 {
1825 BattleStatus* battleStatus = &gBattleStatus;
1826 HudElemID hid;
1827 s32 x, y;
1828 s32 width;
1829 s32 msgID;
1830 s32 i;
1831
1832 switch (BattleSubmenuStratsState) {
1834 D_802AD63C = 20;
1835 D_802AD63E = 68;
1836 D_802AD60C = -D_802AD608 * 13;
1838
1839 for (i = 0; i < D_802AD66C; i++) {
1841 hud_element_set_scale(hid, 0.45f);
1843 }
1844
1848
1852
1856
1858 x = D_802AD63C;
1859 y = D_802AD63E;
1861 set_window_properties(WIN_BTL_STRATS_TITLE, x + 18, y - 6, 108, 16, 1, btl_menu_strats_show_title, NULL, -1);
1862 x = 20;
1863 y = 186;
1869 return 0;
1871 if (!ShowingErrorMessage) {
1873
1874 // only wrap selection on stick press, not when held
1875 if (battleStatus->curButtonsHeld & BUTTON_STICK_UP) {
1876 if (StratsMenuPos > 0) {
1877 StratsMenuPos--;
1878 } else if (battleStatus->curButtonsPressed & BUTTON_STICK_UP) {
1879 StratsMenuPos--;
1880 }
1881 }
1882
1883 if (battleStatus->curButtonsHeld & BUTTON_STICK_DOWN) {
1884 if (StratsMenuPos < D_802AD66C - 1) {
1885 StratsMenuPos++;
1886 } else if (battleStatus->curButtonsPressed & BUTTON_STICK_DOWN) {
1887 StratsMenuPos++;
1888 }
1889 }
1890
1891 // wrap the selected index
1892 if (StratsMenuPos < 0) {
1894 }
1895 if (D_802AD66C - 1 < StratsMenuPos) {
1896 StratsMenuPos = 0;
1897 }
1898
1902 }
1903
1904 if (StratsMenuPos < D_802AD608) {
1906 }
1907 if (StratsMenuPos >= D_802AD609) {
1909 }
1910 D_802AD609 = D_802AD608 + 6;
1911 if (D_802AD609 > D_802AD66C) {
1913 }
1914
1915 if (battleStatus->curButtonsPressed & BUTTON_A) {
1916 if (D_802AD690[StratsMenuPos] == 1) {
1919 } else {
1923 }
1924 } else if (battleStatus->curButtonsPressed & BUTTON_B) {
1926 func_802A472C();
1928 }
1929 }
1930 return 0;
1932 for (i = 0; i < D_802AD66C; i++) {
1933 hud_element_set_tint(D_802AD628[i], 160, 160, 160);
1934 }
1935 hud_element_set_tint(D_802AD618, 160, 160, 160);
1936 hud_element_set_tint(HID_GreenArrowUp, 160, 160, 160);
1943 return StratsMenuPos + 1;
1945 return 255;
1946 case 10:
1951 return StratsMenuPos + 1;
1952 case 11:
1953 return StratsMenuPos + 1;
1954 case 20:
1959 return StratsMenuPos + 1;
1960 case 30:
1965 return 0;
1967 D_802AD6D4 = -1;
1969 return -1;
1974 switch (D_802AD610) {
1975 case 0:
1976 msgID = MSG_Menus_Battle_CantSwitch2;
1977 break;
1978 case 1:
1979 msgID = MSG_Menus_Battle_CantRunAway;
1980 break;
1981 default:
1982 msgID = MSG_Menus_Battle_CantRunAway;
1983 break;
1984 }
1985 width = get_msg_width(msgID, 0) + 23;
1986 set_window_properties(WIN_BTL_POPUP, (SCREEN_WIDTH / 2) - (width / 2), 80, width, 28, 20, btl_menu_strats_show_error, NULL, -1);
1988 D_802AD612 = 60;
1990 return -1;
1993 D_802AD612 = 0;
1994 }
1995 if (D_802AD612 != 0) {
1996 D_802AD612--;
1997 return -1;
1998 }
2004 return 0;
2005 }
2006 return 0;
2007}
BSS s16 D_802AD612
BSS s32 D_802AD6A8[6]
BSS s16 D_802AD63E
void btl_menu_strats_show_title(void *data, s32 x, s32 y)
void btl_menu_strats_show_desc(void *data, s32 x, s32 y)
void btl_menu_strats_draw_content(void *data, s32 x, s32 y)
void func_802A472C(void)
void btl_menu_strats_show_error(void *data, s32 x, s32 y)
BSS s16 D_802AD63C
BSS HudScript * D_802AD640[6]
@ BTL_SUBMENU_STRATS_STATE_CANCEL
Definition enums.h:4197
@ BTL_SUBMENU_STRATS_STATE_ERROR_DONE
Definition enums.h:4207
@ BTL_SUBMENU_STRATS_STATE_UNK_11
Definition enums.h:4202

Referenced by btl_state_update_partner_menu(), and btl_state_update_player_menu().

◆ can_switch_to_player()

s32 can_switch_to_player ( void )

Definition at line 2145 of file btl_states_menus.c.

2145 {
2146 BattleStatus* battleStatus = &gBattleStatus;
2147 Actor* player = battleStatus->playerActor;
2148
2149 if (battleStatus->flags2 & BS_FLAGS2_PLAYER_TURN_USED) {
2150 return FALSE;
2151 } else {
2152 s8 debuff = player->debuff;
2153 s32 playerCantMove = FALSE;
2154
2155 if (player->koStatus == STATUS_KEY_DAZE) {
2156 playerCantMove = TRUE;
2157 }
2158 if (debuff == STATUS_KEY_POISON) {
2159 playerCantMove = FALSE;
2160 }
2161 if (debuff == STATUS_KEY_SHRINK) {
2162 playerCantMove = FALSE;
2163 }
2164 if (debuff == STATUS_KEY_SLEEP) {
2165 playerCantMove = TRUE;
2166 }
2167 if (debuff == STATUS_KEY_FEAR) {
2168 playerCantMove = TRUE;
2169 }
2170 if (debuff == STATUS_KEY_DIZZY) {
2171 playerCantMove = TRUE;
2172 }
2173 if (debuff == STATUS_KEY_PARALYZE) {
2174 playerCantMove = TRUE;
2175 }
2176 if (debuff == STATUS_KEY_FROZEN) {
2177 playerCantMove = TRUE;
2178 }
2179 if (debuff == STATUS_KEY_STOP) {
2180 playerCantMove = TRUE;
2181 }
2182 if (player->stoneStatus == STATUS_KEY_STONE) {
2183 playerCantMove = TRUE;
2184 }
2185 if (battleStatus->outtaSightActive) {
2186 playerCantMove = TRUE;
2187 }
2188 return !playerCantMove;
2189 }
2190}
@ BS_FLAGS2_PLAYER_TURN_USED
Definition enums.h:3604
@ STATUS_KEY_PARALYZE
Definition enums.h:2201
@ STATUS_KEY_FEAR
Definition enums.h:2199
@ STATUS_KEY_SLEEP
Definition enums.h:2202
@ STATUS_KEY_STONE
Definition enums.h:2208
@ STATUS_KEY_STOP
Definition enums.h:2204
@ STATUS_KEY_SHRINK
Definition enums.h:2206

Referenced by btl_state_update_partner_menu(), and btl_state_update_player_menu().

◆ can_switch_to_partner()

s32 can_switch_to_partner ( void )

Definition at line 2194 of file btl_states_menus.c.

2194 {
2195 BattleStatus* battleStatus = &gBattleStatus;
2196 Actor* partner = battleStatus->partnerActor;
2197 s8 partnerDebuff;
2198 s32 partnerCantMove;
2199
2200 if (battleStatus->flags2 & BS_FLAGS2_PARTNER_TURN_USED || partner == PARTNER_NONE || partner->flags & ACTOR_FLAG_NO_ATTACK) {
2201 return FALSE;
2202 }
2203
2204 partnerDebuff = partner->debuff;
2205 partnerCantMove = FALSE;
2206
2207 if (partner->koStatus == STATUS_KEY_DAZE) {
2208 partnerCantMove = TRUE;
2209 }
2210 if (partnerDebuff == STATUS_KEY_POISON) {
2211 partnerCantMove = FALSE;
2212 }
2213 if (partnerDebuff == STATUS_KEY_SHRINK) {
2214 partnerCantMove = FALSE;
2215 }
2216 if (partnerDebuff == STATUS_KEY_SLEEP) {
2217 partnerCantMove = TRUE;
2218 }
2219 if (partnerDebuff == STATUS_KEY_FEAR) {
2220 partnerCantMove = TRUE;
2221 }
2222 if (partnerDebuff == STATUS_KEY_PARALYZE) {
2223 partnerCantMove = TRUE;
2224 }
2225 if (partnerDebuff == STATUS_KEY_FROZEN) {
2226 partnerCantMove = TRUE;
2227 }
2228 if (partnerDebuff == STATUS_KEY_STOP) {
2229 partnerCantMove = TRUE;
2230 }
2231 if (partner->stoneStatus == STATUS_KEY_STONE) {
2232 partnerCantMove = TRUE;
2233 }
2234 return !partnerCantMove;
2235}
@ BS_FLAGS2_PARTNER_TURN_USED
Definition enums.h:3605
@ ACTOR_FLAG_NO_ATTACK
Skip attack turn.
Definition enums.h:3339
@ PARTNER_NONE
Definition enums.h:2885

Referenced by btl_state_update_partner_menu(), and btl_state_update_player_menu().

◆ btl_state_update_player_menu()

void btl_state_update_player_menu ( void )

Definition at line 2237 of file btl_states_menus.c.

2237 {
2238 BattleStatus* battleStatus = &gBattleStatus;
2239 PlayerData* playerData = &gPlayerData;
2240 Actor* playerActor = battleStatus->playerActor;
2241 Actor* partnerActor = battleStatus->partnerActor;
2242 PopupMenu* popup = &D_802ACCD0;
2243 MoveData* moveData;
2244 s32 entryIdx, initialPos;
2245 s32 i;
2246 s32 submenuResult;
2247 s32 jumpTargetCount, hammerTargetCount, jumpChance;
2248 ItemData* itemData;
2249 s32 starBeamLevel;
2250 s32 currentSubmenu;
2251 s32 currentSubmenu2;
2252 IconHudScriptPair* hudScriptPair;
2254
2255 switch (gBattleSubState) {
2257 battleStatus->moveCategory = BTL_MENU_TYPE_INVALID;
2258 battleStatus->selectedMoveID = 0;
2259 battleStatus->curAttackElement = 0;
2260 if (!can_switch_to_player()) {
2262 return;
2263 }
2265 btl_cam_move(10);
2266 if (!(battleStatus->flags1 & BS_FLAGS1_PLAYER_IN_BACK)) {
2268 } else {
2270 partnerActor->state.curPos.x = partnerActor->homePos.x;
2271 partnerActor->state.curPos.z = partnerActor->homePos.z;
2272 partnerActor->state.goalPos.x = playerActor->homePos.x;
2273 partnerActor->state.goalPos.z = playerActor->homePos.z;
2274 partnerActor->state.moveTime = 4;
2275 partnerActor->state.angle = 0.0f;
2276 }
2277 break;
2279 if (partnerActor->state.moveTime != 0) {
2280 partnerActor->curPos.x += (partnerActor->state.goalPos.x - partnerActor->curPos.x) / partnerActor->state.moveTime;
2281 partnerActor->curPos.z += (partnerActor->state.goalPos.z - partnerActor->curPos.z) / partnerActor->state.moveTime;
2282 playerActor->curPos.x += (partnerActor->state.curPos.x - playerActor->curPos.x) / partnerActor->state.moveTime;
2283 playerActor->curPos.z += (partnerActor->state.curPos.z - playerActor->curPos.z) / partnerActor->state.moveTime;
2284 }
2285 partnerActor->curPos.z -= sin_rad(DEG_TO_RAD(partnerActor->state.angle)) * 16.0f;
2286 partnerActor->yaw = clamp_angle(-partnerActor->state.angle);
2287 playerActor->curPos.z += sin_rad(DEG_TO_RAD(partnerActor->state.angle)) * 16.0f;
2288 playerActor->yaw = clamp_angle(-partnerActor->state.angle);
2289 partnerActor->state.angle += 90.0f;
2290 if (partnerActor->state.moveTime != 0) {
2291 partnerActor->state.moveTime--;
2292 } else {
2293 partnerActor->curPos.x = partnerActor->state.goalPos.x;
2294 partnerActor->curPos.z = partnerActor->state.goalPos.z;
2295 playerActor->curPos.x = partnerActor->state.curPos.x;
2296 playerActor->curPos.z = partnerActor->state.curPos.z;
2297 partnerActor->homePos.x = partnerActor->curPos.x;
2298 partnerActor->homePos.z = partnerActor->curPos.z;
2299 playerActor->homePos.x = playerActor->curPos.x;
2300 playerActor->homePos.z = playerActor->curPos.z;
2302 battleStatus->flags1 &= ~BS_FLAGS1_PLAYER_IN_BACK;
2303 }
2304 break;
2305 }
2306
2307 switch (gBattleSubState) {
2310 playerActor->flags &= ~ACTOR_FLAG_USING_IDLE_ANIM;
2311 playerActor->flags |= ACTOR_FLAG_SHOW_STATUS_ICONS;
2312 if (partnerActor != NULL) {
2313 partnerActor->flags |= ACTOR_FLAG_USING_IDLE_ANIM;
2314 partnerActor->flags |= ACTOR_FLAG_SHOW_STATUS_ICONS;
2315 }
2322 break;
2323 }
2324
2325 entryIdx = 0;
2326 initialPos = 2;
2327 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_MAIN] < 0) {
2328 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_MAIN] = 0;
2329 }
2330
2331 // strategies menu category
2333 BattleMenu_OptionEnabled[entryIdx] = TRUE;
2337 BattleMenu_TitleMessages[entryIdx] = MSG_Menus_EndTraining_Centered;
2338 }
2339 battle_menu_isMessageDisabled[entryIdx] = 0;
2340 if (!(battleStatus->enabledMenusFlags & BTL_MENU_ENABLED_STRATEGIES)) {
2342 BattleMenu_OptionEnabled[entryIdx] = FALSE;
2344 }
2346 initialPos = entryIdx;
2347 }
2348 entryIdx++;
2349
2350 // items menu category
2351 if (battleStatus->menuStatus[0] >= 0) {
2354 BattleMenu_OptionEnabled[entryIdx] = TRUE;
2356
2357 if(battleStatus->menuStatus[0] == 0) {
2359 BattleMenu_OptionEnabled[entryIdx] = FALSE;
2361 }
2362
2363 if (!(battleStatus->enabledMenusFlags & BTL_MENU_ENABLED_ITEMS)) {
2365 BattleMenu_OptionEnabled[entryIdx] = FALSE;
2367 }
2368
2369 if (battleStatus->itemLossTurns >= 0) {
2371 BattleMenu_OptionEnabled[entryIdx] = FALSE;
2373 }
2374
2376 initialPos = entryIdx;
2377 }
2378
2379 entryIdx++;
2380 }
2381
2382 // jump menu category
2385 BattleMenu_OptionEnabled[entryIdx] = TRUE;
2387
2388 if (battleStatus->menuStatus[1] <= 0) {
2390 BattleMenu_OptionEnabled[entryIdx] = FALSE;
2392 }
2393 if (!(battleStatus->enabledMenusFlags & BTL_MENU_ENABLED_JUMP)) {
2395 BattleMenu_OptionEnabled[entryIdx] = FALSE;
2397 }
2398 if (battleStatus->jumpLossTurns >= 0) {
2400 BattleMenu_OptionEnabled[entryIdx] = FALSE;
2402 }
2404 initialPos = entryIdx;
2405 }
2406 entryIdx++;
2407
2408 // hammer menu category
2409 if (playerData->hammerLevel >= 0) {
2412 BattleMenu_OptionEnabled[entryIdx] = TRUE;
2414 if (battleStatus->menuStatus[2] <= 0) {
2416 BattleMenu_OptionEnabled[entryIdx] = FALSE;
2418 }
2419 if (!(battleStatus->enabledMenusFlags & BTL_MENU_ENABLED_SMASH)) {
2421 BattleMenu_OptionEnabled[entryIdx] = FALSE;
2423 }
2424 if (battleStatus->hammerLossTurns >= 0) {
2426 BattleMenu_OptionEnabled[entryIdx] = FALSE;
2428 }
2430 initialPos = entryIdx;
2431 }
2432 entryIdx++;
2433 }
2434
2435 // star powers menu category
2436 if (playerData->maxStarPower != 0) {
2439 BattleMenu_OptionEnabled[entryIdx] = TRUE;
2441 battle_menu_isMessageDisabled[entryIdx] = 0;
2442 if (!(battleStatus->enabledMenusFlags & BTL_MENU_ENABLED_STAR_POWERS)) {
2444 BattleMenu_OptionEnabled[entryIdx] = FALSE;
2446 }
2448 initialPos = entryIdx;
2449 }
2450 entryIdx++;
2451 }
2452
2453 BattleMenu_NumOptions = entryIdx;
2454 D_802AD0A8 = 0;
2455 D_802AD0B0 = initialPos;
2456 D_802AD100 = 2 - initialPos;
2457 if (can_switch_to_partner()) {
2459 } else {
2461 }
2463 D_802ACC60 = 8;
2466 break;
2468 if (battleStatus->hustleTurns != 0) {
2469 set_actor_anim(ACTOR_PLAYER, 0, ANIM_Mario1_ThinkingRun);
2470 } else {
2472 }
2473 submenuResult = btl_main_menu_update();
2474 if (BattleMenu_SwapDelay != 0) {
2477 if (can_switch_to_partner() && battleStatus->hustleTurns != 1) {
2482 } else if (partnerActor != NULL && !(partnerActor->flags & BS_FLAGS1_YIELD_TURN) && battleStatus->hustleTurns != 1) {
2485 }
2486 break;
2487 }
2488
2489 if (D_802ACC60 != 0) {
2490 D_802ACC60--;
2491 break;
2492 }
2493
2494 if (submenuResult == 0) {
2495 break;
2496 }
2497
2498 set_actor_anim(ACTOR_PLAYER, 0, ANIM_Mario1_Walk);
2499 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_MAIN] = battleStatus->curSubmenu = battle_menu_submenuIDs[submenuResult - 1];
2500 for (i = 0; i < ARRAY_COUNT(battleStatus->submenuMoves); i++) {
2501 battleStatus->submenuMoves[i] = 0;
2502 battleStatus->submenuIcons[i] = 0;
2503 battleStatus->submenuStatus[i] = 0;
2504 }
2505
2506 switch (battleStatus->curSubmenu) {
2509 battleStatus->submenuIcons[0] = ITEM_PARTNER_ATTACK;
2510 battleStatus->submenuStatus[0] = 1;
2511 for (i = 0; i < ARRAY_COUNT(playerData->invItems); i++) {
2512 if (playerData->invItems[i] == ITEM_NONE) {
2513 continue;
2514 }
2515 itemData = &gItemTable[playerData->invItems[i]];
2516
2517 battleStatus->moveCategory = BTL_MENU_TYPE_ITEMS;
2518 battleStatus->moveArgument = playerData->invItems[i];
2519 battleStatus->curTargetListFlags = itemData->targetFlags;
2520 create_current_pos_target_list(playerActor);
2521 }
2522 entryIdx = 1;
2523 for (i = 0; i < ARRAY_COUNT(playerData->equippedBadges); i++) {
2524 if (playerData->equippedBadges[i] != 0) {
2525 s32 moveID = gItemTable[playerData->equippedBadges[i]].moveID;
2526 moveData = &gMoveTable[moveID];
2527 if (moveData->category == BattleMenu_CategoryForSubmenu[battleStatus->curSubmenu]) {
2528 s32 cost = moveData->costFP;
2529 battleStatus->submenuMoves[entryIdx] = moveID;
2530 battleStatus->submenuIcons[entryIdx] = playerData->equippedBadges[i];
2531 battleStatus->submenuStatus[entryIdx] = 1;
2532
2534 cost -= 2 * player_team_is_ability_active(playerActor, ABILITY_FLOWER_FANATIC);
2535
2536 if (playerData->curFP < cost) {
2537 battleStatus->submenuStatus[entryIdx] = 0;
2538 }
2539 entryIdx++;
2540 }
2541 }
2542 }
2543 battleStatus->submenuMoveCount = entryIdx;
2544 if (entryIdx == 1) {
2545 battleStatus->submenuMoveCount = 0;
2546 }
2547 break;
2550 if (battleStatus->submenuMoveCount == 1) {
2551 battleStatus->submenuMoveCount = 0;
2552 }
2553 if (battleStatus->actionCommandMode == AC_MODE_TUTORIAL) {
2554 battleStatus->submenuMoveCount = 0;
2555 }
2556 break;
2557 case BTL_MENU_TYPE_JUMP:
2559 if (battleStatus->submenuMoveCount == 1) {
2560 battleStatus->submenuMoveCount = 0;
2561 }
2562 if (battleStatus->actionCommandMode == AC_MODE_TUTORIAL) {
2563 battleStatus->submenuMoveCount = 0;
2564 }
2565 break;
2567 battleStatus->submenuMoves[0] = MOVE_FOCUS;
2568 battleStatus->submenuIcons[0] = ITEM_PARTNER_ATTACK;
2569 battleStatus->submenuStatus[0] = 1;
2570 entryIdx = 1;
2571 initialPos = 8;
2572 for (i = 0; i < playerData->maxStarPower; i++) {
2573 moveData = &gMoveTable[MOVE_REFRESH + i];
2574 battleStatus->submenuMoves[entryIdx] = MOVE_REFRESH + i;
2575 battleStatus->submenuIcons[entryIdx] = 0;
2577 battleStatus->moveArgument = MOVE_REFRESH + i;
2578 battleStatus->curTargetListFlags = moveData->flags;
2579 create_current_pos_target_list(playerActor);
2580 battleStatus->submenuStatus[entryIdx] = 1;
2581 if (playerActor->targetListLength == 0) {
2582 battleStatus->submenuStatus[entryIdx] = -2;
2583 }
2584 if (playerData->starPower / SP_PER_BAR < moveData->costFP) {
2585 battleStatus->submenuStatus[entryIdx] = 0;
2586 }
2588 battleStatus->submenuStatus[entryIdx] = -1;
2589 }
2590 entryIdx++;
2591 }
2592 starBeamLevel = playerData->starBeamLevel;
2593 if (starBeamLevel == 1) {
2594 moveData = &gMoveTable[MOVE_STAR_BEAM];
2595 battleStatus->submenuMoves[entryIdx] = MOVE_STAR_BEAM;
2596 battleStatus->submenuIcons[entryIdx] = 0;
2598 battleStatus->moveArgument = MOVE_REFRESH + i;
2599 battleStatus->curTargetListFlags = moveData->flags;
2600 create_current_pos_target_list(playerActor);
2601 battleStatus->submenuStatus[entryIdx] = starBeamLevel;
2602 if (playerActor->targetListLength == 0) {
2603 battleStatus->submenuStatus[entryIdx] = -2;
2604 }
2605 if (playerData->starPower / SP_PER_BAR < moveData->costFP) {
2606 battleStatus->submenuStatus[entryIdx] = 0;
2607 }
2609 battleStatus->submenuStatus[entryIdx] = -1;
2610 }
2611 entryIdx++;
2612 }
2613 if (playerData->starBeamLevel == 2) {
2614 moveData = &gMoveTable[MOVE_PEACH_BEAM];
2615 battleStatus->submenuMoves[entryIdx] = MOVE_PEACH_BEAM;
2616 battleStatus->submenuIcons[entryIdx] = 0;
2618 battleStatus->moveArgument = MOVE_REFRESH + i;
2619 battleStatus->curTargetListFlags = moveData->flags;
2620 create_current_pos_target_list(playerActor);
2621 battleStatus->submenuStatus[entryIdx] = 1;
2622 if (playerActor->targetListLength == 0) {
2623 battleStatus->submenuStatus[entryIdx] = -2;
2624 }
2625 if (playerData->starPower / SP_PER_BAR < moveData->costFP) {
2626 battleStatus->submenuStatus[entryIdx] = 0;
2627 }
2629 battleStatus->submenuStatus[entryIdx] = -1;
2630 }
2631 entryIdx++;
2632 }
2633 battleStatus->submenuMoveCount = entryIdx;
2634 break;
2635 }
2636
2637 currentSubmenu = battleStatus->curSubmenu;
2638 if (currentSubmenu == BTL_MENU_TYPE_STAR_POWERS) {
2642 break;
2643 } else if (currentSubmenu == BTL_MENU_TYPE_STRATEGIES) {
2648 break;
2649 } else {
2651 battleStatus->moveCategory = currentSubmenu;
2652 battleStatus->moveArgument = 0;
2653 battleStatus->selectedMoveID = 0;
2655 break;
2656 }
2657 } else {
2658 if (battleStatus->submenuMoveCount == 0) {
2659 if (currentSubmenu != BTL_MENU_TYPE_ITEMS) {
2661 break;
2662 } else {
2666 break;
2667 }
2668 }
2669
2670 initialPos = 0;
2671 if (currentSubmenu == BTL_MENU_TYPE_JUMP) {
2672 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_JUMP] < 0) {
2673 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_JUMP] = 0;
2674 }
2675 initialPos = battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_JUMP];
2676 }
2677 if (battleStatus->curSubmenu == BTL_MENU_TYPE_SMASH) {
2678 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_SMASH] < 0) {
2680 }
2681 initialPos = battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_SMASH];
2682 }
2683 if (battleStatus->curSubmenu == BTL_MENU_TYPE_ITEMS) {
2684 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_ITEMS] < 0) {
2686 }
2687 initialPos = battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_ITEMS];
2688 }
2689
2690 for (i = 0; i < battleStatus->submenuMoveCount; i++) {
2691 moveData = &gMoveTable[battleStatus->submenuMoves[i]];
2692 itemData = &gItemTable[battleStatus->submenuIcons[i]];
2693 hudScriptPair = &gItemHudScripts[itemData->hudElemID];
2694
2696 if (battleStatus->submenuStatus[i] == 0) {
2698 }
2699 if (battleStatus->submenuStatus[i] == -1) {
2700 battleStatus->submenuStatus[i] = 0;
2702 }
2703 if (battleStatus->submenuStatus[i] == -2) {
2704 battleStatus->submenuStatus[i] = 0;
2706 }
2707 if (battleStatus->submenuStatus[i] == -3) {
2708 battleStatus->submenuStatus[i] = 0;
2710 }
2711 battle_menu_moveOptionIconScripts[i] = hudScriptPair->enabled;
2712 if (battleStatus->submenuStatus[i] == 0) {
2713 battle_menu_moveOptionIconScripts[i] = hudScriptPair->disabled;
2714 }
2715
2721
2725 }
2729 }
2730
2732 BattleMenu_Moves_OptionEnabled[i] = battleStatus->submenuStatus[i];
2733 battle_menu_moveOptionNames[i] = moveData->nameMsg;
2735
2736 }
2738 D_802AD4A8 = initialPos;
2740 func_802A2684();
2742 break;
2743 }
2744 break;
2746 submenuResult = btl_submenu_moves_update();
2747 if (submenuResult == -1) {
2749 } else if (submenuResult == 0) {
2750 } else if (submenuResult == 255) {
2751 func_802A1050();
2752 D_802ACC60 = 8;
2757 } else {
2758 battleStatus->unk_49 = BattleMenu_Moves_OptionIndices[submenuResult - 1];
2759 battleStatus->selectedMoveID = battleStatus->submenuMoves[battleStatus->unk_49];
2760 if (battleStatus->curSubmenu == BTL_MENU_TYPE_JUMP) {
2762 }
2763 if (battleStatus->curSubmenu == BTL_MENU_TYPE_SMASH) {
2765 }
2766 currentSubmenu2 = battleStatus->curSubmenu;
2767 if (battleStatus->curSubmenu == BTL_MENU_TYPE_ITEMS) {
2769 if (battleStatus->curSubmenu == currentSubmenu2) {
2773 break;
2774 }
2775 }
2776 func_802A27D0();
2777 func_802A1030();
2779 }
2780 break;
2782 submenuResult = btl_submenu_moves_update();
2783 if ((battleStatus->curButtonsPressed & BUTTON_B) && submenuResult == 0) {
2784 func_802A2AB8();
2785 func_802A1098();
2787 break;
2788 }
2789 if (btl_main_menu_update() == 0) {
2790 break;
2791 }
2794 battleStatus->selectedMoveID = battleStatus->submenuMoves[battleStatus->unk_49];
2795 battleStatus->curTargetListFlags = gMoveTable[battleStatus->submenuMoves[battleStatus->unk_49]].flags;
2796 currentSubmenu = battleStatus->curSubmenu;
2797 switch (currentSubmenu) {
2798 case BTL_MENU_TYPE_JUMP:
2799 battleStatus->moveCategory = BTL_MENU_TYPE_JUMP;
2800 battleStatus->moveArgument = playerData->bootsLevel;
2802 break;
2804 battleStatus->moveCategory = BTL_MENU_TYPE_SMASH;
2805 battleStatus->moveArgument = playerData->hammerLevel;
2807 break;
2811 battleStatus->moveCategory = BTL_MENU_TYPE_DEFEND;
2813 break;
2814 }
2815 break;
2818 if (btl_main_menu_update() == 0) {
2819 break;
2820 }
2822 break;
2824 func_802A2AB8();
2825 func_802A1098();
2827 break;
2829 func_802A27E4();
2831 break;
2833 if (btl_submenu_moves_update() != -1) {
2835 }
2836 break;
2840 } else {
2842 }
2843 ShowingErrorMessage = TRUE;
2845 break;
2847 if (btl_is_popup_displayed()) {
2848 break;
2849 }
2850 ShowingErrorMessage = FALSE;
2851 D_802ACC60 = 0;
2854 break;
2856 func_802A1030();
2858 break;
2860 submenuResult = btl_main_menu_update();
2861 if ((battleStatus->curButtonsPressed & BUTTON_B) && submenuResult == 0) {
2862 func_802A1078();
2864 } else if (submenuResult != 0) {
2867 switch (battleStatus->curSubmenu) {
2868 case BTL_MENU_TYPE_JUMP:
2869 battleStatus->moveCategory = BTL_MENU_TYPE_JUMP;
2870 battleStatus->moveArgument = playerData->bootsLevel;
2871 battleStatus->selectedMoveID = playerData->bootsLevel + MOVE_JUMP1;
2872 battleStatus->curTargetListFlags = gMoveTable[battleStatus->selectedMoveID].flags;
2874 break;
2876 battleStatus->moveCategory = BTL_MENU_TYPE_SMASH;
2877 battleStatus->moveArgument = playerData->hammerLevel;
2878 battleStatus->selectedMoveID = playerData->hammerLevel + MOVE_HAMMER1;
2879 battleStatus->curTargetListFlags = gMoveTable[battleStatus->selectedMoveID].flags;
2881 break;
2882 default:
2883 goto CASE_C; // TODO find better match
2884 }
2885 }
2886 break;
2887 CASE_C:
2889 if (btl_main_menu_update() == 0) {
2890 break;
2891 }
2892 D_802ACC60 = 8;
2895 break;
2897 func_802A1078();
2899 break;
2902 break;
2904 if (battleStatus->selectedMoveID == MOVE_DOUBLE_DIP) {
2905 battleStatus->itemUsesLeft = 2;
2906 }
2907 if (battleStatus->selectedMoveID == MOVE_TRIPLE_DIP) {
2908 battleStatus->itemUsesLeft = 3;
2909 }
2910 entryIdx = 0;
2911 for (i = 0; i < ARRAY_COUNT(playerData->invItems); i++) {
2912 if (playerData->invItems[i] == ITEM_NONE) {
2913 continue;
2914 }
2915 itemData = &gItemTable[playerData->invItems[i]];
2916 hudScriptPair = &gItemHudScripts[itemData->hudElemID];
2917 if (!(itemData->typeFlags & ITEM_TYPE_FLAG_BATTLE_USABLE)) {
2918 continue;
2919 }
2920 battleStatus->moveCategory = BTL_MENU_TYPE_ITEMS;
2921 battleStatus->moveArgument = playerData->invItems[i];
2922 battleStatus->curTargetListFlags = itemData->targetFlags;
2923 create_current_pos_target_list(playerActor);
2924 popup->ptrIcon[entryIdx] = hudScriptPair->enabled;
2925 popup->userIndex[entryIdx] = playerData->invItems[i];
2926 popup->enabled[entryIdx] = TRUE;
2927 popup->nameMsg[entryIdx] = itemData->nameMsg;
2928 popup->descMsg[entryIdx] = itemData->shortDescMsg;
2929 if (playerActor->targetListLength == 0) {
2930 popup->ptrIcon[entryIdx] = hudScriptPair->disabled;
2931 popup->enabled[entryIdx] = 0;
2932 }
2933 entryIdx++;
2934 }
2935 popup->dipMode = 0;
2936 popup->titleNumber = 0;
2937 if (battleStatus->selectedMoveID == MOVE_DOUBLE_DIP) {
2938 popup->dipMode = 1;
2939 popup->titleNumber = battleStatus->itemUsesLeft;
2940 }
2941 if (battleStatus->selectedMoveID == MOVE_TRIPLE_DIP) {
2942 popup->dipMode = 2;
2943 popup->titleNumber = battleStatus->itemUsesLeft;
2944 }
2945 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_DIP] < 0) {
2946 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_DIP] = 0;
2947 }
2949 popup->numEntries = entryIdx;
2950 initialPos = battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_DIP];
2951 popup->initialPos = initialPos;
2953 func_800F52BC();
2955 break;
2957 if (popup->result != POPUP_RESULT_CHOOSING) {
2958 if (popup->result == POPUP_RESULT_CANCEL) {
2959 func_802A2910();
2960 battleStatus->selectedMoveID = 0;
2961 battleStatus->itemUsesLeft = 0;
2965 } else {
2968 battleStatus->unk_1AA = popup->userIndex[popup->result - 1];
2969 battleStatus->moveCategory = BTL_MENU_TYPE_ITEMS;
2970 battleStatus->moveArgument = battleStatus->unk_1AA;
2972 battleStatus->curAttackElement = 0;
2973 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_DIP] = popup->result - 1;
2975 func_802A27D0();
2976 func_802A1030();
2978 }
2979 }
2980 break;
2982 if ((battleStatus->curButtonsPressed & BUTTON_B) && popup->result == POPUP_RESULT_CHOOSING) {
2983 func_800F16CC();
2984 func_802A2C58();
2985 func_802A1098();
2986 battleStatus->selectedMoveID = 0;
2988 } else {
2990 if (btl_main_menu_update()) {
2992 }
2993 }
2994 break;
2997 if (btl_main_menu_update() != 0) {
2999 }
3000 break;
3002 func_800F16CC();
3003 func_802A2C58();
3004 func_802A1098();
3007 break;
3010 func_802A27E4();
3012 break;
3014 entryIdx = 0;
3015 for (i = 0; i < ARRAY_COUNT(playerData->invItems); i++) {
3016 if (playerData->invItems[i] == ITEM_NONE) {
3017 continue;
3018 }
3019 itemData = &gItemTable[playerData->invItems[i]];
3020 hudScriptPair = &gItemHudScripts[itemData->hudElemID];
3021 if (!(itemData->typeFlags & ITEM_TYPE_FLAG_BATTLE_USABLE)) {
3022 continue;
3023 }
3024 battleStatus->moveCategory = BTL_MENU_TYPE_ITEMS;
3025 battleStatus->moveArgument = playerData->invItems[i];
3026 battleStatus->curTargetListFlags = itemData->targetFlags;
3027 create_current_pos_target_list(playerActor);
3028 popup->ptrIcon[entryIdx] = hudScriptPair->enabled;
3029
3030 popup->userIndex[entryIdx] = playerData->invItems[i];
3031 popup->enabled[entryIdx] = 1;
3032 popup->nameMsg[entryIdx] = itemData->nameMsg;
3033 popup->descMsg[entryIdx] = itemData->shortDescMsg;
3034 if (playerActor->targetListLength == 0) {
3035 popup->ptrIcon[entryIdx] = hudScriptPair->disabled;
3036 popup->enabled[entryIdx] = 0;
3037 }
3038 entryIdx++;
3039 }
3040 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_DIP] < 0) {
3041 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_DIP] = 0;
3042 }
3043 initialPos = battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_DIP];
3045 popup->numEntries = entryIdx;
3046 popup->dipMode = 0;
3047 popup->titleNumber = 0;
3048 popup->initialPos = initialPos;
3050 func_800F52BC();
3052 break;
3054 if (popup->result != POPUP_RESULT_CHOOSING) {
3055 if (popup->result == POPUP_RESULT_CANCEL) {
3056 func_802A1050();
3057 D_802ACC60 = 8;
3062 } else {
3065 battleStatus->unk_1AA = popup->userIndex[popup->result - 1];
3066 battleStatus->moveCategory = BTL_MENU_TYPE_ITEMS;
3067 battleStatus->moveArgument = battleStatus->unk_1AA;
3068 battleStatus->selectedMoveID = MOVE_ITEMS;
3070 battleStatus->curAttackElement = 0;
3071 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_DIP] = popup->result - 1;
3073 func_802A1030();
3075 }
3076 }
3077 break;
3079 if ((battleStatus->curButtonsPressed & BUTTON_B) && popup->result == POPUP_RESULT_CHOOSING) {
3080 func_800F16CC();
3081 func_802A1098();
3083 } else {
3084 if (btl_main_menu_update() != 0) {
3086 }
3087 }
3088 break;
3090 if (btl_main_menu_update() != 0) {
3092 }
3093 break;
3095 func_800F16CC();
3096 func_802A1098();
3098 break;
3102 break;
3104 for (i = 0; i < battleStatus->submenuMoveCount; i++) {
3105 moveData = &gMoveTable[battleStatus->submenuMoves[i]];
3107
3108 if (battleStatus->submenuStatus[i] == 0) {
3110 }
3111
3112 if (battleStatus->submenuStatus[i] == -1) {
3113 battleStatus->submenuStatus[i] = 0;
3115 }
3116 if (battleStatus->submenuStatus[i] == -2) {
3117 battleStatus->submenuStatus[i] = 0;
3119 }
3120 if (!(battleStatus->enabledStarPowersFlags & (1 << i))) {
3121 battleStatus->submenuStatus[i] = 0;
3123 }
3124
3125 battle_menu_moveOptionIconScripts[i] = battle_menu_StarPowerMovesHudScripts[2 * STAR_POWER_INDEX(battleStatus->submenuMoves[i]) + 0];
3126 if (battleStatus->submenuStatus[i] == 0) {
3127 battle_menu_moveOptionIconScripts[i] = battle_menu_StarPowerMovesHudScripts[2 * STAR_POWER_INDEX(battleStatus->submenuMoves[i]) + 1];
3128 }
3133 BattleMenu_Moves_OptionEnabled[i] = battleStatus->submenuStatus[i];
3134 battle_menu_moveOptionNames[i] = moveData->nameMsg;
3138 }
3139 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_STAR_POWER] < 0) {
3141 }
3142 initialPos = battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_STAR_POWER];
3144 D_802AD4A8 = initialPos;
3146 func_802A2684();
3148 break;
3150 submenuResult = btl_submenu_moves_update();
3151 if (submenuResult == -1) {
3153 } else if (submenuResult == 0) {
3154 } else if (submenuResult == 255) {
3155 func_802A1050();
3156 D_802ACC60 = 8;
3161 } else {
3162 battleStatus->unk_49 = BattleMenu_Moves_OptionIndices[submenuResult - 1];
3164 func_802A27D0();
3165 func_802A1030();
3167 }
3168 break;
3170 submenuResult = btl_submenu_moves_update();
3171 if ((battleStatus->curButtonsPressed & BUTTON_B) && submenuResult == 0) {
3172 func_802A2AB8();
3173 func_802A1098();
3175 } else if (btl_main_menu_update() != 0) {
3179 battleStatus->selectedMoveID = battleStatus->submenuMoves[battleStatus->unk_49];
3180 battleStatus->curTargetListFlags = gMoveTable[battleStatus->submenuMoves[battleStatus->unk_49]].flags;
3181 battleStatus->moveArgument = battleStatus->unk_49;
3182 if (playerData->starBeamLevel == 2 && battleStatus->moveArgument == 8) {
3183 battleStatus->moveArgument++;
3184 }
3186 }
3187 break;
3190 if (btl_main_menu_update() != 0) {
3192 }
3193 break;
3195 func_802A2AB8();
3196 func_802A1098();
3198 break;
3200 func_802A27E4();
3202 break;
3204 if (btl_submenu_moves_update() != -1) {
3206 }
3207 break;
3209 if (!can_switch_to_player()) {
3210 battleStatus->itemUsesLeft = 1;
3212 } else {
3213 entryIdx = 0;
3214 for (i = 0; i < ARRAY_COUNT(playerData->invItems); i++) {
3215 if (playerData->invItems[i] == ITEM_NONE) {
3216 continue;
3217 }
3218 itemData = &gItemTable[playerData->invItems[i]];
3219 hudScriptPair = &gItemHudScripts[itemData->hudElemID];
3220 if (!(itemData->typeFlags & ITEM_TYPE_FLAG_BATTLE_USABLE)) {
3221 continue;
3222 }
3223
3224 battleStatus->moveCategory = BTL_MENU_TYPE_ITEMS;
3225 battleStatus->moveArgument = playerData->invItems[i];
3226 battleStatus->curTargetListFlags = itemData->targetFlags;
3227 create_current_pos_target_list(playerActor);
3228 popup->ptrIcon[entryIdx] = hudScriptPair->enabled;
3229 popup->userIndex[entryIdx] = playerData->invItems[i];
3230 popup->enabled[entryIdx] = TRUE;
3231 popup->nameMsg[entryIdx] = itemData->nameMsg;
3232 popup->descMsg[entryIdx] = itemData->shortDescMsg;
3233 if (playerActor->targetListLength == 0) {
3234 popup->ptrIcon[entryIdx] = hudScriptPair->disabled;
3235 popup->enabled[entryIdx] = FALSE;
3236 }
3237 entryIdx++;
3238 }
3239 if (entryIdx == 0) {
3240 battleStatus->itemUsesLeft = 1;
3242 } else {
3244 if (battleStatus->selectedMoveID == MOVE_DOUBLE_DIP) {
3246 popup->dipMode = 1;
3247 popup->titleNumber = battleStatus->itemUsesLeft;
3248 }
3249 if (battleStatus->selectedMoveID == MOVE_TRIPLE_DIP) {
3251 popup->dipMode = 2;
3252 popup->titleNumber = battleStatus->itemUsesLeft;
3253 }
3254 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_DIP] < 0) {
3255 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_DIP] = 0;
3256 }
3257 popup->numEntries = entryIdx;
3258 initialPos = battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_DIP];
3259 popup->initialPos = initialPos;
3261 func_800F52BC();
3263 }
3264 }
3265 break;
3267 if (popup->result != POPUP_RESULT_CHOOSING) {
3268 if (popup->result == POPUP_RESULT_CANCEL) {
3269 battleStatus->itemUsesLeft = 1;
3271 } else {
3274 battleStatus->unk_1AA = popup->userIndex[popup->result - 1];
3275 battleStatus->moveCategory = BTL_MENU_TYPE_ITEMS;
3276 battleStatus->moveArgument = battleStatus->unk_1AA;
3278 battleStatus->curAttackElement = 0;
3279 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_DIP] = popup->result - 1;
3281 D_802ACC60 = 5;
3283 }
3284 }
3285 break;
3287 if (D_802ACC60 != 0) {
3288 D_802ACC60--;
3289 } else {
3291 }
3292 break;
3294 if (D_802ACC60 != 0) {
3295 D_802ACC60--;
3296 } else {
3298 }
3299 break;
3301 func_800F16CC();
3302 D_802ACC60 = 5;
3304 break;
3307 break;
3309 if (playerData->bootsLevel >= 0) {
3310 battleStatus->curTargetListFlags = gMoveTable[MOVE_BERSERKER_JUMP].flags;
3311 create_current_pos_target_list(playerActor);
3312 jumpTargetCount = playerActor->targetListLength;
3313 } else {
3314 jumpTargetCount = 0;
3315 }
3316
3317 if (playerData->hammerLevel >= 0) {
3318 battleStatus->curTargetListFlags = gMoveTable[MOVE_BERSERKER_HAMMER].flags;
3319 create_current_pos_target_list(playerActor);
3320 hammerTargetCount = playerActor->targetListLength;
3321 } else {
3322 hammerTargetCount = 0;
3323 }
3324
3325 if (jumpTargetCount <= 0 && hammerTargetCount <= 0) {
3326 battleStatus->moveCategory = BTL_MENU_TYPE_DO_NOTHING;
3327 battleStatus->waitForState = BATTLE_STATE_0;
3329 } else {
3330 jumpChance = 50;
3331 if (jumpTargetCount <= 0) {
3332 jumpChance = 0;
3333 }
3334 if (hammerTargetCount <= 0) {
3335 jumpChance = 101;
3336 }
3337 if (rand_int(100) < jumpChance) {
3338 battleStatus->selectedMoveID = MOVE_BERSERKER_JUMP;
3339 battleStatus->moveCategory = BTL_MENU_TYPE_JUMP;
3340 battleStatus->curTargetListFlags = gMoveTable[MOVE_BERSERKER_JUMP].flags;
3341 battleStatus->moveArgument = playerData->bootsLevel;
3342 create_current_pos_target_list(playerActor);
3343 } else {
3344 battleStatus->selectedMoveID = MOVE_BERSERKER_HAMMER;
3345 battleStatus->moveCategory = BTL_MENU_TYPE_SMASH;
3346 battleStatus->curTargetListFlags = gMoveTable[MOVE_BERSERKER_HAMMER].flags;
3347 battleStatus->moveArgument = playerData->hammerLevel;
3348 create_current_pos_target_list(playerActor);
3349 }
3351 }
3352 break;
3354 entryIdx = 0;
3356
3357 // add 'Change Member' command
3358 if (battleStatus->changePartnerAllowed >= 0) {
3361 D_802AD640[entryIdx] = battle_menu_PartnerHudScripts[playerData->curPartner];
3362 D_802AD690[entryIdx] = 1;
3363 D_802AD6C0[entryIdx] = MSG_Menus_Action_ChangePartner;
3364 if (battleStatus->changePartnerAllowed <= 0) {
3366 D_802AD690[entryIdx] = 0;
3367 D_802AD6A8[entryIdx] = 0;
3368 }
3369 entryIdx++;
3370 }
3371
3372 // add 'Do Nothing' command
3375 D_802AD690[entryIdx] = 1;
3377 D_802AD6C0[entryIdx] = MSG_Menus_Action_DoNothing;
3378 entryIdx++;
3379
3380 // add 'Run Away' command
3383 D_802AD690[entryIdx] = 1;
3385 D_802AD6C0[entryIdx] = MSG_Menus_Action_RunAway;
3388 D_802AD690[entryIdx] = 0;
3389 D_802AD6A8[entryIdx] = 1;
3390 }
3391 entryIdx++;
3392
3393 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_STRATEGY] < 0) {
3395 }
3396 initialPos = battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_STRATEGY];
3397 D_802AD66C = entryIdx;
3398 StratsMenuLastPos = initialPos;
3399 func_802A45D8();
3401 break;
3403 submenuResult = btl_update_strats_menu();
3404 if (submenuResult == -1) {
3406 } else if (submenuResult == 0) {
3407 } else if (submenuResult == 255) {
3408 func_802A1050();
3409 D_802ACC60 = 8;
3414 } else {
3415 battleStatus->curSubmenu = D_802AD678[submenuResult - 1];
3416 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_STRATEGY] = submenuResult - 1;
3417 if (battleStatus->curSubmenu == 5) { // change partner
3421 } else {
3422 func_802A4718();
3423 func_802A1030();
3425 }
3426 }
3427 break;
3429 submenuResult = btl_update_strats_menu();
3430 if ((battleStatus->curButtonsPressed & BUTTON_B) && submenuResult == 0) {
3431 func_802A48FC();
3432 func_802A1098();
3434 } else if (btl_main_menu_update() != 0) {
3437 switch (battleStatus->curSubmenu) {
3438 case 3:
3441 battleStatus->moveCategory = BTL_MENU_TYPE_RUN_AWAY;
3442 battleStatus->selectedMoveID = MOVE_UNUSED_39;
3444 break;
3445 case 9:
3446 battleStatus->hustleTurns = 0;
3447 gBattleStatus.flags1 &= ~BS_FLAGS1_HUSTLED;
3451 break;
3452 case 4:
3455 battleStatus->selectedMoveID = MOVE_UNUSED_DEFEND_PLUS;
3456 battleStatus->moveCategory = BTL_MENU_TYPE_DEFEND;
3458 break;
3459 case 10:
3463 break;
3464 }
3465 }
3466 break;
3469 if (btl_main_menu_update() != 0) {
3470 D_802ACC60 = 8;
3473 }
3474 break;
3476 func_802A48FC();
3477 func_802A1098();
3479 break;
3481 func_802A472C();
3483 break;
3485 if (btl_update_strats_menu() != -1) {
3487 }
3488 break;
3490 entryIdx = 0;
3491 for (i = 1; i < ARRAY_COUNT(playerData->partners); i++) {
3492 s32 partnerId = PartnerIDFromMenuIndex[i];
3493 if (playerData->partners[partnerId].enabled) {
3494 prop = &gPartnerPopupProperties[partnerId];
3495 popup->ptrIcon[entryIdx] = battle_menu_PartnerHudScripts[partnerId];
3496 popup->userIndex[entryIdx] = partnerId;
3497 popup->enabled[entryIdx] = 1;
3498 popup->nameMsg[entryIdx] = prop->nameMsg;
3499 popup->descMsg[entryIdx] = prop->battleDescMsg;
3500 popup->value[entryIdx] = playerData->partners[partnerId].level;
3501 if (playerData->curPartner == partnerId) {
3502 popup->enabled[entryIdx] = 0;
3503 popup->ptrIcon[entryIdx] = battle_menu_DisabledPartnerHudScripts[partnerId];
3504 }
3505 entryIdx++;
3506 }
3507 }
3508 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_PARTNER] < 0) {
3510 }
3512 popup->numEntries = entryIdx;
3513 popup->initialPos = MenuIndexFromPartnerID[playerData->curPartner] - 1;
3514 popup->dipMode = 0;
3515 popup->titleNumber = 0;
3517 func_800F52BC();
3519 break;
3521 if (popup->result == POPUP_RESULT_INVALID) {
3523 } else if (popup->result != POPUP_RESULT_CHOOSING) {
3524 if (popup->result == POPUP_RESULT_CANCEL) {
3525 func_802A47E0();
3529 } else {
3532 battleStatus->unk_1AC = popup->userIndex[popup->result - 1];
3534 battleStatus->selectedMoveID = MOVE_UNUSED_37;
3535 battleStatus->curTargetListFlags = TARGET_FLAG_2;
3536 battleStatus->moveArgument = battleStatus->unk_1AC;
3537 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_PARTNER] = popup->result - 1;
3539 func_802A4718();
3540 func_802A1030();
3542 }
3543 }
3544 break;
3546 if ((battleStatus->curButtonsPressed & BUTTON_B) && popup->result == POPUP_RESULT_CHOOSING) {
3547 func_800F16CC();
3548 func_802A4A10();
3549 func_802A1098();
3551 } else {
3553 if (btl_main_menu_update() != 0) {
3557 }
3558 }
3559 break;
3562 if (btl_main_menu_update() != 0) {
3564 }
3565 break;
3567 func_800F16CC();
3568 func_802A4A10();
3569 func_802A1098();
3571 break;
3574 func_802A472C();
3576 break;
3580 if (popup->result != POPUP_RESULT_INVALID) {
3584 }
3585 break;
3586 }
3587}
PartnerPopupProperties gPartnerPopupProperties[]
Definition 5B320.c:331
@ AC_MODE_TUTORIAL
Definition action_cmd.h:62
void create_battle_popup_menu(PopupMenu *popup)
void func_802A2684(void)
void btl_main_menu_destroy(void)
HudScript * battle_menu_DisabledPartnerHudScripts[]
HudScript * battle_menu_PartnerHudScripts[]
IconHudScriptPair gItemHudScripts[]
s32 can_switch_to_partner(void)
IconHudScriptPair battle_menu_FleeHudScripts
void btl_init_menu_items(void)
Definition 190B20.c:601
void func_802A1078(void)
s32 btl_submenu_moves_update(void)
s32 btl_update_strats_menu(void)
BSS s32 D_802AD0A8
BSS s32 D_802ACC60
void btl_main_menu_init(void)
s32 btl_main_menu_update(void)
BSS s32 battle_menu_submenuIDs[6]
IconHudScriptPair battle_menu_DoNothingHudScripts
BSS s32 BattleMenu_Moves_OptionIndices[24]
IconHudScriptPair battle_menu_StarPowerHudScripts
void func_802A1098(void)
s32 BattleMenu_CenteredMessages[]
void func_802A45D8(void)
void btl_check_can_change_partner(void)
Definition 190B20.c:566
void btl_init_menu_hammer(void)
Definition 190B20.c:765
void func_802A4A10(void)
IconHudScriptPair battle_menu_JumpHudScripts[]
IconHudScriptPair battle_menu_StrategiesHudScript
IconHudScriptPair battle_menu_ItemHudScripts
void func_802A2910(void)
void func_800F52BC(void)
BSS s32 BattleMenu_SwapDelay
s32 BattleMenu_LeftJustMessages[]
s32 BattleMenu_CategoryForSubmenu[]
s32 can_switch_to_player(void)
s32 MenuIndexFromPartnerID[]
Definition 5B320.c:316
HudScript * battle_menu_StarPowerMovesHudScripts[]
void btl_state_update_player_menu(void)
void func_802A47E0(void)
void func_802A48FC(void)
void func_802A2AB8(void)
s32 get_player_anim_for_status(s32 animID)
Definition 190B20.c:1965
void func_802A2C58(void)
void func_802A1050(void)
void func_802A1030(void)
void func_802A4718(void)
void btl_init_menu_boots(void)
Definition 190B20.c:671
void func_800F16CC(void)
BSS PopupMenu D_802ACCD0
IconHudScriptPair battle_menu_HammerHudScripts[]
void func_802A27D0(void)
ActorState state
Vec3f homePos
Vec3f curPos
#define rand_int
#define clamp_angle
@ BS_FLAGS1_PLAYER_IN_BACK
Definition enums.h:3588
@ BS_FLAGS1_MENU_OPEN
Definition enums.h:3565
@ BS_FLAGS1_YIELD_TURN
Definition enums.h:3589
@ BTL_MSG_CANT_SWITCH
Definition enums.h:4139
@ BTL_MSG_CANT_MOVE
Definition enums.h:4140
@ BTL_MSG_NO_JUMP_TARGET
Definition enums.h:4126
@ BTL_MSG_NO_ITEM_TARGET
Definition enums.h:4128
@ BTL_MSG_CANT_SELECT_NOW
Definition enums.h:4131
@ BTL_MSG_CANT_SELECT_NOW_ALT
Definition enums.h:4143
@ BTL_MSG_NO_HAMMER_TARGET
Definition enums.h:4127
@ POPUP_MENU_TRIPLE_DIP
Definition enums.h:3146
@ BTL_MENU_TYPE_INVALID
Definition enums.h:4225
@ BTL_MENU_TYPE_RUN_AWAY
Definition enums.h:4229
@ BTL_MENU_TYPE_STAR_POWERS
Definition enums.h:4234
@ BTL_MENU_TYPE_DEFEND
Definition enums.h:4230
@ BTL_MENU_TYPE_STRATEGIES
Definition enums.h:4233
@ BTL_MENU_TYPE_DO_NOTHING
Definition enums.h:4235
@ BS_FLAGS2_CAN_FLEE
Definition enums.h:3608
@ BTL_CAM_DEFAULT
Definition enums.h:4823
@ TARGET_FLAG_PRIMARY_ONLY
Definition enums.h:1863
@ TARGET_FLAG_2
Definition enums.h:1850
@ POPUP_RESULT_CANCEL
Definition enums.h:3178
@ POPUP_RESULT_INVALID
Definition enums.h:3175
@ BATTLE_STATE_0
Definition enums.h:3630
@ BATTLE_STATE_RUN_AWAY
Definition enums.h:3654
@ BATTLE_STATE_SWITCH_TO_PARTNER
Definition enums.h:3641
@ BATTLE_STATE_DEFEND
Definition enums.h:3655
@ BATTLE_STATE_PLAYER_MOVE
Definition enums.h:3648
@ BATTLE_STATE_END_PLAYER_TURN
Definition enums.h:3652
@ BATTLE_STATE_SELECT_TARGET
Definition enums.h:3647
@ BATTLE_STATE_CHANGE_PARTNER
Definition enums.h:3659
@ ABILITY_BERSERKER
Definition enums.h:457
@ SOUND_PARTNER_SWAP_BATTLE_POS
Definition enums.h:560
@ BTL_MENU_ENABLED_SMASH
Definition enums.h:4242
@ BTL_MENU_ENABLED_ITEMS
Definition enums.h:4243
@ BTL_MENU_ENABLED_STAR_POWERS
Definition enums.h:4246
@ BTL_MENU_ENABLED_JUMP
Definition enums.h:4241
@ BTL_MENU_ENABLED_STRATEGIES
Definition enums.h:4245
@ ACTOR_PLAYER
Definition enums.h:2085
@ ACTOR_FLAG_SHOW_STATUS_ICONS
Definition enums.h:3343
@ ACTOR_FLAG_USING_IDLE_ANIM
Definition enums.h:3342
@ BTL_MENU_IDX_PARTNER
Definition enums.h:4216
@ BTL_MENU_IDX_STRATEGY
Definition enums.h:4218
@ BTL_MENU_IDX_SMASH
Definition enums.h:4213
@ BTL_MENU_IDX_STAR_POWER
Definition enums.h:4217
@ BTL_MENU_IDX_MAIN
Definition enums.h:4211
@ BTL_MENU_IDX_JUMP
Definition enums.h:4212
@ BTL_MENU_IDX_DIP
Definition enums.h:4215
@ BTL_MENU_IDX_ITEMS
Definition enums.h:4214
@ BTL_SUBSTATE_PLAYER_MENU_STRATEGIES_4
Definition enums.h:3980
@ BTL_SUBSTATE_PLAYER_MENU_CHANGE_MEMBER_3
Definition enums.h:3947
@ BTL_SUBSTATE_PLAYER_MENU_ITEMS_5
Definition enums.h:3957
@ BTL_SUBSTATE_PLAYER_MENU_MAIN_SHOW_CANT_SWAP
Definition enums.h:3930
@ BTL_SUBSTATE_PLAYER_MENU_BERSERKER_CHOOSE
Definition enums.h:3975
@ BTL_SUBSTATE_PLAYER_MENU_STRATEGIES_2
Definition enums.h:3978
@ BTL_SUBSTATE_PLAYER_MENU_DIPPING_5
Definition enums.h:3972
@ BTL_SUBSTATE_PLAYER_MENU_MAIN_AWAIT_CANT_SWAP
Definition enums.h:3931
@ BTL_SUBSTATE_PLAYER_MENU_STAR_SPIRITS_7
Definition enums.h:3966
@ BTL_SUBSTATE_PLAYER_MENU_DIPPING_TARGET_CANCEL
Definition enums.h:3942
@ BTL_SUBSTATE_PLAYER_MENU_ITEMS_1
Definition enums.h:3953
@ BTL_SUBSTATE_PLAYER_MENU_CHANGE_MEMBER_4
Definition enums.h:3948
@ BTL_SUBSTATE_PLAYER_MENU_CHANGE_MEMBER_2
Definition enums.h:3946
@ BTL_SUBSTATE_PLAYER_MENU_UNKNOWN_3
Definition enums.h:3940
@ BTL_SUBSTATE_PLAYER_MENU_STAR_SPIRITS_4
Definition enums.h:3963
@ BTL_SUBSTATE_PLAYER_MENU_DIPPING_4
Definition enums.h:3971
@ BTL_SUBSTATE_PLAYER_MENU_CHOOSE_CATEGORY
Definition enums.h:3923
@ BTL_SUBSTATE_PLAYER_MENU_ITEMS_4
Definition enums.h:3956
@ BTL_SUBSTATE_PLAYER_MENU_CREATE_MAIN_MENU
Definition enums.h:3986
@ BTL_SUBSTATE_PLAYER_MENU_MAIN_MENU_10
Definition enums.h:3932
@ BTL_SUBSTATE_PLAYER_MENU_DIPPING_TARGET_CHOSEN
Definition enums.h:3943
@ BTL_SUBSTATE_PLAYER_MENU_CHANGE_MEMBER_1
Definition enums.h:3945
@ BTL_SUBSTATE_PLAYER_MENU_MOVE_TARGET_CHOSEN
Definition enums.h:3928
@ BTL_SUBSTATE_PLAYER_MENU_MAIN_MENU_13
Definition enums.h:3935
@ BTL_SUBSTATE_PLAYER_MENU_DIPPING_3
Definition enums.h:3970
@ BTL_SUBSTATE_PLAYER_MENU_STAR_SPIRITS_6
Definition enums.h:3965
@ BTL_SUBSTATE_PLAYER_MENU_MOVE_CHOOSE_TARGET
Definition enums.h:3925
@ BTL_SUBSTATE_PLAYER_MENU_PERFORM_SWAP
Definition enums.h:3985
@ BTL_SUBSTATE_PLAYER_MENU_MAIN_MENU_2
Definition enums.h:3924
@ BTL_SUBSTATE_PLAYER_MENU_UNKNOWN_4
Definition enums.h:3941
@ BTL_SUBSTATE_PLAYER_MENU_MAIN_MENU_7
Definition enums.h:3929
@ BTL_SUBSTATE_PLAYER_MENU_STAR_SPIRITS_2
Definition enums.h:3961
@ BTL_SUBSTATE_PLAYER_MENU_DIPPING_CHOOSE_TARGET
Definition enums.h:3939
@ BTL_SUBSTATE_PLAYER_MENU_DIPPING_2
Definition enums.h:3969
@ BTL_SUBSTATE_PLAYER_MENU_ITEMS_6
Definition enums.h:3958
@ BTL_SUBSTATE_PLAYER_MENU_UNKNOWN_1
Definition enums.h:3938
@ BTL_SUBSTATE_PLAYER_MENU_STRATEGIES_3
Definition enums.h:3979
@ BTL_SUBSTATE_PLAYER_MENU_CHANGE_MEMBER_7
Definition enums.h:3951
@ BTL_SUBSTATE_PLAYER_MENU_STAR_SPIRITS_5
Definition enums.h:3964
@ BTL_SUBSTATE_PLAYER_MENU_CHANGE_MEMBER_6
Definition enums.h:3950
@ BTL_SUBSTATE_PLAYER_MENU_MAIN_MENU_4
Definition enums.h:3926
@ BTL_SUBSTATE_PLAYER_MENU_STRATEGIES_8
Definition enums.h:3983
@ BTL_SUBSTATE_PLAYER_MENU_MOVE_TARGET_CANCEL
Definition enums.h:3927
@ BTL_SUBSTATE_PLAYER_MENU_STRATEGIES_6
Definition enums.h:3982
@ BTL_SUBSTATE_PLAYER_MENU_MAIN_MENU_12
Definition enums.h:3934
@ BTL_SUBSTATE_PLAYER_MENU_BUILD_STRATEGIES
Definition enums.h:3977
@ BTL_SUBSTATE_PLAYER_MENU_INIT
Definition enums.h:3921
@ BTL_SUBSTATE_PLAYER_MENU_CHANGE_MEMBER_5
Definition enums.h:3949
@ BTL_SUBSTATE_PLAYER_MENU_DIPPING_1
Definition enums.h:3968
@ BTL_SUBSTATE_PLAYER_MENU_STRATEGIES_5
Definition enums.h:3981
@ BTL_SUBSTATE_PLAYER_MENU_MAIN_MENU_14
Definition enums.h:3936
@ BTL_SUBSTATE_PLAYER_MENU_MAIN_MENU_11
Definition enums.h:3933
@ BTL_SUBSTATE_PLAYER_MENU_ITEMS_3
Definition enums.h:3955
@ BTL_SUBSTATE_PLAYER_MENU_DIPPING_6
Definition enums.h:3973
@ BTL_SUBSTATE_PLAYER_MENU_ITEMS_2
Definition enums.h:3954
@ BTL_SUBSTATE_PLAYER_MENU_STAR_SPIRITS_1
Definition enums.h:3960
@ BTL_SUBSTATE_PLAYER_MENU_STAR_SPIRITS_3
Definition enums.h:3962
void btl_show_variable_battle_message(s32, s32, s32)
s32 player_team_is_ability_active(Actor *actor, s32 ability)
Definition 190B20.c:2765
void hide_popup_menu(void)
void destroy_popup_menu(void)
void btl_cam_use_preset(s32)
Definition camera.c:1919
void set_actor_anim(s32 actorID, s32 partID, AnimID animID)
Definition 190B20.c:1005
void btl_cam_move(s16)
Definition camera.c:1953
f32 sin_rad(f32 x)
Definition 43F0.c:712
void btl_set_state(s32 battleState)
void create_current_pos_target_list(Actor *actor)
Definition 190B20.c:472
s32 userIndex[32]
s32 nameMsg[32]
HudScript * disabled
HudScript * ptrIcon[32]
b32 enabled[32]
s32 value[32]
HudScript * enabled
s32 descMsg[32]
#define DEG_TO_RAD(deg)
Definition macros.h:138
s8 lastPlayerMenuSelection[16]
s16 cancelTargetMenuSubstate
s16 acceptTargetMenuSubstate
s32 PartnerIDFromMenuIndex[12]
Definition 5B320.c:300
s32 gBattleSubState
Definition battle.c:14

Referenced by btl_state_update_player_menu(), btl_state_update_select_target(), and btl_update().

◆ btl_state_draw_player_menu()

void btl_state_draw_player_menu ( void )

Definition at line 3589 of file btl_states_menus.c.

3589 {
3590 switch (gBattleSubState) {
3593 break;
3621 break;
3627 break;
3630 break;
3633 break;
3636 break;
3639 break;
3640 }
3641}
void btl_main_menu_draw(void)

Referenced by btl_draw_ui().

◆ btl_state_update_partner_menu()

void btl_state_update_partner_menu ( void )

Definition at line 3643 of file btl_states_menus.c.

3643 {
3644 BattleStatus* battleStatus = &gBattleStatus;
3645 PlayerData* playerData = &gPlayerData;
3646 Actor* playerActor = battleStatus->playerActor;
3647 Actor* partnerActor = battleStatus->partnerActor;
3648 PopupMenu* popupMenu = &D_802ACCD0;
3649 s32 entryIdx;
3650 s32 i;
3651 s32 popupIndex;
3652 s32 initialPos;
3653 MoveData* moveData;
3654 PartnerPopupProperties* popupProps;
3655
3657 battleStatus->moveCategory = BTL_MENU_TYPE_INVALID;
3658 battleStatus->selectedMoveID = MOVE_NONE;
3659 battleStatus->curAttackElement = 0;
3660 if (!can_switch_to_partner()) {
3662 } else {
3664 battleStatus->flags1 |= BS_FLAGS1_MENU_OPEN;
3667 if (battleStatus->flags1 & BS_FLAGS1_PLAYER_IN_BACK) {
3669 } else {
3671 partnerActor->state.curPos.x = partnerActor->homePos.x;
3672 partnerActor->state.curPos.z = partnerActor->homePos.z;
3673 partnerActor->state.goalPos.x = playerActor->homePos.x;
3674 partnerActor->state.goalPos.z = playerActor->homePos.z;
3675 partnerActor->state.moveTime = 4;
3676 partnerActor->state.angle = 0.0f;
3677 }
3678 }
3679 }
3681 if (partnerActor->state.moveTime != 0) {
3682 partnerActor->curPos.x += (partnerActor->state.goalPos.x - partnerActor->curPos.x) / partnerActor->state.moveTime;
3683 partnerActor->curPos.z += (partnerActor->state.goalPos.z - partnerActor->curPos.z) / partnerActor->state.moveTime;
3684 playerActor->curPos.x += (partnerActor->state.curPos.x - playerActor->curPos.x) / partnerActor->state.moveTime;
3685 playerActor->curPos.z += (partnerActor->state.curPos.z - playerActor->curPos.z) / partnerActor->state.moveTime;
3686 }
3687 partnerActor->curPos.z += sin_rad(DEG_TO_RAD(partnerActor->state.angle)) * 16.0f;
3688 partnerActor->yaw = clamp_angle(-partnerActor->state.angle);
3689 playerActor->curPos.z -= sin_rad(DEG_TO_RAD(partnerActor->state.angle)) * 16.0f;
3690 playerActor->yaw = clamp_angle(-partnerActor->state.angle);
3691 partnerActor->state.angle += 90.0f;
3692 if (partnerActor->state.moveTime != 0) {
3693 partnerActor->state.moveTime--;
3694 } else {
3696 partnerActor->curPos.x = partnerActor->state.goalPos.x;
3697 partnerActor->curPos.z = partnerActor->state.goalPos.z;
3698 playerActor->curPos.x = partnerActor->state.curPos.x;
3699 playerActor->curPos.z = partnerActor->state.curPos.z;
3700 partnerActor->homePos.x = partnerActor->curPos.x;
3701 partnerActor->homePos.z = partnerActor->curPos.z;
3702 playerActor->homePos.x = playerActor->curPos.x;
3703 playerActor->homePos.z = playerActor->curPos.z;
3705 }
3706 }
3707 switch (gBattleSubState) {
3709 partnerActor->flags |= ACTOR_FLAG_SHOW_STATUS_ICONS;
3710 partnerActor->flags &= ~ACTOR_FLAG_USING_IDLE_ANIM;
3711 playerActor->flags |= ACTOR_FLAG_USING_IDLE_ANIM;
3712 playerActor->flags |= ACTOR_FLAG_SHOW_STATUS_ICONS;
3715 entryIdx = 0;
3716 initialPos = 1;
3717 if (battleStatus->lastPartnerMenuSelection[BTL_MENU_IDX_MAIN] < 0) {
3719 }
3722
3723 // strategies menu category
3725 BattleMenu_OptionEnabled[entryIdx] = TRUE;
3726 battle_menu_isMessageDisabled[entryIdx] = 0;
3729 if (!(battleStatus->enabledMenusFlags & BTL_MENU_ENABLED_STRATEGIES)) {
3730 BattleMenu_OptionEnabled[entryIdx] = FALSE;
3733 }
3734 if (battleStatus->lastPartnerMenuSelection[entryIdx] == BTL_MENU_TYPE_STRATEGIES) {
3735 initialPos = entryIdx;
3736 }
3737 entryIdx++;
3738
3739 // abilities menu category
3742 BattleMenu_OptionEnabled[entryIdx] = TRUE;
3744 if (battleStatus->menuStatus[3] <= 0) {
3746 BattleMenu_OptionEnabled[entryIdx] = FALSE;
3748 }
3749 if (!(battleStatus->enabledMenusFlags & BTL_MENU_ENABLED_ABILITIES)) {
3751 BattleMenu_OptionEnabled[entryIdx] = FALSE;
3753 }
3755 initialPos = entryIdx;
3756 }
3757 entryIdx++;
3758
3759 // focus menu category
3760 if (playerData->maxStarPower != 0 && is_ability_active(ABILITY_GROUP_FOCUS)) {
3762 BattleMenu_OptionEnabled[entryIdx] = TRUE;
3763 battle_menu_isMessageDisabled[entryIdx] = 0;
3766 if (!(battleStatus->enabledMenusFlags & BTL_MENU_ENABLED_PARTNER_FOCUS)) {
3767 BattleMenu_OptionEnabled[entryIdx] = FALSE;
3770 }
3772 initialPos = entryIdx;
3773 }
3774 entryIdx++;
3775 }
3776
3777 BattleMenu_NumOptions = entryIdx;
3778 D_802AD0A8 = 1;
3779 D_802AD0B0 = initialPos;
3780 D_802AD100 = 2 - initialPos;
3781 if (can_switch_to_player()) {
3783 } else {
3785 }
3787 D_802ACC60 = 8;
3790 return;
3795 entryIdx = btl_main_menu_update();
3796
3797 if (BattleMenu_SwapDelay != 0) {
3800 if (can_switch_to_player()) {
3805 } else {
3808 }
3809 break;
3810 }
3811
3812 if (D_802ACC60 != 0) {
3813 D_802ACC60--;
3814 } else if (entryIdx != 0) {
3816 battleStatus->lastPartnerMenuSelection[BTL_MENU_IDX_MAIN] = battleStatus->curPartnerSubmenu = battle_menu_submenuIDs[entryIdx - 1];
3817 if (battleStatus->curPartnerSubmenu == 7) {
3821 } else if (battleStatus->curPartnerSubmenu == 6) {
3825 } else if (battleStatus->curPartnerSubmenu == 8) {
3829 } else if (battleStatus->curPartnerSubmenu == 2) {
3833 } else if (battleStatus->curPartnerSubmenu == 5) {
3837 } else {
3840 func_802A1030();
3842 }
3843 }
3844 break;
3846 entryIdx = btl_main_menu_update();
3847 if ((battleStatus->curButtonsPressed & BUTTON_B) && entryIdx == 0) {
3848 func_802A1078();
3850 return;
3851 }
3852 if (entryIdx != 0) {
3854 battleStatus->selectedMoveID = MOVE_FOCUS;
3855 battleStatus->moveArgument = 0;
3856 battleStatus->curTargetListFlags = gMoveTable[MOVE_FOCUS].flags;
3858 return;
3859 }
3860 break;
3862 if (btl_main_menu_update() != 0) {
3863 D_802ACC60 = 8;
3866 }
3867 break;
3869 func_802A1078();
3871 break;
3874 break;
3876 if (can_switch_to_player() == 0) {
3878 } else {
3880 }
3881 ShowingErrorMessage = TRUE;
3883 break;
3885 if (btl_is_popup_displayed()) {
3886 break;
3887 }
3888 D_802ACC60 = 0;
3889 ShowingErrorMessage = FALSE;
3892 break;
3894 for (i = 0; i < battleStatus->submenuMoveCount; i++) {
3895 moveData = &gMoveTable[battleStatus->submenuMoves[i]];
3896
3898 if (battleStatus->submenuStatus[i] == 0) {
3900 }
3901 if (battleStatus->submenuStatus[i] == -1) {
3902 battleStatus->submenuStatus[i] = 0;
3904 }
3905 if (battleStatus->submenuStatus[i] == -2) {
3906 battleStatus->submenuStatus[i] = 0;
3908 }
3910 if (battleStatus->submenuStatus[i] == 0) {
3912 }
3913 BattleMenu_Moves_OptionIndices[i] = battleStatus->submenuMoves[i];
3914 BattleMenu_Moves_OptionEnabled[i] = battleStatus->submenuStatus[i];
3915 battle_menu_moveOptionNames[i] = moveData->nameMsg;
3920
3926 }
3930 }
3931 }
3932 if (battleStatus->lastPartnerMenuSelection[BTL_MENU_IDX_ABILITY] < 0) {
3934 }
3937 initialPos = battleStatus->lastPartnerMenuSelection[BTL_MENU_IDX_ABILITY];
3938 D_802AD4A8 = initialPos;
3939 func_802A2684();
3941 break;
3943 entryIdx = btl_submenu_moves_update();
3944 if (entryIdx == -1) {
3946 } else if (entryIdx != 0) {
3947 if (entryIdx == 255) {
3948 func_802A1050();
3949 D_802ACC60 = 8;
3954 } else {
3955 battleStatus->unk_4B = entryIdx - 1;
3956 func_802A27D0();
3957 func_802A1030();
3959 }
3960 }
3961 break;
3963 entryIdx = btl_submenu_moves_update();
3964 if ((battleStatus->curButtonsPressed & BUTTON_B) && entryIdx == 0) {
3965 func_802A2AB8();
3966 func_802A1098();
3968 } else if (btl_main_menu_update() != 0) {
3969 battleStatus->moveCategory = BTL_MENU_TYPE_ABILITY;
3970 battleStatus->selectedMoveID = BattleMenu_Moves_OptionIndices[battleStatus->unk_4B];
3971 battleStatus->curTargetListFlags = gMoveTable[battleStatus->selectedMoveID].flags;
3976 }
3977 break;
3980 if (btl_main_menu_update() != 0) {
3982 }
3983 break;
3985 func_802A2AB8();
3986 func_802A1098();
3988 break;
3990 func_802A27E4();
3992 break;
3994 if (btl_submenu_moves_update() != -1) {
3996 }
3997 break;
3999 popupIndex = 0;
4000 for (i = 0; i < ARRAY_COUNT(playerData->invItems); i++) {
4001 ItemData* item;
4002 HudScript** hudScript;
4003 if (playerData->invItems[i] == ITEM_NONE) {
4004 continue;
4005 }
4006 item = &gItemTable[playerData->invItems[i]];
4007 hudScript = &gItemHudScripts[item->hudElemID].enabled;
4008
4009 if (!(item->typeFlags & ITEM_TYPE_FLAG_BATTLE_USABLE)) {
4010 continue;
4011 }
4012 popupMenu->ptrIcon[popupIndex] = hudScript[0];
4013 popupMenu->userIndex[popupIndex] = playerData->invItems[i];
4014 popupMenu->enabled[popupIndex] = TRUE;
4015 popupMenu->nameMsg[popupIndex] = item->nameMsg;
4016 popupMenu->descMsg[popupIndex] = item->shortDescMsg;
4017 popupIndex++;
4018 }
4019 if (battleStatus->lastPartnerMenuSelection[BTL_MENU_IDX_PARTNER_ITEM] < 0) {
4021 }
4022 popupMenu->popupType = POPUP_MENU_USE_ITEM;
4023 popupMenu->numEntries = popupIndex;
4024 popupMenu->dipMode = 0;
4025 popupMenu->titleNumber = 0;
4026 initialPos = battleStatus->lastPartnerMenuSelection[BTL_MENU_IDX_PARTNER_ITEM];
4027 popupMenu->initialPos = initialPos;
4028 create_battle_popup_menu(popupMenu);
4029 func_800F52BC();
4031 break;
4033 if (popupMenu->result != POPUP_RESULT_CHOOSING) {
4034 if (popupMenu->result == POPUP_RESULT_CANCEL) {
4035 func_802A1050();
4036 D_802ACC60 = 8;
4041 } else {
4044 battleStatus->unk_1AA = popupMenu->userIndex[popupMenu->result - 1];
4045 battleStatus->moveCategory = BTL_MENU_TYPE_ITEMS;
4046 battleStatus->moveArgument = battleStatus->unk_1AA;
4048 battleStatus->curAttackElement = 0;
4049 battleStatus->lastPartnerMenuSelection[BTL_MENU_IDX_PARTNER_ITEM] = popupMenu->result - 1;
4051 func_802A1030();
4053 }
4054 }
4055 break;
4057 if ((battleStatus->curButtonsPressed & BUTTON_B) && popupMenu->result == POPUP_RESULT_CHOOSING) {
4058 func_800F16CC();
4059 func_802A1098();
4061 } else if (btl_main_menu_update() != 0) {
4063 }
4064 break;
4066 if (btl_main_menu_update() != 0) {
4068 }
4069 break;
4071 func_800F16CC();
4072 func_802A1098();
4074 break;
4078 break;
4080 popupIndex = 0;
4081 for (i = 1; i < ARRAY_COUNT(PartnerIDFromMenuIndex); i++) {
4082 s32 partnerId = PartnerIDFromMenuIndex[i];
4083 if (playerData->partners[partnerId].enabled) {
4084 popupProps = &gPartnerPopupProperties[partnerId];
4085 popupMenu->ptrIcon[popupIndex] = battle_menu_PartnerHudScripts[partnerId];
4086 popupMenu->userIndex[popupIndex] = partnerId;
4087 popupMenu->enabled[popupIndex] = 1;
4088 popupMenu->nameMsg[popupIndex] = popupProps->nameMsg;
4089 popupMenu->descMsg[popupIndex] = popupProps->battleDescMsg;
4090 popupMenu->value[popupIndex] = playerData->partners[partnerId].level;
4091 if (playerData->curPartner == partnerId) {
4092 popupMenu->enabled[popupIndex] = 0;
4093 popupMenu->ptrIcon[popupIndex] = battle_menu_DisabledPartnerHudScripts[partnerId];
4094 }
4095 popupIndex++;
4096 }
4097 }
4098 if (battleStatus->lastPartnerMenuSelection[BTL_MENU_IDX_PARTNER] < 0) {
4100 }
4102 popupMenu->numEntries = popupIndex;
4103 popupMenu->initialPos = MenuIndexFromPartnerID[playerData->curPartner] - 1;
4104 popupMenu->dipMode = 0;
4105 popupMenu->titleNumber = 0;
4106 create_battle_popup_menu(popupMenu);
4107 func_800F52BC();
4109 break;
4111 if (popupMenu->result == POPUP_RESULT_INVALID) {
4113 } else if (popupMenu->result != POPUP_RESULT_CHOOSING) {
4114 if (popupMenu->result == POPUP_RESULT_CANCEL) {
4115 func_802A1050();
4116 D_802ACC60 = 8;
4121 } else {
4124 battleStatus->unk_1AC = popupMenu->userIndex[popupMenu->result - 1];
4126 battleStatus->selectedMoveID = MOVE_UNUSED_37;
4127 battleStatus->curTargetListFlags = TARGET_FLAG_2;
4128 battleStatus->moveArgument = battleStatus->unk_1AC;
4129 battleStatus->lastPartnerMenuSelection[BTL_MENU_IDX_PARTNER] = popupMenu->result - 1;
4131 func_802A1030();
4133 }
4134 }
4135 break;
4137 if ((battleStatus->curButtonsPressed & BUTTON_B) && (popupMenu->result == POPUP_RESULT_CHOOSING)) {
4138 func_800F16CC();
4139 func_802A1098();
4141 } else if (btl_main_menu_update() != 0) {
4145 }
4146 break;
4148 if (btl_main_menu_update() != 0) {
4150 }
4151 break;
4153 func_800F16CC();
4154 func_802A1098();
4156 break;
4160 break;
4162 if (popupMenu->result != POPUP_RESULT_INVALID) {
4164 }
4165 break;
4167 entryIdx = 1;
4168 battleStatus->submenuMoves[0] = MOVE_FOCUS;
4169 battleStatus->submenuMoveCount = entryIdx;
4170 battleStatus->submenuIcons[0] = ITEM_PARTNER_ATTACK;
4171 battleStatus->submenuStatus[0] = 1;
4172 for (i = 0; i < battleStatus->submenuMoveCount; i++) {
4173 moveData = &gMoveTable[battleStatus->submenuMoves[i]];
4174 battle_menu_moveOptionIconScripts[i] = battle_menu_StarPowerMovesHudScripts[2 * STAR_POWER_INDEX(battleStatus->submenuMoves[i]) + 0];
4175 if (battleStatus->submenuStatus[i] == 0) {
4176 battle_menu_moveOptionIconScripts[i] = battle_menu_StarPowerMovesHudScripts[2 * STAR_POWER_INDEX(battleStatus->submenuMoves[i]) + 1];
4177 }
4182 BattleMenu_Moves_OptionEnabled[i] = battleStatus->submenuStatus[i];
4183 battle_menu_moveOptionNames[i] = moveData->nameMsg;
4187 }
4188 if (battleStatus->lastPartnerMenuSelection[BTL_MENU_IDX_STAR_POWER] < 0) {
4190 }
4193 initialPos = battleStatus->lastPartnerMenuSelection[BTL_MENU_IDX_STAR_POWER];
4194 D_802AD4A8 = initialPos;
4195 func_802A2684();
4197 break;
4199 entryIdx = btl_submenu_moves_update();
4200 if (entryIdx != 0) {
4201 if (entryIdx == 255) {
4202 func_802A1050();
4203 D_802ACC60 = 8;
4208 } else {
4209 battleStatus->unk_4B = BattleMenu_Moves_OptionIndices[entryIdx - 1];
4210 func_802A27D0();
4211 func_802A1030();
4213 }
4214 }
4215 break;
4217 entryIdx = btl_submenu_moves_update();
4218 if ((battleStatus->curButtonsPressed & BUTTON_B) && (entryIdx == 0)) {
4219 func_802A2AB8();
4220 func_802A1098();
4222 } else if (btl_main_menu_update() != 0) {
4226 battleStatus->selectedMoveID = battleStatus->submenuMoves[battleStatus->unk_4B];
4227 battleStatus->curTargetListFlags = gMoveTable[battleStatus->submenuMoves[battleStatus->unk_4B]].flags;
4228 battleStatus->moveArgument = battleStatus->unk_4B;
4231 }
4232 break;
4235 if (btl_main_menu_update() != 0) {
4237 }
4238 break;
4240 func_802A2AB8();
4241 func_802A1098();
4243 break;
4245 func_802A27E4();
4247 break;
4249 popupIndex = 0;
4251
4252 // add 'Change Member' command
4253 if (battleStatus->changePartnerAllowed >= 0) {
4256 D_802AD640[popupIndex] = battle_menu_PartnerHudScripts[playerData->curPartner];
4257 D_802AD690[popupIndex] = 1;
4258 D_802AD6C0[popupIndex] = MSG_Menus_Action_ChangePartner;
4259 if (battleStatus->changePartnerAllowed <= 0) {
4261 D_802AD690[popupIndex] = 0;
4262 D_802AD6A8[popupIndex] = 0;
4263 }
4264 popupIndex++;
4265 }
4266
4267 // add 'Do Nothing' command
4270 D_802AD690[popupIndex] = 1;
4272 D_802AD6C0[popupIndex] = MSG_Menus_Action_DoNothing;
4273 popupIndex++;
4274
4275 if (battleStatus->lastPartnerMenuSelection[BTL_MENU_IDX_STRATEGY] < 0) {
4277 }
4278 D_802AD66C = popupIndex;
4279 initialPos = battleStatus->lastPartnerMenuSelection[BTL_MENU_IDX_STRATEGY];
4280 StratsMenuLastPos = initialPos;
4281 func_802A45D8();
4283 break;
4285 entryIdx = btl_update_strats_menu();
4286 if (entryIdx == 0) {
4287 } else if (entryIdx == 255) {
4288 func_802A1050();
4289 D_802ACC60 = 8;
4294 } else {
4295 battleStatus->curPartnerSubmenu = D_802AD678[entryIdx - 1];
4296 battleStatus->lastPartnerMenuSelection[BTL_MENU_IDX_STRATEGY] = entryIdx - 1;
4297 if (battleStatus->curPartnerSubmenu == 5) { // change partner
4301 } else {
4302 func_802A4718();
4303 func_802A1030();
4305 }
4306 }
4307 break;
4309 entryIdx = btl_update_strats_menu();
4310 if ((battleStatus->curButtonsPressed & BUTTON_B) && entryIdx == 0) {
4311 func_802A48FC();
4312 func_802A1098();
4314 } else if (btl_main_menu_update() != 0) {
4317 entryIdx = battleStatus->curPartnerSubmenu;
4318 switch (entryIdx) {
4319 case 9:
4323 break;
4324 case 3:
4327 battleStatus->moveCategory = entryIdx;
4328 battleStatus->selectedMoveID = MOVE_UNUSED_39;
4330 break;
4331 case 10:
4335 break;
4336 }
4337 }
4338 break;
4341 if (btl_main_menu_update() != 0) {
4342 D_802ACC60 = 8;
4345 }
4346 break;
4348 func_802A48FC();
4349 func_802A1098();
4351 break;
4353 func_802A472C();
4355 break;
4357 popupIndex = 0;
4358 for (i = 1; i < ARRAY_COUNT(PartnerIDFromMenuIndex); i++) {
4359 s32 partnerId = PartnerIDFromMenuIndex[i];
4360 if (playerData->partners[partnerId].enabled) {
4361 popupProps = &gPartnerPopupProperties[partnerId];
4362 popupMenu->ptrIcon[popupIndex] = battle_menu_PartnerHudScripts[partnerId];
4363 popupMenu->userIndex[popupIndex] = partnerId;
4364 popupMenu->enabled[popupIndex] = 1;
4365 popupMenu->nameMsg[popupIndex] = popupProps->nameMsg;
4366 popupMenu->descMsg[popupIndex] = popupProps->battleDescMsg;
4367 popupMenu->value[popupIndex] = playerData->partners[partnerId].level;
4368 if (playerData->curPartner == partnerId) {
4369 popupMenu->enabled[popupIndex] = 0;
4370 popupMenu->ptrIcon[popupIndex] = battle_menu_DisabledPartnerHudScripts[partnerId];
4371 }
4372 popupIndex++;
4373 }
4374 }
4375 if (battleStatus->lastPartnerMenuSelection[BTL_MENU_IDX_PARTNER] < 0) {
4377 }
4379 popupMenu->numEntries = popupIndex;
4380 popupMenu->initialPos = MenuIndexFromPartnerID[playerData->curPartner] - 1;
4381 popupMenu->dipMode = 0;
4382 popupMenu->titleNumber = 0;
4383 create_battle_popup_menu(popupMenu);
4384 func_800F52BC();
4386 break;
4388 if (popupMenu->result == POPUP_RESULT_INVALID) {
4390 } else if (popupMenu->result != POPUP_RESULT_CHOOSING) {
4391 if (popupMenu->result == POPUP_RESULT_CANCEL) {
4392 func_802A47E0();
4396 } else {
4399 battleStatus->unk_1AC = popupMenu->userIndex[popupMenu->result - 1];
4401 battleStatus->selectedMoveID = MOVE_UNUSED_37;
4402 battleStatus->curTargetListFlags = TARGET_FLAG_2;
4403 battleStatus->moveArgument = battleStatus->unk_1AC;
4404 battleStatus->lastPartnerMenuSelection[BTL_MENU_IDX_PARTNER] = popupMenu->result - 1;
4406 func_802A4718();
4407 func_802A1030();
4409 }
4410 }
4411 break;
4413 if ((battleStatus->curButtonsPressed & BUTTON_B) && popupMenu->result == POPUP_RESULT_CHOOSING) {
4414 func_800F16CC();
4415 func_802A4A10();
4416 func_802A1098();
4418 } else {
4420 if (btl_main_menu_update() != 0) {
4424 }
4425 }
4426 break;
4429 if (btl_main_menu_update() != 0) {
4431 }
4432 break;
4434 func_800F16CC();
4435 func_802A4A10();
4436 func_802A1098();
4438 break;
4441 func_802A472C();
4443 break;
4447 if (popupMenu->result != POPUP_RESULT_INVALID) {
4451 }
4452 break;
4453 }
4454}
void btl_state_update_partner_menu(void)
AnimID BattleMenu_PartnerThinkAnims[]
HudScript * battle_menu_PartnerMoveHudScripts[10][10]
void btl_init_menu_partner(void)
Definition 190B20.c:857
AnimID BattleMenu_PartnerIdleAnims[]
@ BTL_MENU_TYPE_ABILITY
Definition enums.h:4232
@ BTL_MENU_TYPE_PARTNER_FOCUS
Definition enums.h:4237
@ BTL_SUBSTATE_PARTNER_MENU_UNUSED_CHANGE_PARTNER_5
Definition enums.h:4034
@ BTL_SUBSTATE_PARTNER_MENU_MAIN_MENU_1
Definition enums.h:3992
@ BTL_SUBSTATE_PARTNER_MENU_MAIN_MENU_2
Definition enums.h:3993
@ BTL_SUBSTATE_PARTNER_MENU_MAIN_SHOW_CANT_SWAP
Definition enums.h:3998
@ BTL_SUBSTATE_PARTNER_MENU_STRATEGIES_2
Definition enums.h:4046
@ BTL_SUBSTATE_PARTNER_MENU_ABILITIES_6
Definition enums.h:4006
@ BTL_SUBSTATE_PARTNER_MENU_ITEMS_3
Definition enums.h:4025
@ BTL_SUBSTATE_PARTNER_MENU_NONE
Definition enums.h:3990
@ BTL_SUBSTATE_PARTNER_MENU_ABILITIES_2
Definition enums.h:4002
@ BTL_SUBSTATE_PARTNER_MENU_STRATEGIES_3
Definition enums.h:4047
@ BTL_SUBSTATE_PARTNER_MENU_CHANGE_PARTNER_3
Definition enums.h:4017
@ BTL_SUBSTATE_PARTNER_MENU_MAIN_AWAIT_CANT_SWAP
Definition enums.h:3999
@ BTL_SUBSTATE_PARTNER_MENU_STRATEGIES_1
Definition enums.h:4045
@ BTL_SUBSTATE_PARTNER_MENU_FOCUS_4
Definition enums.h:4041
@ BTL_SUBSTATE_PARTNER_MENU_FOCUS_5
Definition enums.h:4042
@ BTL_SUBSTATE_PARTNER_MENU_MAIN_MENU_3
Definition enums.h:3994
@ BTL_SUBSTATE_PARTNER_MENU_FOCUS_3
Definition enums.h:4040
@ BTL_SUBSTATE_PARTNER_MENU_CHANGE_PARTNER_7
Definition enums.h:4021
@ BTL_SUBSTATE_PARTNER_MENU_ITEMS_2
Definition enums.h:4024
@ BTL_SUBSTATE_PARTNER_MENU_ABILITIES_1
Definition enums.h:4001
@ BTL_SUBSTATE_PARTNER_MENU_ITEMS_4
Definition enums.h:4026
@ BTL_SUBSTATE_PARTNER_MENU_CHANGE_PARTNER_5
Definition enums.h:4019
@ BTL_SUBSTATE_PARTNER_MENU_CHANGE_PARTNER_4
Definition enums.h:4018
@ BTL_SUBSTATE_PARTNER_MENU_FOCUS_2
Definition enums.h:4039
@ BTL_SUBSTATE_PARTNER_MENU_CHANGE_PARTNER_2
Definition enums.h:4016
@ BTL_SUBSTATE_PARTNER_MENU_CHANGE_PARTNER_1
Definition enums.h:4015
@ BTL_SUBSTATE_PARTNER_MENU_UNUSED_CHANGE_PARTNER_6
Definition enums.h:4035
@ BTL_SUBSTATE_PARTNER_MENU_ABILITIES_4
Definition enums.h:4004
@ BTL_SUBSTATE_PARTNER_MENU_UNUSED_CHANGE_PARTNER_7
Definition enums.h:4036
@ BTL_SUBSTATE_PARTNER_MENU_FOCUS_6
Definition enums.h:4043
@ BTL_SUBSTATE_PARTNER_MENU_ABILITIES_3
Definition enums.h:4003
@ BTL_SUBSTATE_PARTNER_MENU_UNUSED_CHANGE_PARTNER_4
Definition enums.h:4033
@ BTL_SUBSTATE_PARTNER_MENU_MAIN_MENU_4
Definition enums.h:3995
@ BTL_SUBSTATE_PARTNER_MENU_MAIN_MENU_6
Definition enums.h:3997
@ BTL_SUBSTATE_PARTNER_MENU_CHANGE_PARTNER_6
Definition enums.h:4020
@ BTL_SUBSTATE_PARTNER_MENU_UNUSED_CHANGE_PARTNER_2
Definition enums.h:4031
@ BTL_SUBSTATE_PARTNER_MENU_12D
Definition enums.h:4052
@ BTL_SUBSTATE_PARTNER_MENU_STRATEGIES_6
Definition enums.h:4050
@ BTL_SUBSTATE_PARTNER_MENU_FOCUS_1
Definition enums.h:4038
@ BTL_SUBSTATE_PARTNER_MENU_UNUSED_CHANGE_PARTNER_3
Definition enums.h:4032
@ BTL_SUBSTATE_PARTNER_MENU_INIT_MENU
Definition enums.h:4053
@ BTL_SUBSTATE_PARTNER_MENU_ABILITIES_5
Definition enums.h:4005
@ BTL_SUBSTATE_PARTNER_MENU_STRATEGIES_5
Definition enums.h:4049
@ BTL_SUBSTATE_PARTNER_MENU_STRATEGIES_4
Definition enums.h:4048
@ BTL_SUBSTATE_PARTNER_MENU_MAIN_MENU_5
Definition enums.h:3996
@ BTL_SUBSTATE_PARTNER_MENU_ITEMS_6
Definition enums.h:4028
@ BTL_SUBSTATE_PARTNER_MENU_ABILITIES_7
Definition enums.h:4007
@ BTL_SUBSTATE_PARTNER_MENU_ITEMS_1
Definition enums.h:4023
@ BTL_SUBSTATE_PARTNER_MENU_UNUSED_CHANGE_PARTNER_1
Definition enums.h:4030
@ BTL_SUBSTATE_PARTNER_MENU_ITEMS_5
Definition enums.h:4027
@ BATTLE_STATE_SWITCH_TO_PLAYER
Definition enums.h:3640
@ BATTLE_STATE_END_PARTNER_TURN
Definition enums.h:3653
@ BATTLE_STATE_9
Definition enums.h:3639
@ ABILITY_GROUP_FOCUS
Definition enums.h:489
@ BTL_MENU_ENABLED_PARTNER_FOCUS
Definition enums.h:4247
@ BTL_MENU_ENABLED_ABILITIES
Definition enums.h:4244
@ ACTOR_PARTNER
Definition enums.h:2086
@ BTL_MENU_IDX_PARTNER_ITEM
Definition enums.h:4221
@ BTL_MENU_IDX_ABILITY
Definition enums.h:4220
s32 HudScript[]
Definition hud_element.h:9
s8 lastPartnerMenuSelection[16]

Referenced by btl_state_update_partner_menu(), btl_state_update_select_target(), and btl_update().

◆ btl_state_draw_partner_menu()

void btl_state_draw_partner_menu ( void )

Definition at line 4456 of file btl_states_menus.c.

4456 {
4457 switch (gBattleSubState) {
4460 break;
4497 break;
4500 break;
4503 break;
4506 break;
4509 break;
4510 }
4511}
@ BTL_SUBSTATE_PARTNER_MENU_UNKNOWN_5
Definition enums.h:4013
@ BTL_SUBSTATE_PARTNER_MENU_UNKNOWN_1
Definition enums.h:4009
@ BTL_SUBSTATE_PARTNER_MENU_UNKNOWN_4
Definition enums.h:4012
@ BTL_SUBSTATE_PARTNER_MENU_UNKNOWN_3
Definition enums.h:4011
@ BTL_SUBSTATE_PARTNER_MENU_UNKNOWN_2
Definition enums.h:4010

Referenced by btl_draw_ui().

◆ btl_menu_show_switch_to_twink()

s32 btl_menu_show_switch_to_twink ( void )

Definition at line 4513 of file btl_states_menus.c.

4513 {
4515 return FALSE;
4516 }
4517 return TRUE;
4518}

Referenced by btl_state_update_peach_menu().

◆ btl_state_update_peach_menu()

void btl_state_update_peach_menu ( void )

Definition at line 4520 of file btl_states_menus.c.

4520 {
4521 BattleStatus* battleStatus = &gBattleStatus;
4522 Actor* player = battleStatus->playerActor;
4523 Actor* partner = battleStatus->partnerActor;
4524 s32 selectedOption;
4525 s32 initialPos;
4526 s32 entryIdx;
4527
4528 switch (gBattleSubState) {
4531 btl_cam_move(10);
4534 break;
4535 }
4536 player->state.curPos.x = player->homePos.x;
4537 player->state.curPos.z = player->homePos.z;
4539 player->state.goalPos.x = partner->homePos.x;
4540 player->state.goalPos.z = partner->homePos.z;
4541 player->state.moveTime = 4;
4542 player->state.angle = 0.0f;
4543 break;
4545 if (player->state.moveTime != 0) {
4546 player->curPos.x += (player->state.goalPos.x - player->curPos.x) / player->state.moveTime;
4547 player->curPos.z += (player->state.goalPos.z - player->curPos.z) / player->state.moveTime;
4548 partner->curPos.x += (player->state.curPos.x - partner->curPos.x) / player->state.moveTime;
4549 partner->curPos.z += (player->state.curPos.z - partner->curPos.z) / player->state.moveTime;
4550 }
4551
4552 player->curPos.z -= sin_rad(DEG_TO_RAD(player->state.angle)) * 16.0f;
4553 player->yaw = clamp_angle(-player->state.angle);
4554 partner->curPos.z += sin_rad(DEG_TO_RAD(player->state.angle)) * 16.0f;
4555 partner->yaw = clamp_angle(-player->state.angle);
4556 player->state.angle += 90.0f;
4557
4558 if (player->state.moveTime != 0) {
4559 player->state.moveTime--;
4560 break;
4561 }
4562
4563 player->curPos.x = player->state.goalPos.x;
4564 player->curPos.z = player->state.goalPos.z;
4565 partner->curPos.x = player->state.curPos.x;
4566 partner->curPos.z = player->state.curPos.z;
4567 player->homePos.x = player->curPos.x;
4568 player->homePos.z = player->curPos.z;
4569 partner->homePos.x = partner->curPos.x;
4570 partner->homePos.z = partner->curPos.z;
4571 gBattleStatus.flags1 &= ~BS_FLAGS1_PLAYER_IN_BACK;
4574 player->flags &= ~ACTOR_FLAG_USING_IDLE_ANIM;
4576 if (partner != NULL) {
4579 }
4580
4581 entryIdx = 0;
4582 battleStatus->selectedMoveID = MOVE_NONE;
4584 BattleMenu_OptionEnabled[entryIdx] = TRUE;
4585 battle_menu_isMessageDisabled[entryIdx] = 0;
4587 BattleMenu_TitleMessages[entryIdx] = D_802AB728[entryIdx];
4588 if (!(battleStatus->enabledMenusFlags & BTL_MENU_ENABLED_STAR_POWERS)) {
4589 BattleMenu_OptionEnabled[entryIdx] = FALSE;
4592 }
4593
4594 initialPos = 0;
4595 entryIdx++;
4596
4599 } else {
4601 }
4602 BattleMenu_NumOptions = entryIdx;
4603 D_802AD0A8 = 0;
4604 D_802AD0B0 = initialPos;
4605 D_802AD100 = 2 - initialPos;
4606
4608 D_802ACC60 = 8;
4610 break;
4612 set_actor_anim(ACTOR_PLAYER, 0, ANIM_Peach2_Delighted);
4613 selectedOption = btl_main_menu_update();
4614 if (D_802ACC60 != 0) {
4615 D_802ACC60--;
4616 break;
4617 }
4618 if (selectedOption != 0) {
4619 set_actor_anim(ACTOR_PLAYER, 0, ANIM_Peach1_Walk);
4620 battleStatus->curSubmenu = battle_menu_submenuIDs[selectedOption - 1];
4621 func_802A1030();
4622 D_802ACC60 = 8;
4625 }
4626 break;
4628 if (btl_main_menu_update() != 0) {
4631 battleStatus->curTargetListFlags = gMoveTable[MOVE_PEACH_FOCUS].flags;
4633 battleStatus->selectedMoveID = MOVE_PEACH_FOCUS;
4634 battleStatus->moveArgument = STAR_POWER_INDEX(MOVE_PEACH_FOCUS);
4636 }
4637 break;
4639 func_802A1050();
4643 break;
4646 break;
4649 ShowingErrorMessage = TRUE;
4651 break;
4653 if (btl_is_popup_displayed()) {
4654 break;
4655 }
4656 ShowingErrorMessage = FALSE;
4657 D_802ACC60 = 0;
4659 break;
4660 }
4661}
s32 btl_menu_show_switch_to_twink(void)
IconHudScriptPair battle_menu_PeachStarPowerHudScripts
s32 D_802AB728[]
void btl_state_update_peach_menu(void)
@ BTL_SUBSTATE_PEACH_MENU_TARGET_CHOSEN
Definition enums.h:3757
@ BTL_SUBSTATE_PEACH_MENU_TARGET_CANCEL
Definition enums.h:3756
@ BTL_SUBSTATE_PEACH_MENU_CHOOSE_CATEGORY
Definition enums.h:3753
@ BTL_SUBSTATE_PEACH_CREATE_MAIN_MENU
Definition enums.h:3763
@ BTL_SUBSTATE_PEACH_MENU_SHOW_CANT_SWITCH
Definition enums.h:3760
@ BTL_SUBSTATE_PEACH_MENU_PERFORM_SWAP
Definition enums.h:3762
@ BTL_SUBSTATE_PEACH_MENU_AWAIT_CANT_SWITCH_POPUP
Definition enums.h:3761
@ BTL_SUBSTATE_PEACH_MENU_CHOOSE_TARGET
Definition enums.h:3754
@ BTL_SUBSTATE_PEACH_MENU_INIT
Definition enums.h:3752

Referenced by btl_state_update_peach_menu(), btl_state_update_select_target(), and btl_update().

◆ btl_state_draw_peach_menu()

void btl_state_draw_peach_menu ( void )

Definition at line 4663 of file btl_states_menus.c.

4663 {
4664 switch (gBattleSubState) {
4667 break;
4670 break;
4673 break;
4676 break;
4679 break;
4684 break;
4685 }
4686}
@ BTL_SUBSTATE_PEACH_MENU_UNUSED_6
Definition enums.h:3758
@ BTL_SUBSTATE_PEACH_MENU_UNUSED_7
Definition enums.h:3759
@ BTL_SUBSTATE_PEACH_MENU_UNUSED_3
Definition enums.h:3755

Referenced by btl_draw_ui().

◆ btl_menu_show_switch_to_peach()

s32 btl_menu_show_switch_to_peach ( void )

Definition at line 4688 of file btl_states_menus.c.

4688 {
4690 return FALSE;
4691 }
4692 return TRUE;
4693}

Referenced by btl_state_update_twink_menu().

◆ btl_state_update_twink_menu()

void btl_state_update_twink_menu ( void )

Definition at line 4695 of file btl_states_menus.c.

4695 {
4696 BattleStatus* battleStatus = &gBattleStatus;
4697 Actor* player = battleStatus->playerActor;
4698 Actor* partner = battleStatus->partnerActor;
4699 s32 s1;
4700 s32 selection;
4701 s32 var_v0_2;
4702 s32 shouldSkipTurn;
4703 s32 initialPos;
4704 s32 entryIdx;
4705
4706 switch (gBattleSubState) {
4708 shouldSkipTurn = FALSE;
4709 if (player->debuff == STATUS_KEY_SLEEP) {
4710 shouldSkipTurn = TRUE;
4711 }
4712 if (player->debuff == STATUS_KEY_FEAR) {
4713 shouldSkipTurn = TRUE;
4714 }
4715 if (player->debuff == STATUS_KEY_DIZZY) {
4716 shouldSkipTurn = TRUE;
4717 }
4718 if (player->debuff == STATUS_KEY_PARALYZE) {
4719 shouldSkipTurn = TRUE;
4720 }
4721 if (player->debuff == STATUS_KEY_FROZEN) {
4722 shouldSkipTurn = TRUE;
4723 }
4724 if (player->debuff == STATUS_KEY_STOP) {
4725 shouldSkipTurn = TRUE;
4726 }
4727 if (player->stoneStatus == STATUS_KEY_STONE) {
4728 shouldSkipTurn = TRUE;
4729 }
4730 if (player->koStatus == STATUS_KEY_DAZE) {
4731 shouldSkipTurn = TRUE;
4732 }
4733
4734 if (shouldSkipTurn) {
4736 break;
4737 }
4738
4740 btl_cam_move(10);
4742 player->state.curPos.x = player->homePos.x;
4743 player->state.curPos.z = player->homePos.z;
4744 player->state.goalPos.x = partner->homePos.x;
4745 player->state.goalPos.z = partner->homePos.z;
4747 player->state.moveTime = 4;
4748 player->state.angle = 0.0f;
4749 break;
4750 }
4752 break;
4754 if (player->state.moveTime != 0) {
4755 player->curPos.x += (player->state.goalPos.x - player->curPos.x) / player->state.moveTime;
4756 player->curPos.z += (player->state.goalPos.z - player->curPos.z) / player->state.moveTime;
4757 partner->curPos.x += (player->state.curPos.x - partner->curPos.x) / player->state.moveTime;
4758 partner->curPos.z += (player->state.curPos.z - partner->curPos.z) / player->state.moveTime;
4759 }
4760 player->curPos.z += sin_rad(DEG_TO_RAD(player->state.angle)) * 16.0f;
4761 player->yaw = clamp_angle(-player->state.angle);
4762 partner->curPos.z -= sin_rad(DEG_TO_RAD(player->state.angle)) * 16.0f;
4763 partner->yaw = clamp_angle(-player->state.angle);
4764 player->state.angle += 90.0f;
4765 if (player->state.moveTime != 0) {
4766 player->state.moveTime--;
4767 break;
4768 }
4769 player->curPos.x = player->state.goalPos.x;
4770 player->curPos.z = player->state.goalPos.z;
4771 partner->curPos.x = player->state.curPos.x;
4772 partner->curPos.z = player->state.curPos.z;
4773 player->homePos.x = player->curPos.x;
4774 player->homePos.z = player->curPos.z;
4775 partner->homePos.x = partner->curPos.x;
4776 partner->homePos.z = partner->curPos.z;
4780 player->flags &= ~ACTOR_FLAG_USING_IDLE_ANIM;
4782 if (partner != NULL) {
4785 }
4786
4787 entryIdx = 0;
4788 battleStatus->selectedMoveID = MOVE_NONE;
4790 BattleMenu_OptionEnabled[entryIdx] = TRUE;
4791 battle_menu_isMessageDisabled[entryIdx] = 0;
4793 BattleMenu_TitleMessages[entryIdx] = D_802AB734[entryIdx];
4794 if (!(battleStatus->enabledMenusFlags & BTL_MENU_ENABLED_STAR_POWERS)) {
4795 BattleMenu_OptionEnabled[entryIdx] = FALSE;
4798 }
4799
4800 initialPos = 0;
4801 entryIdx++;
4802
4805 } else {
4807 }
4808 BattleMenu_NumOptions = entryIdx;
4809 D_802AD0A8 = 0;
4810 D_802AD0B0 = initialPos;
4811 D_802AD100 = 2 - initialPos;
4812
4814 D_802ACC60 = 8;
4816 break;
4818 set_actor_anim(ACTOR_PARTNER, 0, ANIM_Twink_Idle);
4819 selection = btl_main_menu_update();
4820 if (D_802ACC60 != 0) {
4821 D_802ACC60--;
4822 break;
4823 }
4824 if (selection != 0) {
4825 set_actor_anim(ACTOR_PARTNER, 0, ANIM_Twink_Angry);
4826 battleStatus->curSubmenu = battle_menu_submenuIDs[selection - 1];
4827 func_802A1030();
4828 D_802ACC60 = 8;
4831 }
4832 break;
4834 if (btl_main_menu_update() != 0) {
4838 battleStatus->selectedMoveID = MOVE_TWINK_DASH;
4839 battleStatus->moveArgument = 0;
4840 battleStatus->curTargetListFlags = gMoveTable[MOVE_TWINK_DASH].flags;
4842 }
4843 break;
4845 func_802A1050();
4849 break;
4852 break;
4855 ShowingErrorMessage = TRUE;
4857 break;
4859 if (btl_is_popup_displayed()) {
4860 break;
4861 }
4862 ShowingErrorMessage = FALSE;
4863 D_802ACC60 = 0;
4865 break;
4866 }
4867}
IconHudScriptPair battle_menu_TwinkStarPowerHudScripts
s32 btl_menu_show_switch_to_peach(void)
s32 D_802AB734[]
void btl_state_update_twink_menu(void)
@ BTL_SUBSTATE_TWINK_MENU_CREATE_MAIN_MENU
Definition enums.h:3777
@ BTL_SUBSTATE_TWINK_MENU_AWAIT_CANT_SWITCH_POPUP
Definition enums.h:3775
@ BTL_SUBSTATE_TWINK_MENU_TARGET_CANCEL
Definition enums.h:3770
@ BTL_SUBSTATE_TWINK_MENU_INIT
Definition enums.h:3766
@ BTL_SUBSTATE_TWINK_MENU_PERFORM_SWAP
Definition enums.h:3776
@ BTL_SUBSTATE_TWINK_MENU_CHOOSE_TARGET
Definition enums.h:3768
@ BTL_SUBSTATE_TWINK_MENU_TARGET_CHOSEN
Definition enums.h:3771
@ BTL_SUBSTATE_TWINK_MENU_CHOOSE_CATEGORY
Definition enums.h:3767
@ BTL_SUBSTATE_TWINK_MENU_SHOW_CANT_SWITCH
Definition enums.h:3774

Referenced by btl_state_update_select_target(), btl_state_update_twink_menu(), and btl_update().

◆ btl_state_draw_twink_menu()

void btl_state_draw_twink_menu ( void )

Definition at line 4869 of file btl_states_menus.c.

4869 {
4870 switch (gBattleSubState) {
4873 break;
4876 break;
4879 break;
4882 break;
4885 break;
4890 break;
4891 }
4892}
@ BTL_SUBSTATE_TWINK_MENU_UNUSED_3
Definition enums.h:3769
@ BTL_SUBSTATE_TWINK_MENU_UNUSED_6
Definition enums.h:3772
@ BTL_SUBSTATE_TWINK_MENU_UNUSED_7
Definition enums.h:3773

Referenced by btl_draw_ui().

◆ btl_state_update_select_target()

void btl_state_update_select_target ( void )

Definition at line 4894 of file btl_states_menus.c.

4894 {
4895 BattleStatus* battleStatus = &gBattleStatus;
4896 Actor* actor;
4897 s32 targetListLength;
4898 s32 selectedTargetIndex;
4899 HudElemID hid;
4900 s8* targetIndexList;
4901 SelectableTarget* target;
4902 s32 i;
4903
4905 actor = battleStatus->playerActor;
4906 } else {
4907 actor = battleStatus->partnerActor;
4908 }
4909 targetListLength = actor->targetListLength;
4910 selectedTargetIndex = actor->selectedTargetIndex;
4911
4912 actor->flags &= ~ACTOR_FLAG_SHOW_STATUS_ICONS;
4913 targetIndexList = actor->targetIndexList;
4914 switch (gBattleSubState) {
4918 gBattleStatus.flags1 &= ~BS_FLAGS1_MENU_OPEN;
4919
4920 // prepare the action command tip for the selected move
4922 if (battleStatus->selectedMoveID != MOVE_NONE) {
4923 s8 actionTip = gMoveTable[battleStatus->selectedMoveID].actionTip;
4924
4925 if (actionTip >= 0) {
4927 }
4928 }
4929 }
4930
4931 // create the target list
4933 targetListLength = actor->targetListLength;
4934 if (battleStatus->curTargetListFlags & TARGET_FLAG_SELECT_ONE) {
4935 targetIndexList = actor->targetIndexList;
4936 for (i = 0; i < targetListLength; i++) {
4937 target = &actor->targetData[targetIndexList[i]];
4939 actor->selectedTargetIndex = i;
4940 break;
4941 }
4942 }
4943 }
4944
4945 // when TARGET_FLAG_OVERRIDE is set, skip selecting a target and begin executing the move
4946 if (battleStatus->curTargetListFlags & TARGET_FLAG_OVERRIDE) {
4951 } else {
4953 }
4955 } else {
4959 } else {
4961 }
4963 }
4964 break;
4965 }
4966
4967 // if the target list is empty, skip selecting a target and begin executing the move
4968 if (targetListLength == 0) {
4973 } else {
4975 }
4977 } else {
4981 } else {
4983 }
4985 }
4986 break;
4987 }
4988
4989 // create the HUD elements for the target pointers
4990 for (i = 0; i < targetListLength; i++) {
4994 hud_element_set_render_pos(hid, 0, -100);
4995 }
4997 break;
4999 // animate the target name sliding into view
5004 }
5005 }
5006
5007 if (battleStatus->curButtonsPressed & BUTTON_B) {
5010 break;
5011 }
5012
5013 if (battleStatus->curButtonsPressed & BUTTON_A) {
5015 D_802ACC60 = 8;
5018 break;
5019 }
5020
5022 if (battleStatus->curButtonsDown & (BUTTON_Z | BUTTON_R)) {
5023 gBattleStatus.flags1 &= ~BS_FLAGS1_MENU_OPEN;
5024 break;
5025 }
5026
5027 if (battleStatus->curTargetListFlags & TARGET_FLAG_SELECT_ONE) {
5028 s32 oldSelectedTargetIndex = selectedTargetIndex;
5029
5030 if (battleStatus->curButtonsHeld & BUTTON_STICK_LEFT) {
5031 selectedTargetIndex--;
5032 }
5033 if (battleStatus->curButtonsHeld & BUTTON_STICK_RIGHT) {
5034 selectedTargetIndex++;
5035 }
5036 if (selectedTargetIndex < 0) {
5037 selectedTargetIndex = targetListLength - 1;
5038 }
5039 if (selectedTargetIndex >= targetListLength) {
5040 selectedTargetIndex = 0;
5041 }
5042 if (selectedTargetIndex != oldSelectedTargetIndex) {
5043 s32 actorFlags;
5044
5045 target = &actor->targetData[targetIndexList[selectedTargetIndex]];
5046 actorFlags = get_actor(target->actorID)->flags;
5048
5049 if (actorFlags & ACTOR_FLAG_UPSIDE_DOWN) {
5051 } else {
5053 }
5055 }
5056 actor->selectedTargetIndex = selectedTargetIndex;
5057 }
5058 break;
5060 gBattleStatus.flags1 &= ~BS_FLAGS1_MENU_OPEN;
5061 target = &actor->targetData[targetIndexList[actor->selectedTargetIndex]];
5062 actor->targetActorID = target->actorID;
5063 actor->targetPartID = target->partID;
5064
5065 // free the HUD elements for the target pointers
5066 for (i = 0; i < targetListLength; i++) {
5068 }
5069
5070 // begin executing the move
5075 } else {
5077 }
5079 } else {
5083 } else {
5085 }
5087 }
5088 break;
5090 // free the HUD elements for the target pointers
5091 for (i = 0; i < targetListLength; i++) {
5093 }
5094
5097
5098 if (battleStatus->itemUsesLeft != 0) {
5103 } else {
5105 }
5111 } else {
5113 }
5114 } else {
5119 } else {
5121 }
5122 }
5123 break;
5124 }
5125}
HudScript HES_HandPointDownLoop
Definition 5B320.c:173
HudScript HES_HandPointLeftLoop
Definition 5B320.c:234
BSS s32 BattleMenu_TargetHudElems[MAX_ENEMY_ACTORS]
BSS s32 BattleMenu_TargetNameOffsetX
BSS s32 BattleMenu_TargetPointerAlpha
s8 selectedTargetIndex
struct SelectableTarget targetData[24]
s16 targetActorID
s8 targetIndexList[24]
@ BS_FLAGS1_10000
Definition enums.h:3584
@ BS_FLAGS1_PARTNER_ACTING
Definition enums.h:3587
@ BTL_MSG_ACTION_TIP_PRESS_BEFORE_LANDING
Definition enums.h:4104
@ TARGET_FLAG_OVERRIDE
Definition enums.h:1871
@ TARGET_FLAG_SELECT_ONE
Definition enums.h:1849
@ BTL_SUBSTATE_SELECT_TARGET_INIT
Definition enums.h:3780
@ BTL_SUBSTATE_SELECT_TARGET_CHOOSE
Definition enums.h:3781
@ BTL_SUBSTATE_SELECT_TARGET_DONE
Definition enums.h:3782
@ BTL_SUBSTATE_SELECT_TARGET_CANCEL
Definition enums.h:3783
@ BATTLE_STATE_PLAYER_MENU
Definition enums.h:3643
@ BATTLE_STATE_PARTNER_MOVE
Definition enums.h:3649
@ BATTLE_STATE_PARTNER_MENU
Definition enums.h:3644
@ ACTOR_FLAG_UPSIDE_DOWN
HP bar offset below actor (e.g. Swooper when upside-down).
Definition enums.h:3331
@ ACTOR_PART_FLAG_DEFAULT_TARGET
Definition enums.h:3353
ActorPart * get_actor_part(Actor *actor, s32 partID)
Definition 190B20.c:1191
Actor * get_actor(s32 actorID)
Definition actor_api.c:155

Referenced by btl_update().

◆ btl_state_draw_select_target()

void btl_state_draw_select_target ( void )

Definition at line 5127 of file btl_states_menus.c.

5127 {
5128 BattleStatus* battleStatus = &gBattleStatus;
5129 PlayerData* playerData = &gPlayerData;
5130 s32 msgID;
5131 s32 msgX;
5132 s32 msgY;
5133 s32 targetListLength;
5134 s32 currentPartner;
5135 s32 actorID;
5136 SelectableTarget* target;
5137 Actor* choosingActor;
5138 Actor* enemyActor;
5139 s32 id;
5140 s32 i;
5141 s32 nameWidth;
5142 s32 xOffset, yOffset;
5143 f32 targetX, targetY, targetZ;
5144 s32 screenX, screenY, screenZ;
5145 s32 selectedTargetIndex;
5146 s8* targetIndexList;
5147 s32* tmpPtr; // TODO required to match and CURSED
5148
5150 choosingActor = battleStatus->playerActor;
5151 } else {
5152 choosingActor = battleStatus->partnerActor;
5153 }
5154
5155 targetListLength = choosingActor->targetListLength;
5156 target = choosingActor->targetData;
5157 selectedTargetIndex = choosingActor->selectedTargetIndex;
5158 targetIndexList = choosingActor->targetIndexList;
5159
5161
5162 if (targetListLength == 0) {
5163 return;
5164 }
5165
5166 // draw target pointers
5167 if (battleStatus->curTargetListFlags & TARGET_FLAG_SELECT_ONE) {
5168 target = &choosingActor->targetData[targetIndexList[selectedTargetIndex]];
5169 enemyActor = get_actor(target->actorID);
5171 targetX = target->truePos.x;
5172 targetY = target->truePos.y;
5173 targetZ = target->truePos.z;
5174
5175 // select target pointer style based on target actor orientation
5176 if (enemyActor->flags & ACTOR_FLAG_UPSIDE_DOWN) {
5177 xOffset = 16;
5178 yOffset = 2;
5181 }
5182 } else {
5183 xOffset = 5;
5184 yOffset = -11;
5187 }
5188 }
5189
5190 get_screen_coords(CAM_BATTLE, targetX, targetY, targetZ, &screenX, &screenY, &screenZ);
5191 hud_element_set_render_pos(id, screenX + xOffset, screenY + yOffset);
5193 } else {
5194 for (i = 0; i < targetListLength; i++) {
5195 target = &choosingActor->targetData[targetIndexList[i]];
5196 enemyActor = get_actor(target->actorID);
5198 targetX = target->truePos.x;
5199 targetY = target->truePos.y;
5200 targetZ = target->truePos.z;
5201
5202 // select target pointer style based on target actor orientation
5203 if (enemyActor->flags & ACTOR_FLAG_UPSIDE_DOWN) {
5204 xOffset = 16;
5205 yOffset = 2;
5208 }
5209 } else {
5210 xOffset = 5;
5211 yOffset = -11;
5214 }
5215 }
5216
5217 get_screen_coords(CAM_BATTLE, targetX, targetY, targetZ, &screenX, &screenY, &screenZ);
5218 hud_element_set_render_pos(id, screenX + xOffset, screenY + yOffset);
5220 }
5221 }
5222
5223 currentPartner = playerData->curPartner;
5224 screenX = 52;
5225 screenY = 64;
5227 currentPartner = PARTNER_TWINK;
5228 }
5229
5230 // get target name width
5231 if ((battleStatus->curTargetListFlags & TARGET_FLAG_SELECT_ONE) || targetListLength == 1) {
5232 actorID = target->actorID;
5233 if (actorID == ACTOR_PLAYER) {
5234 nameWidth = get_msg_width(MSG_Menus_Battle_TargetMario, 0) + 10;
5235 } else if (actorID == ACTOR_PARTNER) {
5236 nameWidth = get_msg_width(PartnerNameMessages[currentPartner], 0) + 10;
5237 } else {
5238 target = &choosingActor->targetData[targetIndexList[selectedTargetIndex]];
5239 enemyActor = get_actor(target->actorID);
5240 msgID = get_actor_part(enemyActor, target->partID)->staticData->overrideNameMsg;
5241 if (msgID == MSG_NONE) {
5242 msgID = bActorNames[enemyActor->actorType];
5243 }
5244 nameWidth = get_msg_width(msgID, 0) + 10;
5245 }
5246 } else {
5247 target = &choosingActor->targetData[targetIndexList[selectedTargetIndex]];
5248 actorID = target->actorID;
5249 if (actorID == ACTOR_PLAYER) {
5250 nameWidth = get_msg_width(MSG_Menus_Battle_TargetMario, 0) + 10;
5251 } else if (actorID == ACTOR_PARTNER) {
5252 nameWidth = get_msg_width(PartnerNameMessages[currentPartner], 0) + 10;
5253 } else {
5254 nameWidth = get_msg_width(MSG_Menus_Battle_TargetAllEnemies, 0) + 10;
5255 }
5256 }
5257
5258 // draw target name box
5259 draw_box(0, WINDOW_STYLE_4, screenX + BattleMenu_TargetNameOffsetX, screenY, 0, nameWidth, 20, 255, 0,
5260 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, NULL, NULL, NULL, SCREEN_WIDTH, SCREEN_HEIGHT, NULL);
5261
5262 // draw target name text
5263 screenX += 4;
5264 screenY += 2;
5265 if ((battleStatus->curTargetListFlags & TARGET_FLAG_SELECT_ONE) || targetListLength == 1) {
5266 actorID = target->actorID;
5267 if (actorID == ACTOR_PLAYER) {
5268 draw_msg(MSG_Menus_Battle_TargetMario, screenX + BattleMenu_TargetNameOffsetX, screenY, 255, MSG_PAL_36, 0);
5269 } else if (actorID == ACTOR_PARTNER) {
5270 draw_msg(PartnerNameMessages[currentPartner], screenX + BattleMenu_TargetNameOffsetX, screenY, 255, MSG_PAL_36, 0);
5271 } else {
5272 target = &choosingActor->targetData[targetIndexList[selectedTargetIndex]];
5273 enemyActor = get_actor(target->actorID);
5274 msgID = get_actor_part(enemyActor, target->partID)->staticData->overrideNameMsg;
5275 if (msgID == MSG_NONE) {
5276 msgID = bActorNames[enemyActor->actorType];
5277 }
5278 draw_msg(msgID, screenX + *tmpPtr, screenY, 255, MSG_PAL_36, 0); // TODO required to match
5279 }
5280 } else {
5281 target = &choosingActor->targetData[targetIndexList[selectedTargetIndex]];
5282 actorID = target->actorID;
5283 if (actorID == ACTOR_PLAYER) {
5284 draw_msg(MSG_Menus_Battle_TargetMario, screenX + BattleMenu_TargetNameOffsetX, screenY, 255, MSG_PAL_36, 0);
5285 } else if (actorID == ACTOR_PARTNER) {
5286 draw_msg(PartnerNameMessages[currentPartner], screenX + BattleMenu_TargetNameOffsetX, screenY, 255, MSG_PAL_36, 0);
5287 } else {
5288 draw_msg(MSG_Menus_Battle_TargetAllEnemies, screenX + BattleMenu_TargetNameOffsetX, screenY, 255, MSG_PAL_36, 0);
5289 }
5290 }
5291}
s32 PartnerNameMessages[]
ActorPartBlueprint * staticData
#define draw_box
@ WINDOW_STYLE_4
Definition enums.h:6373
@ MSG_PAL_36
Definition enums.h:5458
@ PARTNER_TWINK
Definition enums.h:2896
@ CAM_BATTLE
Definition enums.h:1801
void get_screen_coords(s32 camID, f32 x, f32 y, f32 z, s32 *screenX, s32 *screenY, s32 *screenZ)
Definition cam_main.c:410
HudScript * hud_element_get_script(s32 id)
#define SCREEN_HEIGHT
Definition macros.h:110
s32 bActorNames[]

Referenced by btl_draw_ui().

◆ btl_state_update_22()

void btl_state_update_22 ( void )

Definition at line 5293 of file btl_states_menus.c.

5293 {
5294}

Referenced by btl_update().

◆ btl_state_draw_22()

void btl_state_draw_22 ( void )

Definition at line 5296 of file btl_states_menus.c.

5296 {
5297}

Referenced by btl_draw_ui().

Variable Documentation

◆ HES_YellowArrow

HudScript HES_YellowArrow
extern

Definition at line 273 of file battle_ui_gfx.c.

◆ HES_MenuFlee

HudScript HES_MenuFlee
extern

Definition at line 275 of file battle_ui_gfx.c.

◆ HES_MenuFleeDisabled

HudScript HES_MenuFleeDisabled
extern

Definition at line 277 of file battle_ui_gfx.c.

◆ HES_MenuDefend

HudScript HES_MenuDefend
extern

Definition at line 279 of file battle_ui_gfx.c.

◆ HES_MenuDefendDisabled

HudScript HES_MenuDefendDisabled
extern

Definition at line 281 of file battle_ui_gfx.c.

◆ HES_MenuStrategies

HudScript HES_MenuStrategies
extern

Definition at line 283 of file battle_ui_gfx.c.

◆ HES_MenuStrategiesDisabled

HudScript HES_MenuStrategiesDisabled
extern

Definition at line 285 of file battle_ui_gfx.c.

◆ HES_MenuPouch

HudScript HES_MenuPouch
extern

Definition at line 287 of file battle_ui_gfx.c.

◆ HES_MenuPouchDisabled

HudScript HES_MenuPouchDisabled
extern

Definition at line 289 of file battle_ui_gfx.c.

◆ HES_MenuDoNothing

HudScript HES_MenuDoNothing
extern

Definition at line 291 of file battle_ui_gfx.c.

◆ HES_MenuDoNothingDisabled

HudScript HES_MenuDoNothingDisabled
extern

Definition at line 293 of file battle_ui_gfx.c.

◆ HES_Kooper

HudScript HES_Kooper
extern

Definition at line 1950 of file global_hud_scripts.c.

◆ HES_Bombette

HudScript HES_Bombette
extern

Definition at line 1954 of file global_hud_scripts.c.

◆ HES_Partner0

HudScript HES_Partner0
extern

Definition at line 1942 of file global_hud_scripts.c.

◆ HES_Partner0Disabled

HudScript HES_Partner0Disabled
extern

Definition at line 1944 of file global_hud_scripts.c.

◆ HES_Goombario

HudScript HES_Goombario
extern

Definition at line 1946 of file global_hud_scripts.c.

◆ HES_GoombarioDisabled

HudScript HES_GoombarioDisabled
extern

Definition at line 1948 of file global_hud_scripts.c.

◆ HES_KooperDisabled

HudScript HES_KooperDisabled
extern

Definition at line 1952 of file global_hud_scripts.c.

◆ HES_BombetteDisabled

HudScript HES_BombetteDisabled
extern

Definition at line 1956 of file global_hud_scripts.c.

◆ HES_Parakarry

HudScript HES_Parakarry
extern

Definition at line 1958 of file global_hud_scripts.c.

◆ HES_ParakarryDisabled

HudScript HES_ParakarryDisabled
extern

Definition at line 1960 of file global_hud_scripts.c.

◆ HES_Bow

HudScript HES_Bow
extern

Definition at line 1962 of file global_hud_scripts.c.

◆ HES_BowDisabled

HudScript HES_BowDisabled
extern

Definition at line 1964 of file global_hud_scripts.c.

◆ HES_Watt

HudScript HES_Watt
extern

Definition at line 1966 of file global_hud_scripts.c.

◆ HES_WattDisabled

HudScript HES_WattDisabled
extern

Definition at line 1968 of file global_hud_scripts.c.

◆ HES_Sushie

HudScript HES_Sushie
extern

Definition at line 1970 of file global_hud_scripts.c.

◆ HES_SushieDisabled

HudScript HES_SushieDisabled
extern

Definition at line 1972 of file global_hud_scripts.c.

◆ HES_Lakilester

HudScript HES_Lakilester
extern

Definition at line 1974 of file global_hud_scripts.c.

◆ HES_LakilesterDisabled

HudScript HES_LakilesterDisabled
extern

Definition at line 1976 of file global_hud_scripts.c.

◆ HES_PartnerA

HudScript HES_PartnerA
extern

Definition at line 1982 of file global_hud_scripts.c.

◆ HES_PartnerADisabled

HudScript HES_PartnerADisabled
extern

Definition at line 1984 of file global_hud_scripts.c.

◆ HES_MenuBoots1

HudScript HES_MenuBoots1
extern

Definition at line 2140 of file global_hud_scripts.c.

◆ HES_MenuBoots1Disabled

HudScript HES_MenuBoots1Disabled
extern

Definition at line 2142 of file global_hud_scripts.c.

◆ HES_MenuBoots2

HudScript HES_MenuBoots2
extern

Definition at line 2144 of file global_hud_scripts.c.

◆ HES_MenuBoots2Disabled

HudScript HES_MenuBoots2Disabled
extern

Definition at line 2146 of file global_hud_scripts.c.

◆ HES_MenuBoots3

HudScript HES_MenuBoots3
extern

Definition at line 2148 of file global_hud_scripts.c.

◆ HES_MenuBoots3Disabled

HudScript HES_MenuBoots3Disabled
extern

Definition at line 2150 of file global_hud_scripts.c.

◆ HES_MenuHammer1

HudScript HES_MenuHammer1
extern

Definition at line 2152 of file global_hud_scripts.c.

◆ HES_MenuHammer1Disabled

HudScript HES_MenuHammer1Disabled
extern

Definition at line 2154 of file global_hud_scripts.c.

◆ HES_MenuHammer2

HudScript HES_MenuHammer2
extern

Definition at line 2156 of file global_hud_scripts.c.

◆ HES_MenuHammer2Disabled

HudScript HES_MenuHammer2Disabled
extern

Definition at line 2158 of file global_hud_scripts.c.

◆ HES_MenuHammer3

HudScript HES_MenuHammer3
extern

Definition at line 2160 of file global_hud_scripts.c.

◆ HES_MenuHammer3Disabled

HudScript HES_MenuHammer3Disabled
extern

Definition at line 2162 of file global_hud_scripts.c.

◆ HES_MenuItem

HudScript HES_MenuItem
extern

Definition at line 2164 of file global_hud_scripts.c.

◆ HES_MenuItemDisabled

HudScript HES_MenuItemDisabled
extern

Definition at line 2166 of file global_hud_scripts.c.

◆ HES_MenuStarPower

HudScript HES_MenuStarPower
extern

Definition at line 2168 of file global_hud_scripts.c.

Referenced by btl_submenu_moves_update().

◆ HES_MenuStarPowerDisabled

HudScript HES_MenuStarPowerDisabled
extern

Definition at line 2170 of file global_hud_scripts.c.

◆ HES_Eldstar

HudScript HES_Eldstar
extern

Definition at line 1906 of file global_hud_scripts.c.

◆ HES_EldstarDisabled

HudScript HES_EldstarDisabled
extern

Definition at line 1908 of file global_hud_scripts.c.

◆ HES_Mamar

HudScript HES_Mamar
extern

Definition at line 1910 of file global_hud_scripts.c.

◆ HES_MamarDisabled

HudScript HES_MamarDisabled
extern

Definition at line 1912 of file global_hud_scripts.c.

◆ HES_Skolar

HudScript HES_Skolar
extern

Definition at line 1914 of file global_hud_scripts.c.

◆ HES_SkolarDisabled

HudScript HES_SkolarDisabled
extern

Definition at line 1916 of file global_hud_scripts.c.

◆ HES_Muskular

HudScript HES_Muskular
extern

Definition at line 1918 of file global_hud_scripts.c.

◆ HES_MuskularDisabled

HudScript HES_MuskularDisabled
extern

Definition at line 1920 of file global_hud_scripts.c.

◆ HES_Misstar

HudScript HES_Misstar
extern

Definition at line 1922 of file global_hud_scripts.c.

◆ HES_MisstarDisabled

HudScript HES_MisstarDisabled
extern

Definition at line 1924 of file global_hud_scripts.c.

◆ HES_Klevar

HudScript HES_Klevar
extern

Definition at line 1926 of file global_hud_scripts.c.

◆ HES_KlevarDisabled

HudScript HES_KlevarDisabled
extern

Definition at line 1928 of file global_hud_scripts.c.

◆ HES_Kalmar

HudScript HES_Kalmar
extern

Definition at line 1930 of file global_hud_scripts.c.

◆ HES_KalmarDisabled

HudScript HES_KalmarDisabled
extern

Definition at line 1932 of file global_hud_scripts.c.

◆ HES_StarBeam

HudScript HES_StarBeam
extern

Definition at line 1934 of file global_hud_scripts.c.

◆ HES_StarBeamDisabled

HudScript HES_StarBeamDisabled
extern

Definition at line 1936 of file global_hud_scripts.c.

◆ HES_PeachBeam

HudScript HES_PeachBeam
extern

Definition at line 1938 of file global_hud_scripts.c.

◆ HES_PeachBeamDisabled

HudScript HES_PeachBeamDisabled
extern

Definition at line 1940 of file global_hud_scripts.c.

◆ HES_MoveDiamond

HudScript HES_MoveDiamond
extern

Definition at line 2591 of file global_hud_scripts.c.

◆ HES_MoveDiamond_disabled

HudScript HES_MoveDiamond_disabled
extern

Definition at line 2599 of file global_hud_scripts.c.

◆ HES_MoveBlueOrb

HudScript HES_MoveBlueOrb
extern

Definition at line 2593 of file global_hud_scripts.c.

◆ HES_MoveBlueOrbDisabled

HudScript HES_MoveBlueOrbDisabled
extern

Definition at line 2601 of file global_hud_scripts.c.

◆ HES_MoveGreenOrb

HudScript HES_MoveGreenOrb
extern

Definition at line 2595 of file global_hud_scripts.c.

◆ HES_MoveGreenOrbDisabled

HudScript HES_MoveGreenOrbDisabled
extern

Definition at line 2603 of file global_hud_scripts.c.

◆ HES_MoveRedOrb

HudScript HES_MoveRedOrb
extern

Definition at line 2597 of file global_hud_scripts.c.

◆ HES_MoveRedOrbDisabled

HudScript HES_MoveRedOrbDisabled
extern

Definition at line 2605 of file global_hud_scripts.c.

◆ HES_GreenArrowDown

HudScript HES_GreenArrowDown
extern

Definition at line 1866 of file global_hud_scripts.c.

1866 {
1868 hs_SetCustomSize(16, 8)
1869 hs_Loop
1871 hs_SetCI(9, ui_green_arrow_down)
1873 hs_SetCI(6, ui_green_arrow_down)
1875 hs_End
1876};
#define hs_SetCustomSize(arg0, arg1)
#define hs_SetVisible
#define hs_End
@ HUD_ELEMENT_FLAG_200000
Definition hud_element.h:92
#define hs_Restart
#define hs_Loop
#define hs_SetCI(time, name)
#define hs_ClearFlags(arg0)
#define hs_SetFlags(arg0)

Referenced by btl_submenu_moves_update(), and btl_update_strats_menu().

◆ HES_GreenArrowUp

HudScript HES_GreenArrowUp
extern

Definition at line 1878 of file global_hud_scripts.c.

1878 {
1880 hs_SetCustomSize(16, 8)
1881 hs_Loop
1883 hs_SetCI(9, ui_green_arrow_up)
1885 hs_SetCI(6, ui_green_arrow_up)
1887 hs_End
1888};

Referenced by btl_submenu_moves_update(), and btl_update_strats_menu().

◆ HES_HandPointer

HudScript HES_HandPointer
extern

Definition at line 727 of file global_hud_scripts.c.

Referenced by btl_submenu_moves_update(), and btl_update_strats_menu().

◆ HES_HandPointDownLoop

HudScript HES_HandPointDownLoop
extern

Definition at line 173 of file 5B320.c.

173 {
176 hs_Loop
177 hs_SetTexelOffset(0, -1)
178 hs_SetIcon(1, anim_hand_0)
179 hs_SetTexelOffset(0, -1)
180 hs_SetIcon(1, anim_hand_0)
181 hs_SetTexelOffset(0, -1)
182 hs_SetIcon(1, anim_hand_0)
183 hs_SetTexelOffset(0, -1)
184 hs_SetIcon(1, anim_hand_0)
185 hs_SetTexelOffset(2, -1)
186 hs_SetIcon(1, anim_hand_1)
187 hs_SetTexelOffset(2, -1)
188 hs_SetIcon(1, anim_hand_2)
189 hs_SetTexelOffset(2, -1)
190 hs_SetIcon(4, anim_hand_3)
192 hs_SetIcon(1, anim_hand_1)
194 hs_SetIcon(1, anim_hand_0)
195 hs_SetTexelOffset(0, -1)
196 hs_SetIcon(14, anim_hand_4)
198 hs_End
199};
#define hs_SetTileSize(size)
@ HUD_ELEMENT_SIZE_24x24
Definition hud_element.h:45
#define hs_SetTexelOffset(x, y)
#define hs_SetIcon(time, icon)

Referenced by btl_state_draw_select_target(), and btl_state_update_select_target().

◆ HES_HandPointLeftLoop

HudScript HES_HandPointLeftLoop
extern

Definition at line 234 of file 5B320.c.

234 {
237 hs_Loop
239 hs_SetIcon(1, anim_hand_5)
241 hs_SetIcon(1, anim_hand_5)
243 hs_SetIcon(1, anim_hand_5)
245 hs_SetIcon(1, anim_hand_5)
246 hs_SetTexelOffset(0, -1)
247 hs_SetIcon(1, anim_hand_6)
248 hs_SetTexelOffset(0, -1)
249 hs_SetIcon(1, anim_hand_7)
250 hs_SetTexelOffset(1, -3)
251 hs_SetIcon(4, anim_hand_8)
253 hs_SetIcon(1, anim_hand_6)
255 hs_SetIcon(1, anim_hand_5)
257 hs_SetIcon(14, anim_hand_9)
259 hs_End
260};

Referenced by btl_state_draw_select_target(), and btl_state_update_select_target().

◆ HES_FPCost

HudScript HES_FPCost
extern

Definition at line 1821 of file global_hud_scripts.c.

Referenced by btl_submenu_moves_update().

◆ HES_FPCostReduced

HudScript HES_FPCostReduced
extern

Definition at line 1823 of file global_hud_scripts.c.

Referenced by btl_submenu_moves_update().

◆ HES_FPCostReducedTwice

HudScript HES_FPCostReducedTwice
extern

Definition at line 1825 of file global_hud_scripts.c.

Referenced by btl_submenu_moves_update().

◆ HES_POWCost

HudScript HES_POWCost
extern

Definition at line 1829 of file global_hud_scripts.c.

Referenced by btl_submenu_moves_update().

◆ HES_POWCostReduced

HudScript HES_POWCostReduced
extern

Definition at line 1831 of file global_hud_scripts.c.

Referenced by btl_submenu_moves_update().

◆ HES_POWCostReducedTwice

HudScript HES_POWCostReducedTwice
extern

Definition at line 1833 of file global_hud_scripts.c.

Referenced by btl_submenu_moves_update().

◆ HES_StatusFlower

HudScript HES_StatusFlower
extern

Definition at line 2069 of file global_hud_scripts.c.

2069 {
2071 hs_Loop
2072 hs_SetRGBA(60, ui_stat_flower_png)
2074 hs_End
2075};
#define hs_SetRGBA(time, image)
@ HUD_ELEMENT_SIZE_16x16
Definition hud_element.h:44

Referenced by btl_submenu_moves_update().

◆ HES_NotEnoughFP

HudScript HES_NotEnoughFP
extern

Definition at line 1827 of file global_hud_scripts.c.

Referenced by btl_menu_moves_draw_content().

◆ HES_NotEnoughPOW

HudScript HES_NotEnoughPOW
extern

Definition at line 1835 of file global_hud_scripts.c.

Referenced by btl_menu_moves_draw_content().

◆ HES_ProjectorBeam

HudScript HES_ProjectorBeam
extern

Definition at line 532 of file battle_ui_gfx.c.

532 {
534 hs_SetCustomSize(64, 64)
535 hs_Loop
536 hs_SetRGBA(60, ui_battle_projector_beam_png)
538 hs_End
539};
#define hs_UseIA8

Referenced by btl_main_menu_update().

◆ HES_ProjectorReel

HudScript HES_ProjectorReel
extern

Definition at line 514 of file battle_ui_gfx.c.

514 {
516 hs_SetCustomSize(64, 64)
517 hs_Loop
518 hs_SetRGBA(60, ui_battle_projector_reel_png)
520 hs_End
521};

Referenced by btl_main_menu_update().

◆ HES_ProjectorSpot

HudScript HES_ProjectorSpot
extern

Definition at line 523 of file battle_ui_gfx.c.

523 {
525 hs_SetCustomSize(32, 32)
526 hs_Loop
527 hs_SetRGBA(60, ui_battle_projector_spot_png)
529 hs_End
530};

Referenced by btl_main_menu_update().

◆ HES_SwapArrowLeft

HudScript HES_SwapArrowLeft
extern

Definition at line 543 of file battle_ui_gfx.c.

543 {
545 hs_SetCustomSize(8, 16)
546 hs_Loop
547 hs_SetCI(12, ui_battle_swap_arrow_left)
548 hs_SetCI(8, ui_battle_swap_arrow_left)
550 hs_End
551};

Referenced by btl_main_menu_update().

◆ HES_SwapArrowRight

HudScript HES_SwapArrowRight
extern

Definition at line 553 of file battle_ui_gfx.c.

553 {
555 hs_SetCustomSize(8, 16)
556 hs_Loop
557 hs_SetCI(10, ui_battle_swap_arrow_right)
558 hs_SetCI(10, ui_battle_swap_arrow_right)
560 hs_End
561};

Referenced by btl_main_menu_update().

◆ HES_SwapBackground

HudScript HES_SwapBackground
extern

Definition at line 563 of file battle_ui_gfx.c.

563 {
565 hs_SetCustomSize(48, 16)
566 hs_Loop
567 hs_SetRGBA(60, ui_battle_swap_background_png)
569 hs_End
570};

Referenced by btl_main_menu_update().

◆ HES_SwapZ

HudScript HES_SwapZ
extern

Definition at line 541 of file battle_ui_gfx.c.

Referenced by btl_main_menu_update().

◆ gItemHudScripts

◆ D_802AB340

s16 D_802AB340[] = { 28, 40 }

Definition at line 124 of file btl_states_menus.c.

124{ 28, 40 };

Referenced by btl_submenu_moves_update().

◆ D_802AB344

s16 D_802AB344[] = { 0, -2 }

Definition at line 126 of file btl_states_menus.c.

126{ 0, -2 };

Referenced by btl_menu_moves_show_error().

◆ battle_menu_JumpHudScripts

IconHudScriptPair battle_menu_JumpHudScripts[]
Initial value:
= {
}
HudScript HES_MenuBoots2Disabled
HudScript HES_MenuBoots1Disabled
HudScript HES_MenuBoots3Disabled
HudScript HES_MenuBoots2
HudScript HES_MenuBoots3
HudScript HES_MenuBoots1

Definition at line 128 of file btl_states_menus.c.

Referenced by btl_state_update_player_menu().

◆ battle_menu_HammerHudScripts

IconHudScriptPair battle_menu_HammerHudScripts[]

◆ battle_menu_ItemHudScripts

IconHudScriptPair battle_menu_ItemHudScripts = { &HES_MenuItem, &HES_MenuItemDisabled }

Definition at line 142 of file btl_states_menus.c.

HudScript HES_MenuItemDisabled
HudScript HES_MenuItem

Referenced by btl_state_update_player_menu().

◆ battle_menu_StarPowerHudScripts

IconHudScriptPair battle_menu_StarPowerHudScripts = { &HES_MenuStarPower, &HES_MenuStarPowerDisabled }

◆ battle_menu_StarPowerMovesHudScripts

HudScript* battle_menu_StarPowerMovesHudScripts[]
Initial value:
= {
}
HudScript HES_Muskular
HudScript HES_MuskularDisabled
HudScript HES_Mamar
HudScript HES_MisstarDisabled
HudScript HES_Misstar
HudScript HES_MamarDisabled
HudScript HES_EldstarDisabled
HudScript HES_Kalmar
HudScript HES_Eldstar
HudScript HES_KalmarDisabled
HudScript HES_StarBeam
HudScript HES_PeachBeamDisabled
HudScript HES_PeachBeam
HudScript HES_Klevar
HudScript HES_StarBeamDisabled
HudScript HES_Skolar
HudScript HES_SkolarDisabled
HudScript HES_KlevarDisabled

Definition at line 147 of file btl_states_menus.c.

Referenced by btl_state_update_partner_menu(), and btl_state_update_player_menu().

◆ battle_menu_PartnerHudScripts

HudScript* battle_menu_PartnerHudScripts[]

◆ battle_menu_DisabledPartnerHudScripts

HudScript* battle_menu_DisabledPartnerHudScripts[]
Initial value:

Definition at line 169 of file btl_states_menus.c.

Referenced by btl_state_update_partner_menu(), and btl_state_update_player_menu().

◆ battle_menu_StrategiesHudScript

IconHudScriptPair battle_menu_StrategiesHudScript = { &HES_MenuStrategies, &HES_MenuStrategiesDisabled }

Definition at line 176 of file btl_states_menus.c.

HudScript HES_MenuStrategiesDisabled
HudScript HES_MenuStrategies

Referenced by btl_state_update_partner_menu(), and btl_state_update_player_menu().

◆ battle_menu_DoNothingHudScripts

IconHudScriptPair battle_menu_DoNothingHudScripts = { &HES_MenuDoNothing, &HES_MenuDoNothingDisabled }

Definition at line 178 of file btl_states_menus.c.

HudScript HES_MenuDoNothing
HudScript HES_MenuDoNothingDisabled

Referenced by btl_state_update_partner_menu(), and btl_state_update_player_menu().

◆ battle_menu_FleeHudScripts

IconHudScriptPair battle_menu_FleeHudScripts = { &HES_MenuFlee, &HES_MenuFleeDisabled }

Definition at line 180 of file btl_states_menus.c.

HudScript HES_MenuFlee
HudScript HES_MenuFleeDisabled

Referenced by btl_state_update_player_menu().

◆ BattleMenu_LeftJustMessages

s32 BattleMenu_LeftJustMessages[]
Initial value:
= {
MSG_Menus_Jump,
MSG_Menus_Hammer,
MSG_Menus_Items,
MSG_Menus_RunAway,
MSG_Menus_Defense,
MSG_Menus_ChangeMember,
MSG_Menus_Abilities,
MSG_Menus_Strategies,
MSG_Menus_StarSpirits,
MSG_Menus_DoNothing,
MSG_Menus_ActLater,
MSG_Menus_Focus,
}

Definition at line 182 of file btl_states_menus.c.

182 {
183 MSG_Menus_Jump,
184 MSG_Menus_Hammer,
185 MSG_Menus_Items,
186 MSG_Menus_RunAway,
187 MSG_Menus_Defense,
188 MSG_Menus_ChangeMember,
189 MSG_Menus_Abilities,
190 MSG_Menus_Strategies,
191 MSG_Menus_StarSpirits,
192 MSG_Menus_DoNothing,
193 MSG_Menus_ActLater,
194 MSG_Menus_Focus,
195};

Referenced by btl_state_update_partner_menu(), and btl_state_update_player_menu().

◆ BattleMenu_CenteredMessages

s32 BattleMenu_CenteredMessages[]
Initial value:
= {
MSG_Menus_Jump_Centered,
MSG_Menus_Hammer_Centered,
MSG_Menus_Items_Centered,
MSG_Menus_RunAway_Centered,
MSG_Menus_Defense_Centered,
MSG_Menus_ChangeMember_Centered,
MSG_Menus_Abilities_Centered,
MSG_Menus_Strategies_Centered,
MSG_Menus_StarSpirits_Centered,
MSG_Menus_DoNothing_Centered,
MSG_Menus_ActLater_Centered,
MSG_Menus_Focus_Centered,
}

Definition at line 197 of file btl_states_menus.c.

197 {
198 MSG_Menus_Jump_Centered,
199 MSG_Menus_Hammer_Centered,
200 MSG_Menus_Items_Centered,
201 MSG_Menus_RunAway_Centered,
202 MSG_Menus_Defense_Centered,
203 MSG_Menus_ChangeMember_Centered,
204 MSG_Menus_Abilities_Centered,
205 MSG_Menus_Strategies_Centered,
206 MSG_Menus_StarSpirits_Centered,
207 MSG_Menus_DoNothing_Centered,
208 MSG_Menus_ActLater_Centered,
209 MSG_Menus_Focus_Centered,
210};

Referenced by btl_state_update_partner_menu(), and btl_state_update_player_menu().

◆ BattleMenu_CategoryForSubmenu

◆ BattleMenu_PartnerThinkAnims

AnimID BattleMenu_PartnerThinkAnims[]
Initial value:
= {
[PARTNER_GOOMBARIO] ANIM_BattleGoombario_Think,
[PARTNER_KOOPER] ANIM_BattleKooper_Think,
[PARTNER_BOMBETTE] ANIM_BattleBombette_Think,
[PARTNER_PARAKARRY] ANIM_BattleParakarry_Think,
[PARTNER_GOOMPA] ANIM_Goompa_Idle,
[PARTNER_WATT] ANIM_BattleWatt_Think,
[PARTNER_SUSHIE] ANIM_BattleSushie_Think,
[PARTNER_LAKILESTER] ANIM_BattleLakilester_Run,
[PARTNER_BOW] ANIM_BattleBow_Still,
0x00000000,
0x00000000
}
@ PARTNER_BOMBETTE
Definition enums.h:2888
@ PARTNER_LAKILESTER
Definition enums.h:2893
@ PARTNER_WATT
Definition enums.h:2891
@ PARTNER_BOW
Definition enums.h:2894
@ PARTNER_SUSHIE
Definition enums.h:2892
@ PARTNER_PARAKARRY
Definition enums.h:2889
@ PARTNER_GOOMBARIA
Definition enums.h:2895
@ PARTNER_KOOPER
Definition enums.h:2887
@ PARTNER_GOOMBARIO
Definition enums.h:2886

Definition at line 227 of file btl_states_menus.c.

227 {
228 [PARTNER_GOOMBARIO] ANIM_BattleGoombario_Think,
229 [PARTNER_KOOPER] ANIM_BattleKooper_Think,
230 [PARTNER_BOMBETTE] ANIM_BattleBombette_Think,
231 [PARTNER_PARAKARRY] ANIM_BattleParakarry_Think,
232 [PARTNER_GOOMPA] ANIM_Goompa_Idle,
233 [PARTNER_WATT] ANIM_BattleWatt_Think,
234 [PARTNER_SUSHIE] ANIM_BattleSushie_Think,
235 [PARTNER_LAKILESTER] ANIM_BattleLakilester_Run,
236 [PARTNER_BOW] ANIM_BattleBow_Still,
238 [PARTNER_TWINK] 0,
239 0x00000000,
240 0x00000000
241};

Referenced by btl_state_update_partner_menu().

◆ BattleMenu_PartnerIdleAnims

AnimID BattleMenu_PartnerIdleAnims[]
Initial value:
= {
[PARTNER_GOOMBARIO] ANIM_BattleGoombario_Walk,
[PARTNER_KOOPER] ANIM_BattleKooper_Walk,
[PARTNER_BOMBETTE] ANIM_BattleBombette_Walk,
[PARTNER_PARAKARRY] ANIM_BattleParakarry_Walk,
[PARTNER_GOOMPA] ANIM_Goompa_Walk,
[PARTNER_WATT] ANIM_BattleWatt_Walk,
[PARTNER_SUSHIE] ANIM_BattleSushie_Walk,
[PARTNER_LAKILESTER] ANIM_BattleLakilester_Walk,
[PARTNER_BOW] ANIM_BattleBow_Walk,
0x00000000,
0x00000000
}

Definition at line 243 of file btl_states_menus.c.

243 {
244 [PARTNER_GOOMBARIO] ANIM_BattleGoombario_Walk,
245 [PARTNER_KOOPER] ANIM_BattleKooper_Walk,
246 [PARTNER_BOMBETTE] ANIM_BattleBombette_Walk,
247 [PARTNER_PARAKARRY] ANIM_BattleParakarry_Walk,
248 [PARTNER_GOOMPA] ANIM_Goompa_Walk,
249 [PARTNER_WATT] ANIM_BattleWatt_Walk,
250 [PARTNER_SUSHIE] ANIM_BattleSushie_Walk,
251 [PARTNER_LAKILESTER] ANIM_BattleLakilester_Walk,
252 [PARTNER_BOW] ANIM_BattleBow_Walk,
254 [PARTNER_TWINK] 0,
255 0x00000000,
256 0x00000000
257};

Referenced by btl_state_update_partner_menu().

◆ battle_menu_PartnerMoveHudScripts

HudScript* battle_menu_PartnerMoveHudScripts[10][10]
Initial value:
= {
}
HudScript HES_MoveGreenOrbDisabled
HudScript HES_MoveBlueOrb
HudScript HES_MoveRedOrbDisabled
HudScript HES_MoveDiamond
HudScript HES_MoveBlueOrbDisabled
HudScript HES_MoveDiamond_disabled
HudScript HES_MoveGreenOrb
HudScript HES_MoveRedOrb

Definition at line 259 of file btl_states_menus.c.

259 {
269};

Referenced by btl_state_update_partner_menu().

◆ battle_menu_PeachStarPowerHudScripts

IconHudScriptPair battle_menu_PeachStarPowerHudScripts = { &HES_MenuStarPower, &HES_MenuStarPowerDisabled }

◆ D_802AB728

s32 D_802AB728[]
Initial value:
= {
MSG_Menus_Focus_Centered,
}

Definition at line 273 of file btl_states_menus.c.

273 {
274 MSG_Menus_Focus_Centered,
275};

Referenced by btl_state_update_peach_menu().

◆ battle_menu_TwinkStarPowerHudScripts

IconHudScriptPair battle_menu_TwinkStarPowerHudScripts = { &HES_MenuStarPower, &HES_MenuStarPowerDisabled }

◆ D_802AB734

s32 D_802AB734[]
Initial value:
= {
MSG_Menus_Dash_Centered,
}

Definition at line 279 of file btl_states_menus.c.

279 {
280 MSG_Menus_Dash_Centered,
281};

Referenced by btl_state_update_twink_menu().

◆ PartnerNameMessages

s32 PartnerNameMessages[]
Initial value:
= {
MSG_NONE,
MSG_Menus_Party_Goombario,
MSG_Menus_Party_Kooper,
MSG_Menus_Party_Bombette,
MSG_Menus_Party_Parakarry,
MSG_Menus_Party_Goompa,
MSG_Menus_Party_Watt,
MSG_Menus_Party_Sushie,
MSG_Menus_Party_Lakilester,
MSG_Menus_Party_Bow,
MSG_Menus_Party_Goombaria,
MSG_Menus_Party_Twink,
MSG_Menus_Party_Peach,
MSG_NONE
}

Definition at line 283 of file btl_states_menus.c.

283 {
284 MSG_NONE,
285 MSG_Menus_Party_Goombario,
286 MSG_Menus_Party_Kooper,
287 MSG_Menus_Party_Bombette,
288 MSG_Menus_Party_Parakarry,
289 MSG_Menus_Party_Goompa,
290 MSG_Menus_Party_Watt,
291 MSG_Menus_Party_Sushie,
292 MSG_Menus_Party_Lakilester,
293 MSG_Menus_Party_Bow,
294 MSG_Menus_Party_Goombaria,
295 MSG_Menus_Party_Twink,
296 MSG_Menus_Party_Peach,
297 MSG_NONE
298};

Referenced by btl_state_draw_select_target().

◆ D_802ACC60

◆ BattleMenu_TargetPointerAlpha

BSS s32 BattleMenu_TargetPointerAlpha

◆ BattleMenu_TargetNameOffsetX

BSS s32 BattleMenu_TargetNameOffsetX

◆ BattleMenu_SwapDelay

◆ BattleMenu_TargetHudElems

BSS s32 BattleMenu_TargetHudElems[MAX_ENEMY_ACTORS]

◆ D_802ACCD0

BSS PopupMenu D_802ACCD0

◆ BattleMenuState

◆ D_802AD001

BSS s8 D_802AD001

Definition at line 307 of file btl_states_menus.c.

Referenced by btl_main_menu_update(), and func_802A1030().

◆ BattleMenu_CurPos

◆ BattleMenu_PrevPos

BSS s8 BattleMenu_PrevPos

Definition at line 309 of file btl_states_menus.c.

Referenced by btl_main_menu_update().

◆ D_802AD004

BSS s8 D_802AD004

Definition at line 310 of file btl_states_menus.c.

Referenced by btl_main_menu_draw(), and btl_main_menu_update().

◆ D_802AD006

BSS s16 D_802AD006

◆ BattleMenuAlpha

◆ D_802AD00A

BSS s16 D_802AD00A

Definition at line 313 of file btl_states_menus.c.

Referenced by btl_main_menu_draw(), and btl_main_menu_update().

◆ D_802AD00C

BSS s16 D_802AD00C

Definition at line 315 of file btl_states_menus.c.

◆ D_802AD010

BSS s32 D_802AD010[6]

◆ D_802AD028

BSS s32 D_802AD028[6]

◆ D_802AD040

BSS s32 D_802AD040

◆ D_802AD044

BSS s32 D_802AD044

◆ D_802AD048

BSS s32 D_802AD048

◆ D_802AD04C

BSS s32 D_802AD04C

◆ D_802AD050

BSS s32 D_802AD050

◆ D_802AD054

BSS s32 D_802AD054

◆ D_802AD058

BSS s32 D_802AD058

◆ D_802AD05C

BSS s32 D_802AD05C

◆ BattleMenu_BasePosX

BSS s32 BattleMenu_BasePosX

Definition at line 327 of file btl_states_menus.c.

Referenced by btl_main_menu_draw(), and btl_main_menu_update().

◆ BattleMenu_BasePosY

BSS s32 BattleMenu_BasePosY

Definition at line 328 of file btl_states_menus.c.

Referenced by btl_main_menu_draw(), and btl_main_menu_update().

◆ BattleMenuDisableMsg

BSS s8 BattleMenuDisableMsg

Definition at line 329 of file btl_states_menus.c.

Referenced by btl_main_menu_init(), and btl_main_menu_update().

◆ BattleMenu_MinIdx

BSS s8 BattleMenu_MinIdx

Definition at line 330 of file btl_states_menus.c.

Referenced by btl_main_menu_update().

◆ BattleMenu_MaxIdx

BSS s8 BattleMenu_MaxIdx

Definition at line 331 of file btl_states_menus.c.

Referenced by btl_main_menu_update().

◆ BattleMenu_HomePos

◆ BattleMenu_WheelAngle

BSS f32 BattleMenu_WheelAngle

Definition at line 333 of file btl_states_menus.c.

Referenced by btl_main_menu_draw(), and btl_main_menu_update().

◆ D_802AD070

BSS f32 D_802AD070

Definition at line 334 of file btl_states_menus.c.

Referenced by btl_main_menu_draw(), and btl_main_menu_update().

◆ D_802AD074

BSS s32 D_802AD074

Definition at line 336 of file btl_states_menus.c.

◆ BattleMenu_HudScripts

◆ BattleMenu_TitleMessages

◆ D_802AD0A8

◆ BattleMenu_NumOptions

◆ D_802AD0B0

◆ D_802AD0B4

BSS s32 D_802AD0B4

Definition at line 344 of file btl_states_menus.c.

◆ battle_menu_submenuIDs

◆ BattleMenu_OptionEnabled

◆ battle_menu_isMessageDisabled

◆ D_802AD100

◆ BattleMenu_ShowSwapIcons

◆ battle_menu_moveState

◆ battle_menu_moveCursorPos

BSS s8 battle_menu_moveCursorPos

◆ D_802AD10A

BSS s8 D_802AD10A

Definition at line 353 of file btl_states_menus.c.

Referenced by btl_submenu_moves_update(), and func_802A2684().

◆ D_802AD10B

BSS s8 D_802AD10B

Definition at line 354 of file btl_states_menus.c.

Referenced by btl_submenu_moves_update().

◆ battle_menu_moveScrollLine

BSS s8 battle_menu_moveScrollLine

◆ D_802AD10D

BSS s8 D_802AD10D

◆ D_802AD10E

BSS s8 D_802AD10E

◆ D_802AD10F

BSS s8 D_802AD10F

◆ battle_menu_moveScrollOffset

BSS s16 battle_menu_moveScrollOffset

◆ D_802AD112

BSS s16 D_802AD112

◆ BattleMenu_Moves_TextColor

BSS s16 BattleMenu_Moves_TextColor

◆ BattleMenu_Moves_TextAlpha

◆ BattleMenu_Moves_CursorID

◆ BattleMenu_Moves_UpArrowID

◆ BattleMenu_Moves_DownArrowID

BSS HudElemID BattleMenu_Moves_DownArrowID

◆ D_802AD124

BSS s32 D_802AD124

Definition at line 367 of file btl_states_menus.c.

◆ BattleMenu_Moves_OptionIDs

BSS HudElemID BattleMenu_Moves_OptionIDs[24]

◆ BattleMenu_Moves_TitleID

◆ D_802AD18C

BSS s32 D_802AD18C

Definition at line 372 of file btl_states_menus.c.

◆ BattleMenu_Moves_OptionCostUnitIDs

BSS HudElemID BattleMenu_Moves_OptionCostUnitIDs[24]

◆ BattleMenu_Moves_PosX

BSS s16 BattleMenu_Moves_PosX

Definition at line 375 of file btl_states_menus.c.

Referenced by btl_submenu_moves_update().

◆ BattleMenu_Moves_PosY

BSS s16 BattleMenu_Moves_PosY

Definition at line 376 of file btl_states_menus.c.

Referenced by btl_submenu_moves_update().

◆ D_802AD1F4

BSS s32 D_802AD1F4

Definition at line 378 of file btl_states_menus.c.

◆ BattleMenu_Moves_OptionIndexMap

BSS s32 BattleMenu_Moves_OptionIndexMap[24]

◆ D_802AD258

BSS s32 D_802AD258

Definition at line 381 of file btl_states_menus.c.

Referenced by btl_menu_moves_show_error(), and btl_submenu_moves_update().

◆ D_802AD25C

BSS s32 D_802AD25C

Definition at line 383 of file btl_states_menus.c.

◆ battle_menu_moveOptionIconScripts

BSS HudScript* battle_menu_moveOptionIconScripts[24]

◆ battle_menu_moveOptionNames

BSS s32 battle_menu_moveOptionNames[24]

◆ battle_menu_moveOptionDisplayCosts

BSS s32 battle_menu_moveOptionDisplayCosts[24]

◆ battle_menu_moveOptionDisplayCostReductions

BSS s32 battle_menu_moveOptionDisplayCostReductions[24]

◆ battle_menu_moveOptionDisplayCostReductionColors

BSS s32 battle_menu_moveOptionDisplayCostReductionColors[24]

◆ battle_menu_moveOptionBPCosts

BSS s32 battle_menu_moveOptionBPCosts[24]

◆ BattleMenu_UsingSpiritsSubmenu

◆ BattleMenu_Moves_OptionCount

◆ D_802AD4A8

BSS s32 D_802AD4A8

◆ D_802AD4AC

BSS s32 D_802AD4AC

Definition at line 395 of file btl_states_menus.c.

◆ BattleMenu_Moves_OptionIndices

BSS s32 BattleMenu_Moves_OptionIndices[24]

◆ BattleMenu_Moves_OptionEnabled

BSS s32 BattleMenu_Moves_OptionEnabled[24]

◆ BattleMenu_Moves_OptionDescMessages

BSS s32 BattleMenu_Moves_OptionDescMessages[24]

◆ BattleMenu_Moves_OptionSortPriority

BSS s8 BattleMenu_Moves_OptionSortPriority[24]

◆ BattleMenu_Moves_OptionCantUseMessages

BSS s8 BattleMenu_Moves_OptionCantUseMessages[24]

◆ battle_menu_moveOptionActive

BSS s32 battle_menu_moveOptionActive

◆ BattleSubmenuStratsState

◆ StratsMenuPos

◆ OldStratsMenuPos

BSS s8 OldStratsMenuPos

Definition at line 405 of file btl_states_menus.c.

Referenced by btl_update_strats_menu(), and func_802A45D8().

◆ ShowingErrorMessage

◆ D_802AD608

BSS s8 D_802AD608

◆ D_802AD609

BSS s8 D_802AD609

◆ StratsMenuLines

BSS s8 StratsMenuLines

◆ D_802AD60B

BSS s8 D_802AD60B

◆ D_802AD60C

BSS s16 D_802AD60C

◆ D_802AD60E

BSS s16 D_802AD60E

◆ D_802AD610

BSS s16 D_802AD610

Definition at line 413 of file btl_states_menus.c.

Referenced by btl_menu_strats_show_error(), and btl_update_strats_menu().

◆ D_802AD612

BSS s16 D_802AD612

Definition at line 414 of file btl_states_menus.c.

Referenced by btl_update_strats_menu().

◆ D_802AD614

◆ D_802AD618

◆ HID_GreenArrowUp

◆ HID_GreenArrowDown

◆ D_802AD624

◆ D_802AD628

◆ D_802AD63C

BSS s16 D_802AD63C

Definition at line 428 of file btl_states_menus.c.

Referenced by btl_update_strats_menu().

◆ D_802AD63E

BSS s16 D_802AD63E

Definition at line 429 of file btl_states_menus.c.

Referenced by btl_update_strats_menu().

◆ D_802AD640

◆ D_802AD658

◆ D_802AD66C

◆ StratsMenuLastPos

BSS s32 StratsMenuLastPos

◆ D_802AD674

BSS s32 D_802AD674

Definition at line 436 of file btl_states_menus.c.

◆ D_802AD678

◆ D_802AD690

◆ D_802AD6A8

BSS s32 D_802AD6A8[6]

◆ D_802AD6C0

◆ D_802AD6D4

BSS s32 D_802AD6D4

Definition at line 442 of file btl_states_menus.c.

Referenced by btl_update_strats_menu(), and func_802A45D8().

◆ MenuIndexFromPartnerID

s32 MenuIndexFromPartnerID[]
extern

Definition at line 316 of file 5B320.c.

316 {
317 [PARTNER_NONE] 0,
319 [PARTNER_KOOPER] 2,
322 [PARTNER_GOOMPA] 0,
323 [PARTNER_WATT] 6,
324 [PARTNER_SUSHIE] 7,
326 [PARTNER_BOW] 5,
328 [PARTNER_TWINK] 0,
329};

Referenced by btl_state_update_partner_menu(), and btl_state_update_player_menu().