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

Go to the source code of this file.

Enumerations

enum  {
  BTL_SUBSTATE_MAIN_CHOOSING = 1 , BTL_SUBSTATE_ABILITIES_CHOOSING = 2 , BTL_SUBSTATE_ABILITIES_HANDOVER = 3 , BTL_SUBSTATE_ABILITIES_REOPEN_MENU = 4 ,
  BTL_SUBSTATE_ABILITIES_TARGET_CANCEL = 5 , BTL_SUBSTATE_ABILITIES_TARGET_CHOSEN = 6 , BTL_SUBSTATE_ABILITIES_SHOW_ERROR = 7 , BTL_SUBSTATE_MAIN_SHOW_CANT_SWAP = 8 ,
  BTL_SUBSTATE_MAIN_AWAIT_CANT_SWAP = 9 , BTL_SUBSTATE_NOSUBMENU_SHOW = 10 , BTL_SUBSTATE_NOSUBMENU_HANDOVER = 11 , BTL_SUBSTATE_NOSUBMENU_RETURN_MAIN = 12 ,
  BTL_SUBSTATE_NOSUBMENU_TARGET_CANCEL = 13 , BTL_SUBSTATE_NOSUBMENU_TARGET_CHOSEN = 14 , BTL_SUBSTATE_DIPPING_BUILD_MENU = 20 , BTL_SUBSTATE_DIPPING_CHOOSING = 21 ,
  BTL_SUBSTATE_DIPPING_HANDOVER = 22 , BTL_SUBSTATE_DIPPING_REOPEN_MENU = 23 , BTL_SUBSTATE_DIPPING_TARGET_CANCEL = 24 , BTL_SUBSTATE_DIPPING_TARGET_CHOSEN = 25 ,
  BTL_SUBSTATE_CHANGE_PARTNER_BUILD_MENU = 30 , BTL_SUBSTATE_CHANGE_PARTNER_CHOOSING = 31 , BTL_SUBSTATE_CHANGE_PARTNER_HANDOVER = 32 , BTL_SUBSTATE_CHANGE_PARTNER_REOPEN_MENU = 33 ,
  BTL_SUBSTATE_CHANGE_PARTNER_TARGET_CANCEL = 34 , BTL_SUBSTATE_CHANGE_PARTNER_TARGET_CHOSEN = 35 , BTL_SUBSTATE_CHANGE_PARTNER_ERROR = 36 , BTL_SUBSTATE_ITEMS_BUILD_MENU = 40 ,
  BTL_SUBSTATE_ITEMS_CHOOSING = 41 , BTL_SUBSTATE_ITEMS_HANDOVER = 42 , BTL_SUBSTATE_ITEMS_REOPEN_MENU = 43 , BTL_SUBSTATE_ITEMS_TARGET_CANCEL = 44 ,
  BTL_SUBSTATE_ITEMS_TARGET_CHOSEN = 45 , BTL_SUBSTATE_STAR_SPIRITS_BUILD_MENU = 60 , BTL_SUBSTATE_STAR_SPIRITS_CHOOSING = 61 , BTL_SUBSTATE_STAR_SPIRITS_HANDOVER = 62 ,
  BTL_SUBSTATE_STAR_SPIRITS_REOPEN_MENU = 63 , BTL_SUBSTATE_STAR_SPIRITS_TARGET_CANCEL = 64 , BTL_SUBSTATE_STAR_SPIRITS_TARGET_CHOSEN = 65 , BTL_SUBSTATE_STAR_SPIRITS_SHOW_ERROR = 66 ,
  BTL_SUBSTATE_NEXT_DIP_BUILD_MENU = BTL_SUBSTATE_PLAYER_CONTINUE_DIP , BTL_SUBSTATE_NEXT_DIP_CHOOSING = 71 , BTL_SUBSTATE_NEXT_DIP_HANDOVER = 72 , BTL_SUBSTATE_NEXT_DIP_REOPEN_MENU = 73 ,
  BTL_SUBSTATE_NEXT_DIP_TARGET_CANCEL = 74 , BTL_SUBSTATE_NEXT_DIP_TARGET_CHOSEN = 75 , BTL_SUBSTATE_BERSERKER_CHOOSE = 100 , BTL_SUBSTATE_STRATEGIES_BUILD_MENU = 200 ,
  BTL_SUBSTATE_STRATEGIES_CHOOSING = 201 , BTL_SUBSTATE_STRATEGIES_HANDOVER = 202 , BTL_SUBSTATE_STRATEGIES_REOPEN_MENU = 203 , BTL_SUBSTATE_STRATEGIES_TARGET_CANCEL = 204 ,
  BTL_SUBSTATE_STRATEGIES_TARGET_CHOSEN = 205 , BTL_SUBSTATE_STRATEGIES_SHOW_ERROR = 207 , BTL_SUBSTATE_PERFORM_SWAP = 300 , BTL_SUBSTATE_CREATE_MAIN_MENU = 302
}
 

Functions

s32 get_player_anim_for_status (s32 animID)
 
void btl_init_menu_boots (void)
 
void btl_init_menu_hammer (void)
 
void btl_state_update_player_menu (void)
 
void btl_state_draw_player_menu (void)
 

Variables

s32 BattleMenu_CategoryForSubmenu []
 
IconHudScriptPair BootsHudScripts []
 
IconHudScriptPair HammerHudScripts []
 

Enumeration Type Documentation

◆ anonymous enum

Enumerator
BTL_SUBSTATE_MAIN_CHOOSING 
BTL_SUBSTATE_ABILITIES_CHOOSING 
BTL_SUBSTATE_ABILITIES_HANDOVER 
BTL_SUBSTATE_ABILITIES_REOPEN_MENU 
BTL_SUBSTATE_ABILITIES_TARGET_CANCEL 
BTL_SUBSTATE_ABILITIES_TARGET_CHOSEN 
BTL_SUBSTATE_ABILITIES_SHOW_ERROR 
BTL_SUBSTATE_MAIN_SHOW_CANT_SWAP 
BTL_SUBSTATE_MAIN_AWAIT_CANT_SWAP 
BTL_SUBSTATE_NOSUBMENU_SHOW 
BTL_SUBSTATE_NOSUBMENU_HANDOVER 
BTL_SUBSTATE_NOSUBMENU_RETURN_MAIN 
BTL_SUBSTATE_NOSUBMENU_TARGET_CANCEL 
BTL_SUBSTATE_NOSUBMENU_TARGET_CHOSEN 
BTL_SUBSTATE_DIPPING_BUILD_MENU 
BTL_SUBSTATE_DIPPING_CHOOSING 
BTL_SUBSTATE_DIPPING_HANDOVER 
BTL_SUBSTATE_DIPPING_REOPEN_MENU 
BTL_SUBSTATE_DIPPING_TARGET_CANCEL 
BTL_SUBSTATE_DIPPING_TARGET_CHOSEN 
BTL_SUBSTATE_CHANGE_PARTNER_BUILD_MENU 
BTL_SUBSTATE_CHANGE_PARTNER_CHOOSING 
BTL_SUBSTATE_CHANGE_PARTNER_HANDOVER 
BTL_SUBSTATE_CHANGE_PARTNER_REOPEN_MENU 
BTL_SUBSTATE_CHANGE_PARTNER_TARGET_CANCEL 
BTL_SUBSTATE_CHANGE_PARTNER_TARGET_CHOSEN 
BTL_SUBSTATE_CHANGE_PARTNER_ERROR 
BTL_SUBSTATE_ITEMS_BUILD_MENU 
BTL_SUBSTATE_ITEMS_CHOOSING 
BTL_SUBSTATE_ITEMS_HANDOVER 
BTL_SUBSTATE_ITEMS_REOPEN_MENU 
BTL_SUBSTATE_ITEMS_TARGET_CANCEL 
BTL_SUBSTATE_ITEMS_TARGET_CHOSEN 
BTL_SUBSTATE_STAR_SPIRITS_BUILD_MENU 
BTL_SUBSTATE_STAR_SPIRITS_CHOOSING 
BTL_SUBSTATE_STAR_SPIRITS_HANDOVER 
BTL_SUBSTATE_STAR_SPIRITS_REOPEN_MENU 
BTL_SUBSTATE_STAR_SPIRITS_TARGET_CANCEL 
BTL_SUBSTATE_STAR_SPIRITS_TARGET_CHOSEN 
BTL_SUBSTATE_STAR_SPIRITS_SHOW_ERROR 
BTL_SUBSTATE_NEXT_DIP_BUILD_MENU 
BTL_SUBSTATE_NEXT_DIP_CHOOSING 
BTL_SUBSTATE_NEXT_DIP_HANDOVER 
BTL_SUBSTATE_NEXT_DIP_REOPEN_MENU 
BTL_SUBSTATE_NEXT_DIP_TARGET_CANCEL 
BTL_SUBSTATE_NEXT_DIP_TARGET_CHOSEN 
BTL_SUBSTATE_BERSERKER_CHOOSE 
BTL_SUBSTATE_STRATEGIES_BUILD_MENU 
BTL_SUBSTATE_STRATEGIES_CHOOSING 
BTL_SUBSTATE_STRATEGIES_HANDOVER 
BTL_SUBSTATE_STRATEGIES_REOPEN_MENU 
BTL_SUBSTATE_STRATEGIES_TARGET_CANCEL 
BTL_SUBSTATE_STRATEGIES_TARGET_CHOSEN 
BTL_SUBSTATE_STRATEGIES_SHOW_ERROR 
BTL_SUBSTATE_PERFORM_SWAP 
BTL_SUBSTATE_CREATE_MAIN_MENU 

Definition at line 10 of file menu_player.c.

10 {
11 // BTL_SUBSTATE_INIT = 0,
12
13 // Main menu
15 // selecting options from jump, hammer, or outermost items submenus
24 // states for target selection when there is no submenu after main
25 // this occurs when there are no additional options for Jump/Hammer apart from the base move
31 // Initial selection and use for Double/Triple dip
33 BTL_SUBSTATE_DIPPING_CHOOSING = 21, // choosing double dip item
34 BTL_SUBSTATE_DIPPING_HANDOVER = 22, // selecting target
38 // Change Partner
46 // Items
53 // Star Spirits
61 // additional item use from Double/Triple dip
68 // Berserker
70 // Strategies
78 // initialize
81};
@ BTL_SUBSTATE_DIPPING_HANDOVER
Definition menu_player.c:34
@ BTL_SUBSTATE_STAR_SPIRITS_BUILD_MENU
Definition menu_player.c:54
@ BTL_SUBSTATE_NEXT_DIP_HANDOVER
Definition menu_player.c:64
@ BTL_SUBSTATE_NEXT_DIP_REOPEN_MENU
Definition menu_player.c:65
@ BTL_SUBSTATE_CREATE_MAIN_MENU
Definition menu_player.c:80
@ BTL_SUBSTATE_STAR_SPIRITS_SHOW_ERROR
Definition menu_player.c:60
@ BTL_SUBSTATE_MAIN_AWAIT_CANT_SWAP
Definition menu_player.c:23
@ BTL_SUBSTATE_STRATEGIES_SHOW_ERROR
Definition menu_player.c:77
@ BTL_SUBSTATE_STAR_SPIRITS_TARGET_CHOSEN
Definition menu_player.c:59
@ BTL_SUBSTATE_STAR_SPIRITS_CHOOSING
Definition menu_player.c:55
@ BTL_SUBSTATE_NEXT_DIP_BUILD_MENU
Definition menu_player.c:62
@ BTL_SUBSTATE_ABILITIES_SHOW_ERROR
Definition menu_player.c:21
@ BTL_SUBSTATE_STAR_SPIRITS_HANDOVER
Definition menu_player.c:56
@ BTL_SUBSTATE_CHANGE_PARTNER_HANDOVER
Definition menu_player.c:41
@ BTL_SUBSTATE_NOSUBMENU_TARGET_CANCEL
Definition menu_player.c:29
@ BTL_SUBSTATE_CHANGE_PARTNER_CHOOSING
Definition menu_player.c:40
@ BTL_SUBSTATE_NEXT_DIP_TARGET_CHOSEN
Definition menu_player.c:67
@ BTL_SUBSTATE_CHANGE_PARTNER_REOPEN_MENU
Definition menu_player.c:42
@ BTL_SUBSTATE_ABILITIES_HANDOVER
Definition menu_player.c:17
@ BTL_SUBSTATE_DIPPING_TARGET_CANCEL
Definition menu_player.c:36
@ BTL_SUBSTATE_DIPPING_CHOOSING
Definition menu_player.c:33
@ BTL_SUBSTATE_MAIN_CHOOSING
Definition menu_player.c:14
@ BTL_SUBSTATE_ITEMS_BUILD_MENU
Definition menu_player.c:47
@ BTL_SUBSTATE_STRATEGIES_HANDOVER
Definition menu_player.c:73
@ BTL_SUBSTATE_NEXT_DIP_CHOOSING
Definition menu_player.c:63
@ BTL_SUBSTATE_DIPPING_REOPEN_MENU
Definition menu_player.c:35
@ BTL_SUBSTATE_NOSUBMENU_SHOW
Definition menu_player.c:26
@ BTL_SUBSTATE_ABILITIES_CHOOSING
Definition menu_player.c:16
@ BTL_SUBSTATE_ITEMS_REOPEN_MENU
Definition menu_player.c:50
@ BTL_SUBSTATE_STAR_SPIRITS_TARGET_CANCEL
Definition menu_player.c:58
@ BTL_SUBSTATE_CHANGE_PARTNER_BUILD_MENU
Definition menu_player.c:39
@ BTL_SUBSTATE_STRATEGIES_TARGET_CHOSEN
Definition menu_player.c:76
@ BTL_SUBSTATE_NEXT_DIP_TARGET_CANCEL
Definition menu_player.c:66
@ BTL_SUBSTATE_STRATEGIES_REOPEN_MENU
Definition menu_player.c:74
@ BTL_SUBSTATE_ITEMS_TARGET_CANCEL
Definition menu_player.c:51
@ BTL_SUBSTATE_PERFORM_SWAP
Definition menu_player.c:79
@ BTL_SUBSTATE_CHANGE_PARTNER_ERROR
Definition menu_player.c:45
@ BTL_SUBSTATE_DIPPING_BUILD_MENU
Definition menu_player.c:32
@ BTL_SUBSTATE_NOSUBMENU_TARGET_CHOSEN
Definition menu_player.c:30
@ BTL_SUBSTATE_ITEMS_HANDOVER
Definition menu_player.c:49
@ BTL_SUBSTATE_ABILITIES_REOPEN_MENU
Definition menu_player.c:18
@ BTL_SUBSTATE_CHANGE_PARTNER_TARGET_CANCEL
Definition menu_player.c:43
@ BTL_SUBSTATE_NOSUBMENU_HANDOVER
Definition menu_player.c:27
@ BTL_SUBSTATE_NOSUBMENU_RETURN_MAIN
Definition menu_player.c:28
@ BTL_SUBSTATE_STAR_SPIRITS_REOPEN_MENU
Definition menu_player.c:57
@ BTL_SUBSTATE_MAIN_SHOW_CANT_SWAP
Definition menu_player.c:22
@ BTL_SUBSTATE_DIPPING_TARGET_CHOSEN
Definition menu_player.c:37
@ BTL_SUBSTATE_ITEMS_CHOOSING
Definition menu_player.c:48
@ BTL_SUBSTATE_CHANGE_PARTNER_TARGET_CHOSEN
Definition menu_player.c:44
@ BTL_SUBSTATE_STRATEGIES_BUILD_MENU
Definition menu_player.c:71
@ BTL_SUBSTATE_ABILITIES_TARGET_CHOSEN
Definition menu_player.c:20
@ BTL_SUBSTATE_BERSERKER_CHOOSE
Definition menu_player.c:69
@ BTL_SUBSTATE_STRATEGIES_CHOOSING
Definition menu_player.c:72
@ BTL_SUBSTATE_STRATEGIES_TARGET_CANCEL
Definition menu_player.c:75
@ BTL_SUBSTATE_ITEMS_TARGET_CHOSEN
Definition menu_player.c:52
@ BTL_SUBSTATE_ABILITIES_TARGET_CANCEL
Definition menu_player.c:19
@ BTL_SUBSTATE_PLAYER_CONTINUE_DIP
Definition states.h:12

Function Documentation

◆ get_player_anim_for_status()

s32 get_player_anim_for_status ( s32 animID)

Definition at line 1697 of file 190B20.c.

1697 {
1700 Actor* player = battleStatus->playerActor;
1701 u32* anim = &player->partsTable->idleAnimations[0];
1702 s32 ret;
1703
1704 if (anim == nullptr) {
1705 return 0;
1706 }
1707 ret = 0;
1708
1709 if (!(battleStatus->flags2 & BS_FLAGS2_PEACH_BATTLE)) {
1710 // switch to danger override animations
1711 if (playerData->curHP <= DANGER_THRESHOLD) {
1714 }
1717 }
1720 }
1721 }
1722
1723 // switch to poisoned override animations
1724 if (player->debuff == STATUS_KEY_POISON) {
1727 }
1730 }
1733 }
1734 }
1735
1736 // switch to dizzy override animations
1737 if (player->debuff == STATUS_KEY_DIZZY) {
1740 }
1741 }
1742 }
1743
1744 // search IdleAnimations to get animID for key
1745 while (*anim != nullptr) {
1746 if (*anim == STATUS_KEY_NORMAL) {
1747 ret = anim[1];
1748 }
1749 if (*anim == statusKey) {
1750 ret = anim[1];
1751 break;
1752 }
1753 anim += 2;
1754 }
1755
1756 return ret;
1757}
BSS s32 PopupMenu_SelectedIndex
u32 * idleAnimations
struct ActorPart * partsTable
@ BS_FLAGS2_PEACH_BATTLE
Definition enums.h:3643
@ STATUS_KEY_INACTIVE_DIZZY
Definition enums.h:2825
@ STATUS_KEY_THINKING
Definition enums.h:2829
@ STATUS_KEY_WEARY
Definition enums.h:2830
@ STATUS_KEY_INACTIVE_WEARY
Definition enums.h:2823
@ STATUS_KEY_DANGER
Definition enums.h:2827
@ STATUS_KEY_INACTIVE
Definition enums.h:2819
@ STATUS_KEY_DIZZY
Definition enums.h:2805
@ STATUS_KEY_POISON
Definition enums.h:2810
@ STATUS_KEY_NORMAL
Definition enums.h:2802
#define DANGER_THRESHOLD
Definition battle.h:276
PlayerData gPlayerData
Definition 77480.c:39
BattleStatus gBattleStatus
Definition battle.cpp:14

Referenced by btl_state_update_player_menu().

◆ btl_init_menu_boots()

void btl_init_menu_boots ( void )

Definition at line 112 of file menu_player.c.

112 {
115 Actor* player = battleStatus->playerActor;
116 MoveData* move;
117 s32 i;
120 s32 fpCost;
121
122 // If you don't have boots equipped, disable this menu
123 if (playerData->bootsLevel == GEAR_RANK_NONE) {
124 battleStatus->menuStatus[1] = 0;
125 return;
126 }
127
128 for (i = 0; i < ARRAY_COUNT(battleStatus->submenuMoves); i++) {
129 battleStatus->submenuMoves[i] = MOVE_NONE;
130 }
131
132 // Standard jump move
133 moveCount = 1;
134 battleStatus->submenuMoves[0] = MOVE_JUMP1 + playerData->bootsLevel;
135 battleStatus->submenuIcons[0] = ITEM_PARTNER_ATTACK;
136
137 // Jump badges
138 for (i = 0; i < ARRAY_COUNT(playerData->equippedBadges); i++) {
139 s16 badge = playerData->equippedBadges[i];
140
141 if (badge != ITEM_NONE) {
143 u8 moveID = gItemTable[badge].moveID;
144
145 move = &moveTable[moveID];
146 if (move->category == MOVE_TYPE_JUMP) {
147 battleStatus->submenuMoves[moveCount] = moveID;
148 battleStatus->submenuIcons[moveCount] = playerData->equippedBadges[i];
149 moveCount++;
150 }
151 }
152 }
153
154 battleStatus->submenuMoveCount = moveCount;
155
156 hasAnyBadgeMoves = false;
157 for (i = 0; i < battleStatus->submenuMoveCount; i++) {
158 move = &gMoveTable[battleStatus->submenuMoves[i]];
159
160 // Calculate FP cost
161 fpCost = move->costFP;
162 if (fpCost != 0) {
165 if (fpCost < 1) {
166 fpCost = 1;
167 }
168 }
169
170 // See if there are any targets for this move
171 battleStatus->moveCategory = BTL_MENU_TYPE_JUMP;
172 battleStatus->moveArgument = playerData->bootsLevel;
173 battleStatus->curTargetListFlags = move->flags; // Controls target filters
175
176 // If there are targets, enable the move
177 if (player->targetListLength != 0) {
178 hasAnyBadgeMoves = true;
180 }
181
182 // If you don't have enough FP, disable the move
183 if (playerData->curFP < fpCost) {
185 }
186
187 // If there are no targets available, disable the move
188 if (player->targetListLength == 0) {
190 }
193 }
194 }
195
196 if (!hasAnyBadgeMoves) {
197 // Only the standard jump is available - no badge moves.
198 // Selecting this submenu should immediately pick the standard jump move
199 battleStatus->menuStatus[1] = -1;
200 } else {
201 // Enable this submenu
202 battleStatus->menuStatus[1] = 1;
203 }
204}
s8 targetListLength
@ BTL_MENU_TYPE_JUMP
Definition enums.h:3826
@ BS_FLAGS2_NO_TARGET_AVAILABLE
Definition enums.h:3647
@ BATTLE_SUBMENU_STATUS_ENABLED
Definition enums.h:4812
@ BATTLE_SUBMENU_STATUS_NO_TARGETS
Definition enums.h:4814
@ BATTLE_SUBMENU_STATUS_NOT_ENOUGH_FP
Definition enums.h:4813
@ BATTLE_SUBMENU_STATUS_NO_TARGETS_2
Definition enums.h:4815
@ MOVE_TYPE_JUMP
Definition enums.h:4799
@ ABILITY_FLOWER_SAVER
Definition enums.h:460
@ ABILITY_FLOWER_FANATIC
Definition enums.h:474
@ GEAR_RANK_NONE
Definition enums.h:2044
s32 player_team_is_ability_active(Actor *actor, s32 ability)
Definition 190B20.c:2497
void create_current_pos_target_list(Actor *actor)
Definition 190B20.c:472
#define ARRAY_COUNT(arr)
Definition macros.h:39
ItemData gItemTable[]
MoveData gMoveTable[]

Referenced by btl_state_update_player_menu().

◆ btl_init_menu_hammer()

void btl_init_menu_hammer ( void )

Definition at line 206 of file menu_player.c.

206 {
209 Actor* player = battleStatus->playerActor;
210 MoveData* move;
211 s32 i;
214 s32 fpCost;
215
216 // If you don't have a hammer, disable this menu
217 if (playerData->hammerLevel == -1) {
218 battleStatus->menuStatus[2] = 0;
219 return;
220 }
221
222 for (i = 0; i < ARRAY_COUNT(battleStatus->submenuMoves); i++) {
223 battleStatus->submenuMoves[i] = MOVE_NONE;
224 }
225
226 // Standard hammer move
227 moveCount = 1;
228 battleStatus->submenuMoves[0] = MOVE_HAMMER1 + playerData->hammerLevel;
229 battleStatus->submenuIcons[0] = ITEM_PARTNER_ATTACK;
230
231 // Hammer badges
232 for (i = 0; i < ARRAY_COUNT(playerData->equippedBadges); i++) {
233 s16 badge = playerData->equippedBadges[i];
234 if (badge != MOVE_NONE) {
236 u8 moveID = gItemTable[badge].moveID;
237 move = &moveTable[moveID];
238 if (move->category == MOVE_TYPE_HAMMER) {
239 battleStatus->submenuMoves[moveCount] = moveID;
240 battleStatus->submenuIcons[moveCount] = playerData->equippedBadges[i];
241 moveCount++;
242 }
243 }
244 }
245
246 battleStatus->submenuMoveCount = moveCount;
247
248 hasAnyBadgeMoves = false;
249 for (i = 0; i < battleStatus->submenuMoveCount; i++) {
250 move = &gMoveTable[battleStatus->submenuMoves[i]];
251
252 // Calculate FP cost
253 fpCost = move->costFP;
254 if (fpCost != 0) {
257 if (fpCost < 1) {
258 fpCost = 1;
259 }
260 }
261
262 // See if there are any targets for this move
263 battleStatus->moveCategory = BTL_MENU_TYPE_SMASH;
264 battleStatus->moveArgument = playerData->hammerLevel;
265 battleStatus->curTargetListFlags = move->flags;
267
268 // If there are targets, enable the move
269 if (player->targetListLength != 0) {
270 hasAnyBadgeMoves = true;
271 battleStatus->submenuStatus[i] = 1;
272 }
273
274 // If you don't have enough FP, disable the move
275 if (playerData->curFP < fpCost) {
276 battleStatus->submenuStatus[i] = 0;
277 }
278
279 // If there are no targets available, disable the move
280 if (player->targetListLength == 0) {
282 }
285 }
286 }
287
288 if (!hasAnyBadgeMoves) {
289 // Only the standard hammer is available - no badge moves.
290 // Selecting this submenu should immediately pick the standard hammer move
291 battleStatus->menuStatus[2] = -1;
292 } else {
293 // Enable this submenu
294 battleStatus->menuStatus[2] = 1;
295 }
296}
@ BTL_MENU_TYPE_SMASH
Definition enums.h:3827
@ MOVE_TYPE_HAMMER
Definition enums.h:4798

Referenced by btl_state_update_player_menu().

◆ btl_state_update_player_menu()

void btl_state_update_player_menu ( void )

Definition at line 298 of file menu_player.c.

298 {
301 Actor* playerActor = battleStatus->playerActor;
302 Actor* partnerActor = battleStatus->partnerActor;
305 s32 entryIdx, initialPos;
306 s32 i;
310 s32 starBeamLevel;
315
316 switch (gBattleSubState) {
318 battleStatus->moveCategory = BTL_MENU_TYPE_INVALID;
319 battleStatus->selectedMoveID = 0;
320 battleStatus->curAttackElement = 0;
321 if (!btl_player_can_act()) {
323 return;
324 }
326 btl_cam_move(10);
327 if (!(battleStatus->flags1 & BS_FLAGS1_PLAYER_IN_BACK)) {
329 } else {
331 partnerActor->state.curPos.x = partnerActor->homePos.x;
332 partnerActor->state.curPos.z = partnerActor->homePos.z;
333 partnerActor->state.goalPos.x = playerActor->homePos.x;
334 partnerActor->state.goalPos.z = playerActor->homePos.z;
335 partnerActor->state.moveTime = 4;
336 partnerActor->state.angle = 0.0f;
337 }
338 break;
340 if (partnerActor->state.moveTime != 0) {
341 partnerActor->curPos.x += (partnerActor->state.goalPos.x - partnerActor->curPos.x) / partnerActor->state.moveTime;
342 partnerActor->curPos.z += (partnerActor->state.goalPos.z - partnerActor->curPos.z) / partnerActor->state.moveTime;
343 playerActor->curPos.x += (partnerActor->state.curPos.x - playerActor->curPos.x) / partnerActor->state.moveTime;
344 playerActor->curPos.z += (partnerActor->state.curPos.z - playerActor->curPos.z) / partnerActor->state.moveTime;
345 }
346 partnerActor->curPos.z -= sin_rad(DEG_TO_RAD(partnerActor->state.angle)) * 16.0f;
347 partnerActor->yaw = clamp_angle(-partnerActor->state.angle);
348 playerActor->curPos.z += sin_rad(DEG_TO_RAD(partnerActor->state.angle)) * 16.0f;
349 playerActor->yaw = clamp_angle(-partnerActor->state.angle);
350 partnerActor->state.angle += 90.0f;
351 if (partnerActor->state.moveTime != 0) {
352 partnerActor->state.moveTime--;
353 } else {
354 partnerActor->curPos.x = partnerActor->state.goalPos.x;
355 partnerActor->curPos.z = partnerActor->state.goalPos.z;
356 playerActor->curPos.x = partnerActor->state.curPos.x;
357 playerActor->curPos.z = partnerActor->state.curPos.z;
358 partnerActor->homePos.x = partnerActor->curPos.x;
359 partnerActor->homePos.z = partnerActor->curPos.z;
360 playerActor->homePos.x = playerActor->curPos.x;
361 playerActor->homePos.z = playerActor->curPos.z;
364 }
365 break;
366 }
367
368 switch (gBattleSubState) {
371 playerActor->flags &= ~ACTOR_FLAG_USING_IDLE_ANIM;
372 playerActor->flags |= ACTOR_FLAG_SHOW_STATUS_ICONS;
373 if (partnerActor != nullptr) {
374 partnerActor->flags |= ACTOR_FLAG_USING_IDLE_ANIM;
375 partnerActor->flags |= ACTOR_FLAG_SHOW_STATUS_ICONS;
376 }
383 break;
384 }
385
386 entryIdx = 0;
387 initialPos = 2;
388 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_MAIN] < 0) {
389 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_MAIN] = 0;
390 }
391
392 // strategies menu category
399 }
401 if (!(battleStatus->enabledMenusFlags & BTL_MENU_ENABLED_STRATEGIES)) {
405 }
406 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_MAIN] == BTL_MENU_TYPE_STRATEGIES) {
407 initialPos = entryIdx;
408 }
409 entryIdx++;
410
411 // items menu category
412 if (battleStatus->menuStatus[0] >= 0) {
417
418 if(battleStatus->menuStatus[0] == 0) {
422 }
423
424 if (!(battleStatus->enabledMenusFlags & BTL_MENU_ENABLED_ITEMS)) {
428 }
429
430 if (battleStatus->itemLossTurns >= 0) {
434 }
435
436 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_MAIN] == BTL_MENU_TYPE_ITEMS) {
437 initialPos = entryIdx;
438 }
439
440 entryIdx++;
441 }
442
443 // jump menu category
448
449 if (battleStatus->menuStatus[1] <= 0) {
453 }
454 if (!(battleStatus->enabledMenusFlags & BTL_MENU_ENABLED_JUMP)) {
458 }
459 if (battleStatus->jumpLossTurns >= 0) {
463 }
464 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_MAIN] == BTL_MENU_TYPE_JUMP) {
465 initialPos = entryIdx;
466 }
467 entryIdx++;
468
469 // hammer menu category
470 if (playerData->hammerLevel >= 0) {
475 if (battleStatus->menuStatus[2] <= 0) {
479 }
480 if (!(battleStatus->enabledMenusFlags & BTL_MENU_ENABLED_SMASH)) {
484 }
485 if (battleStatus->hammerLossTurns >= 0) {
489 }
490 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_MAIN] == BTL_MENU_TYPE_SMASH) {
491 initialPos = entryIdx;
492 }
493 entryIdx++;
494 }
495
496 // star powers menu category
497 if (playerData->maxStarPower != 0) {
503 if (!(battleStatus->enabledMenusFlags & BTL_MENU_ENABLED_STAR_POWERS)) {
507 }
508 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_MAIN] == BTL_MENU_TYPE_STAR_POWERS) {
509 initialPos = entryIdx;
510 }
511 entryIdx++;
512 }
513
515 BattleMenu_PrevSelected = initialPos;
516 BattleMenu_WheelBase = 2 - initialPos;
517 if (btl_partner_can_act()) {
519 } else {
521 }
526 break;
528 if (battleStatus->hustleTurns != 0) {
530 } else {
532 }
534 if (BattleMenu_SwapDelay != 0) {
537 if (btl_partner_can_act() && battleStatus->hustleTurns != 1) {
542 } else if (partnerActor != nullptr && !(partnerActor->flags & BS_FLAGS1_YIELD_TURN) && battleStatus->hustleTurns != 1) {
545 }
546 break;
547 }
548
549 if (BattleMenu_ChooseDelay != 0) {
551 break;
552 }
553
554 if (submenuResult == 0) {
555 break;
556 }
557
559 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_MAIN] = battleStatus->curSubmenu = WheelOptionSubmenu[submenuResult - 1];
560 for (i = 0; i < ARRAY_COUNT(battleStatus->submenuMoves); i++) {
561 battleStatus->submenuMoves[i] = MOVE_NONE;
562 battleStatus->submenuIcons[i] = ITEM_NONE;
563 battleStatus->submenuStatus[i] = 0;
564 }
565
566 switch (battleStatus->curSubmenu) {
568 battleStatus->submenuMoves[0] = MOVE_ITEMS;
569 battleStatus->submenuIcons[0] = ITEM_PARTNER_ATTACK;
570 battleStatus->submenuStatus[0] = 1;
571 for (i = 0; i < ARRAY_COUNT(playerData->invItems); i++) {
572 if (playerData->invItems[i] == ITEM_NONE) {
573 continue;
574 }
575 itemData = &gItemTable[playerData->invItems[i]];
576
577 battleStatus->moveCategory = BTL_MENU_TYPE_ITEMS;
578 battleStatus->moveArgument = playerData->invItems[i];
579 battleStatus->curTargetListFlags = itemData->targetFlags;
581 }
582 entryIdx = 1;
583 for (i = 0; i < ARRAY_COUNT(playerData->equippedBadges); i++) {
584 if (playerData->equippedBadges[i] != 0) {
585 s32 moveID = gItemTable[playerData->equippedBadges[i]].moveID;
586 moveData = &gMoveTable[moveID];
587 if (moveData->category == BattleMenu_CategoryForSubmenu[battleStatus->curSubmenu]) {
589 battleStatus->submenuMoves[entryIdx] = moveID;
590 battleStatus->submenuIcons[entryIdx] = playerData->equippedBadges[i];
591 battleStatus->submenuStatus[entryIdx] = 1;
592
595
596 if (playerData->curFP < cost) {
597 battleStatus->submenuStatus[entryIdx] = 0;
598 }
599 entryIdx++;
600 }
601 }
602 }
603 battleStatus->submenuMoveCount = entryIdx;
604 if (entryIdx == 1) {
605 battleStatus->submenuMoveCount = 0;
606 }
607 break;
610 if (battleStatus->submenuMoveCount == 1) {
611 battleStatus->submenuMoveCount = 0;
612 }
613 if (battleStatus->actionCommandMode == AC_MODE_TUTORIAL) {
614 battleStatus->submenuMoveCount = 0;
615 }
616 break;
619 if (battleStatus->submenuMoveCount == 1) {
620 battleStatus->submenuMoveCount = 0;
621 }
622 if (battleStatus->actionCommandMode == AC_MODE_TUTORIAL) {
623 battleStatus->submenuMoveCount = 0;
624 }
625 break;
627 battleStatus->submenuMoves[0] = MOVE_FOCUS;
628 battleStatus->submenuIcons[0] = ITEM_PARTNER_ATTACK;
629 battleStatus->submenuStatus[0] = 1;
630 entryIdx = 1;
631 initialPos = 8;
632 for (i = 0; i < playerData->maxStarPower; i++) {
634 battleStatus->submenuMoves[entryIdx] = MOVE_REFRESH + i;
635 battleStatus->submenuIcons[entryIdx] = ITEM_NONE;
637 battleStatus->moveArgument = MOVE_REFRESH + i;
638 battleStatus->curTargetListFlags = moveData->flags;
640 battleStatus->submenuStatus[entryIdx] = 1;
641 if (playerActor->targetListLength == 0) {
642 battleStatus->submenuStatus[entryIdx] = -2;
643 }
644 if (playerData->starPower / SP_PER_BAR < moveData->costFP) {
645 battleStatus->submenuStatus[entryIdx] = 0;
646 }
648 battleStatus->submenuStatus[entryIdx] = -1;
649 }
650 entryIdx++;
651 }
652 starBeamLevel = playerData->starBeamLevel;
653 if (starBeamLevel == 1) {
655 battleStatus->submenuMoves[entryIdx] = MOVE_STAR_BEAM;
656 battleStatus->submenuIcons[entryIdx] = 0;
658 battleStatus->moveArgument = MOVE_REFRESH + i;
659 battleStatus->curTargetListFlags = moveData->flags;
661 battleStatus->submenuStatus[entryIdx] = starBeamLevel;
662 if (playerActor->targetListLength == 0) {
663 battleStatus->submenuStatus[entryIdx] = -2;
664 }
665 if (playerData->starPower / SP_PER_BAR < moveData->costFP) {
666 battleStatus->submenuStatus[entryIdx] = 0;
667 }
669 battleStatus->submenuStatus[entryIdx] = -1;
670 }
671 entryIdx++;
672 }
673 if (playerData->starBeamLevel == 2) {
675 battleStatus->submenuMoves[entryIdx] = MOVE_PEACH_BEAM;
676 battleStatus->submenuIcons[entryIdx] = ITEM_NONE;
678 battleStatus->moveArgument = MOVE_REFRESH + i;
679 battleStatus->curTargetListFlags = moveData->flags;
681 battleStatus->submenuStatus[entryIdx] = 1;
682 if (playerActor->targetListLength == 0) {
683 battleStatus->submenuStatus[entryIdx] = -2;
684 }
685 if (playerData->starPower / SP_PER_BAR < moveData->costFP) {
686 battleStatus->submenuStatus[entryIdx] = 0;
687 }
689 battleStatus->submenuStatus[entryIdx] = -1;
690 }
691 entryIdx++;
692 }
693 battleStatus->submenuMoveCount = entryIdx;
694 break;
695 }
696
697 currentSubmenu = battleStatus->curSubmenu;
698
703 break;
704 }
705
711 } else {
713 battleStatus->moveCategory = currentSubmenu;
714 battleStatus->moveArgument = 0;
715 battleStatus->selectedMoveID = 0;
717 }
718 break;
719 }
720
721 // handle menus without multiple options (skipping submenu)
722 if (battleStatus->submenuMoveCount == 0) {
725 } else {
729 }
730 break;
731 }
732
733 initialPos = 0;
735 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_JUMP] < 0) {
736 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_JUMP] = 0;
737 }
738 initialPos = battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_JUMP];
739 }
740 if (battleStatus->curSubmenu == BTL_MENU_TYPE_SMASH) {
741 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_SMASH] < 0) {
742 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_SMASH] = 0;
743 }
744 initialPos = battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_SMASH];
745 }
746 if (battleStatus->curSubmenu == BTL_MENU_TYPE_ITEMS) {
747 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_ITEMS] < 0) {
748 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_ITEMS] = 0;
749 }
750 initialPos = battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_ITEMS];
751 }
752
753 for (i = 0; i < battleStatus->submenuMoveCount; i++) {
754 moveData = &gMoveTable[battleStatus->submenuMoves[i]];
755 itemData = &gItemTable[battleStatus->submenuIcons[i]];
757
758 MovesOptionError[i] = 0;
759 if (battleStatus->submenuStatus[i] == 0) {
760 MovesOptionError[i] = 0;
761 }
762 if (battleStatus->submenuStatus[i] == -1) {
763 battleStatus->submenuStatus[i] = 0;
765 }
766 if (battleStatus->submenuStatus[i] == -2) {
767 battleStatus->submenuStatus[i] = 0;
769 }
770 if (battleStatus->submenuStatus[i] == -3) {
771 battleStatus->submenuStatus[i] = 0;
773 }
775 if (battleStatus->submenuStatus[i] == 0) {
777 }
778
780 MovesOptionBPCosts[i] = moveData->costBP;
784
788 }
792 }
793
794 MovesOptionIndices[i] = i;
795 MovesOptionEnabled[i] = battleStatus->submenuStatus[i];
796 MovesOptionNames[i] = moveData->nameMsg;
797 MovesOptionDesc[i] = moveData->shortDescMsg;
798
799 }
800 UsingSpiritsSubmenu = false;
801 MovesOptionCount = battleStatus->submenuMoveCount;
802 MovesPrevSelected = initialPos;
805 break;
808 switch (submenuResult) {
810 // do nothing while player is choosing from menu
811 break;
814 break;
822 break;
823 default: // something has been selected
824 battleStatus->lastSelectedAbility = MovesOptionIndices[submenuResult - 1];
825 battleStatus->selectedMoveID = battleStatus->submenuMoves[battleStatus->lastSelectedAbility];
826 if (battleStatus->curSubmenu == BTL_MENU_TYPE_JUMP) {
827 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_JUMP] = SelectedMovesIndex;
828 }
829 if (battleStatus->curSubmenu == BTL_MENU_TYPE_SMASH) {
830 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_SMASH] = SelectedMovesIndex;
831 }
832 currentSubmenu2 = battleStatus->curSubmenu;
833 if (battleStatus->curSubmenu == BTL_MENU_TYPE_ITEMS) {
834 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_ITEMS] = SelectedMovesIndex;
835 if (battleStatus->curSubmenu == currentSubmenu2) {
839 break;
840 }
841 }
845 break;
846 }
847 break;
850 if ((battleStatus->curButtonsPressed & BUTTON_B) && submenuResult == 0) {
854 break;
855 }
856 if (btl_main_menu_update() == 0) {
857 break;
858 }
859 battleStatus->cancelTargetMenuSubstate = BTL_SUBSTATE_ABILITIES_TARGET_CANCEL;
860 battleStatus->acceptTargetMenuSubstate = BTL_SUBSTATE_ABILITIES_TARGET_CHOSEN;
861 battleStatus->selectedMoveID = battleStatus->submenuMoves[battleStatus->lastSelectedAbility];
862 battleStatus->curTargetListFlags = gMoveTable[battleStatus->submenuMoves[battleStatus->lastSelectedAbility]].flags;
863 currentSubmenu = battleStatus->curSubmenu;
864 switch (currentSubmenu) {
866 battleStatus->moveCategory = BTL_MENU_TYPE_JUMP;
867 battleStatus->moveArgument = playerData->bootsLevel;
869 break;
871 battleStatus->moveCategory = BTL_MENU_TYPE_SMASH;
872 battleStatus->moveArgument = playerData->hammerLevel;
874 break;
876 gBattleSubState = battleStatus->acceptTargetMenuSubstate;
878 battleStatus->moveCategory = BTL_MENU_TYPE_DEFEND;
880 break;
881 }
882 break;
885 if (btl_main_menu_update() == 0) {
886 break;
887 }
889 break;
894 break;
898 break;
900 if (btl_submenu_moves_update() != -1) {
902 }
903 break;
907 } else {
909 }
910 ShowingErrorMessage = true;
912 break;
915 break;
916 }
917 ShowingErrorMessage = false;
921 break;
925 break;
928
929 if (submenuResult == 0) {
930 if (battleStatus->curButtonsPressed & BUTTON_B) {
933 }
934 break;
935 }
936
937 battleStatus->cancelTargetMenuSubstate = BTL_SUBSTATE_NOSUBMENU_TARGET_CANCEL;
938 battleStatus->acceptTargetMenuSubstate = BTL_SUBSTATE_NOSUBMENU_TARGET_CHOSEN;
939 switch (battleStatus->curSubmenu) {
941 battleStatus->moveCategory = BTL_MENU_TYPE_JUMP;
942 battleStatus->moveArgument = playerData->bootsLevel;
943 battleStatus->selectedMoveID = playerData->bootsLevel + MOVE_JUMP1;
944 battleStatus->curTargetListFlags = gMoveTable[battleStatus->selectedMoveID].flags;
946 break;
948 battleStatus->moveCategory = BTL_MENU_TYPE_SMASH;
949 battleStatus->moveArgument = playerData->hammerLevel;
950 battleStatus->selectedMoveID = playerData->hammerLevel + MOVE_HAMMER1;
951 battleStatus->curTargetListFlags = gMoveTable[battleStatus->selectedMoveID].flags;
953 break;
954 }
956 break;
957 }
958 // fallthrough
960 if (btl_main_menu_update() == 0) {
961 break;
962 }
966 break;
970 break;
973 break;
975 if (battleStatus->selectedMoveID == MOVE_DOUBLE_DIP) {
976 battleStatus->itemUsesLeft = 2;
977 }
978 if (battleStatus->selectedMoveID == MOVE_TRIPLE_DIP) {
979 battleStatus->itemUsesLeft = 3;
980 }
981 entryIdx = 0;
982 for (i = 0; i < ARRAY_COUNT(playerData->invItems); i++) {
983 if (playerData->invItems[i] == ITEM_NONE) {
984 continue;
985 }
986 itemData = &gItemTable[playerData->invItems[i]];
988 if (!(itemData->typeFlags & ITEM_TYPE_FLAG_BATTLE_USABLE)) {
989 continue;
990 }
991 battleStatus->moveCategory = BTL_MENU_TYPE_ITEMS;
992 battleStatus->moveArgument = playerData->invItems[i];
993 battleStatus->curTargetListFlags = itemData->targetFlags;
995 popup->ptrIcon[entryIdx] = hudScriptPair->enabled;
996 popup->userIndex[entryIdx] = playerData->invItems[i];
997 popup->enabled[entryIdx] = true;
998 popup->nameMsg[entryIdx] = itemData->nameMsg;
999 popup->descMsg[entryIdx] = itemData->shortDescMsg;
1000 if (playerActor->targetListLength == 0) {
1001 popup->ptrIcon[entryIdx] = hudScriptPair->disabled;
1002 popup->enabled[entryIdx] = 0;
1003 }
1004 entryIdx++;
1005 }
1006 popup->dipMode = 0;
1007 popup->titleNumber = 0;
1008 if (battleStatus->selectedMoveID == MOVE_DOUBLE_DIP) {
1009 popup->dipMode = 1;
1010 popup->titleNumber = battleStatus->itemUsesLeft;
1011 }
1012 if (battleStatus->selectedMoveID == MOVE_TRIPLE_DIP) {
1013 popup->dipMode = 2;
1014 popup->titleNumber = battleStatus->itemUsesLeft;
1015 }
1016 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_DIP] < 0) {
1017 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_DIP] = 0;
1018 }
1019 popup->popupType = POPUP_MENU_USE_ITEM;
1020 popup->numEntries = entryIdx;
1021 initialPos = battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_DIP];
1022 popup->initialPos = initialPos;
1026 break;
1028 switch (popup->result) {
1030 // do nothing while player is choosing from popup menu
1031 break;
1034 battleStatus->selectedMoveID = 0;
1035 battleStatus->itemUsesLeft = 0;
1039 break;
1040 default:
1041 battleStatus->cancelTargetMenuSubstate = BTL_SUBSTATE_DIPPING_TARGET_CANCEL;
1042 battleStatus->acceptTargetMenuSubstate = BTL_SUBSTATE_DIPPING_TARGET_CHOSEN;
1043 battleStatus->lastSelectedItem = popup->userIndex[popup->result - 1];
1044 battleStatus->moveCategory = BTL_MENU_TYPE_ITEMS;
1045 battleStatus->moveArgument = battleStatus->lastSelectedItem;
1046 battleStatus->curTargetListFlags = gItemTable[battleStatus->moveArgument].targetFlags | TARGET_FLAG_PRIMARY_ONLY;
1047 battleStatus->curAttackElement = 0;
1048 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_DIP] = popup->result - 1;
1053 break;
1054 }
1055 break;
1057 if ((battleStatus->curButtonsPressed & BUTTON_B) && popup->result == POPUP_RESULT_CHOOSING) {
1061 battleStatus->selectedMoveID = 0;
1063 } else {
1065 if (btl_main_menu_update()) {
1067 }
1068 }
1069 break;
1072 if (btl_main_menu_update() != 0) {
1074 }
1075 break;
1082 break;
1087 break;
1089 entryIdx = 0;
1090 for (i = 0; i < ARRAY_COUNT(playerData->invItems); i++) {
1091 if (playerData->invItems[i] == ITEM_NONE) {
1092 continue;
1093 }
1094 itemData = &gItemTable[playerData->invItems[i]];
1095 hudScriptPair = &gItemHudScripts[itemData->hudElemID];
1096 if (!(itemData->typeFlags & ITEM_TYPE_FLAG_BATTLE_USABLE)) {
1097 continue;
1098 }
1099 battleStatus->moveCategory = BTL_MENU_TYPE_ITEMS;
1100 battleStatus->moveArgument = playerData->invItems[i];
1101 battleStatus->curTargetListFlags = itemData->targetFlags;
1102 create_current_pos_target_list(playerActor);
1103 popup->ptrIcon[entryIdx] = hudScriptPair->enabled;
1104
1105 popup->userIndex[entryIdx] = playerData->invItems[i];
1106 popup->enabled[entryIdx] = true;
1107 popup->nameMsg[entryIdx] = itemData->nameMsg;
1108 popup->descMsg[entryIdx] = itemData->shortDescMsg;
1109 if (playerActor->targetListLength == 0) {
1110 popup->ptrIcon[entryIdx] = hudScriptPair->disabled;
1111 popup->enabled[entryIdx] = 0;
1112 }
1113 entryIdx++;
1114 }
1115 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_DIP] < 0) {
1116 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_DIP] = 0;
1117 }
1118 initialPos = battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_DIP];
1119 popup->popupType = POPUP_MENU_USE_ITEM;
1120 popup->numEntries = entryIdx;
1121 popup->dipMode = 0;
1122 popup->titleNumber = 0;
1123 popup->initialPos = initialPos;
1127 break;
1129 switch(popup->result) {
1131 // do nothing while player is choosing from popup menu
1132 break;
1140 break;
1141 default:
1142 battleStatus->cancelTargetMenuSubstate = BTL_SUBSTATE_ITEMS_TARGET_CANCEL;
1143 battleStatus->acceptTargetMenuSubstate = BTL_SUBSTATE_ITEMS_TARGET_CHOSEN;
1144 battleStatus->lastSelectedItem = popup->userIndex[popup->result - 1];
1145 battleStatus->moveCategory = BTL_MENU_TYPE_ITEMS;
1146 battleStatus->moveArgument = battleStatus->lastSelectedItem;
1147 battleStatus->selectedMoveID = MOVE_ITEMS;
1148 battleStatus->curTargetListFlags = gItemTable[battleStatus->moveArgument].targetFlags | TARGET_FLAG_PRIMARY_ONLY;
1149 battleStatus->curAttackElement = 0;
1150 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_DIP] = popup->result - 1;
1154 break;
1155 }
1156 break;
1158 if ((battleStatus->curButtonsPressed & BUTTON_B) && popup->result == POPUP_RESULT_CHOOSING) {
1162 } else {
1163 if (btl_main_menu_update() != 0) {
1165 }
1166 }
1167 break;
1169 if (btl_main_menu_update() != 0) {
1171 }
1172 break;
1177 break;
1181 break;
1183 for (i = 0; i < battleStatus->submenuMoveCount; i++) {
1184 moveData = &gMoveTable[battleStatus->submenuMoves[i]];
1185 MovesOptionError[i] = 0;
1186
1187 if (battleStatus->submenuStatus[i] == 0) {
1188 MovesOptionError[i] = 0;
1189 }
1190
1191 if (battleStatus->submenuStatus[i] == -1) {
1192 battleStatus->submenuStatus[i] = 0;
1194 }
1195 if (battleStatus->submenuStatus[i] == -2) {
1196 battleStatus->submenuStatus[i] = 0;
1198 }
1199 if (!(battleStatus->enabledStarPowersFlags & (1 << i))) {
1200 battleStatus->submenuStatus[i] = 0;
1202 }
1203
1205 if (battleStatus->submenuStatus[i] == 0) {
1207 }
1208 MovesOptionDisplayCosts[i] = moveData->costFP;
1209 MovesOptionBPCosts[i] = moveData->costBP;
1211 MovesOptionIndices[i] = i;
1212 MovesOptionEnabled[i] = battleStatus->submenuStatus[i];
1213 MovesOptionNames[i] = moveData->nameMsg;
1214 MovesOptionDesc[i] = moveData->shortDescMsg;
1215 MovesOptionDiscounts[i] = 0;
1217 }
1218 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_STAR_POWER] < 0) {
1219 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_STAR_POWER] = 0;
1220 }
1221 UsingSpiritsSubmenu = true;
1222 MovesOptionCount = battleStatus->submenuMoveCount;
1223 initialPos = battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_STAR_POWER];
1224 MovesPrevSelected = initialPos;
1227 break;
1230 switch(submenuResult) {
1232 // do nothing while player is choosing from menu
1233 break;
1236 break;
1244 break;
1245 default:
1246 battleStatus->lastSelectedAbility = MovesOptionIndices[submenuResult - 1];
1247 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_STAR_POWER] = SelectedMovesIndex;
1251 break;
1252 }
1253 break;
1256 if ((battleStatus->curButtonsPressed & BUTTON_B) && submenuResult == 0) {
1260 } else if (btl_main_menu_update() != 0) {
1261 battleStatus->cancelTargetMenuSubstate = BTL_SUBSTATE_STAR_SPIRITS_TARGET_CANCEL;
1262 battleStatus->acceptTargetMenuSubstate = BTL_SUBSTATE_STAR_SPIRITS_TARGET_CHOSEN;
1264 battleStatus->selectedMoveID = battleStatus->submenuMoves[battleStatus->lastSelectedAbility];
1265 battleStatus->curTargetListFlags = gMoveTable[battleStatus->submenuMoves[battleStatus->lastSelectedAbility]].flags;
1266 battleStatus->moveArgument = battleStatus->lastSelectedAbility;
1267 if (playerData->starBeamLevel == 2 && battleStatus->moveArgument == 8) {
1268 battleStatus->moveArgument++;
1269 }
1271 }
1272 break;
1275 if (btl_main_menu_update() != 0) {
1277 }
1278 break;
1283 break;
1287 break;
1291 }
1292 break;
1294 if (!btl_player_can_act()) {
1295 battleStatus->itemUsesLeft = 1;
1297 } else {
1298 entryIdx = 0;
1299 for (i = 0; i < ARRAY_COUNT(playerData->invItems); i++) {
1300 if (playerData->invItems[i] == ITEM_NONE) {
1301 continue;
1302 }
1303 itemData = &gItemTable[playerData->invItems[i]];
1304 hudScriptPair = &gItemHudScripts[itemData->hudElemID];
1305 if (!(itemData->typeFlags & ITEM_TYPE_FLAG_BATTLE_USABLE)) {
1306 continue;
1307 }
1308
1309 battleStatus->moveCategory = BTL_MENU_TYPE_ITEMS;
1310 battleStatus->moveArgument = playerData->invItems[i];
1311 battleStatus->curTargetListFlags = itemData->targetFlags;
1312 create_current_pos_target_list(playerActor);
1313 popup->ptrIcon[entryIdx] = hudScriptPair->enabled;
1314 popup->userIndex[entryIdx] = playerData->invItems[i];
1315 popup->enabled[entryIdx] = true;
1316 popup->nameMsg[entryIdx] = itemData->nameMsg;
1317 popup->descMsg[entryIdx] = itemData->shortDescMsg;
1318 if (playerActor->targetListLength == 0) {
1319 popup->ptrIcon[entryIdx] = hudScriptPair->disabled;
1320 popup->enabled[entryIdx] = false;
1321 }
1322 entryIdx++;
1323 }
1324 if (entryIdx == 0) {
1325 battleStatus->itemUsesLeft = 1;
1327 } else {
1328 popup->popupType = POPUP_MENU_USE_ITEM;
1329 if (battleStatus->selectedMoveID == MOVE_DOUBLE_DIP) {
1330 popup->popupType += POPUP_MENU_DOUBLE_DIP;
1331 popup->dipMode = 1;
1332 popup->titleNumber = battleStatus->itemUsesLeft;
1333 }
1334 if (battleStatus->selectedMoveID == MOVE_TRIPLE_DIP) {
1335 popup->popupType += POPUP_MENU_TRIPLE_DIP;
1336 popup->dipMode = 2;
1337 popup->titleNumber = battleStatus->itemUsesLeft;
1338 }
1339 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_DIP] < 0) {
1340 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_DIP] = 0;
1341 }
1342 popup->numEntries = entryIdx;
1343 initialPos = battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_DIP];
1344 popup->initialPos = initialPos;
1348 }
1349 }
1350 break;
1352 switch(popup->result) {
1354 // do nothing while player is choosing from menu
1355 break;
1357 battleStatus->itemUsesLeft = 1;
1359 break;
1360 default:
1361 battleStatus->cancelTargetMenuSubstate = BTL_SUBSTATE_NEXT_DIP_TARGET_CANCEL;
1362 battleStatus->acceptTargetMenuSubstate = BTL_SUBSTATE_NEXT_DIP_TARGET_CHOSEN;
1363 battleStatus->lastSelectedItem = popup->userIndex[popup->result - 1];
1364 battleStatus->moveCategory = BTL_MENU_TYPE_ITEMS;
1365 battleStatus->moveArgument = battleStatus->lastSelectedItem;
1366 battleStatus->curTargetListFlags = gItemTable[battleStatus->moveArgument].targetFlags | TARGET_FLAG_PRIMARY_ONLY;
1367 battleStatus->curAttackElement = 0;
1368 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_DIP] = popup->result - 1;
1372 break;
1373 }
1374 break;
1376 if (BattleMenu_ChooseDelay != 0) {
1378 } else {
1380 }
1381 break;
1383 if (BattleMenu_ChooseDelay != 0) {
1385 } else {
1387 }
1388 break;
1393 break;
1396 break;
1398 if (playerData->bootsLevel > GEAR_RANK_NONE) {
1399 battleStatus->curTargetListFlags = gMoveTable[MOVE_BERSERKER_JUMP].flags;
1400 create_current_pos_target_list(playerActor);
1401 jumpTargetCount = playerActor->targetListLength;
1402 } else {
1403 jumpTargetCount = 0;
1404 }
1405
1406 if (playerData->hammerLevel > GEAR_RANK_NONE) {
1407 battleStatus->curTargetListFlags = gMoveTable[MOVE_BERSERKER_HAMMER].flags;
1408 create_current_pos_target_list(playerActor);
1409 hammerTargetCount = playerActor->targetListLength;
1410 } else {
1412 }
1413
1414 if (jumpTargetCount <= 0 && hammerTargetCount <= 0) {
1415 battleStatus->moveCategory = BTL_MENU_TYPE_DO_NOTHING;
1416 battleStatus->waitForState = BATTLE_STATE_NONE;
1418 } else {
1419 jumpChance = 50;
1420 if (jumpTargetCount <= 0) {
1421 jumpChance = 0;
1422 }
1423 if (hammerTargetCount <= 0) {
1424 jumpChance = 101;
1425 }
1426 if (rand_int(100) < jumpChance) {
1427 battleStatus->selectedMoveID = MOVE_BERSERKER_JUMP;
1428 battleStatus->moveCategory = BTL_MENU_TYPE_JUMP;
1429 battleStatus->curTargetListFlags = gMoveTable[MOVE_BERSERKER_JUMP].flags;
1430 battleStatus->moveArgument = playerData->bootsLevel;
1431 create_current_pos_target_list(playerActor);
1432 } else {
1433 battleStatus->selectedMoveID = MOVE_BERSERKER_HAMMER;
1434 battleStatus->moveCategory = BTL_MENU_TYPE_SMASH;
1435 battleStatus->curTargetListFlags = gMoveTable[MOVE_BERSERKER_HAMMER].flags;
1436 battleStatus->moveArgument = playerData->hammerLevel;
1437 create_current_pos_target_list(playerActor);
1438 }
1440 }
1441 break;
1443 entryIdx = 0;
1445
1446 // add 'Change Member' command
1447 if (battleStatus->changePartnerAllowed >= 0) {
1453 if (battleStatus->changePartnerAllowed <= 0) {
1457 }
1458 entryIdx++;
1459 }
1460
1461 // add 'Do Nothing' command
1467 entryIdx++;
1468
1469 // add 'Run Away' command
1479 }
1480 entryIdx++;
1481
1482 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_STRATEGY] < 0) {
1483 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_STRATEGY] = 0;
1484 }
1485 initialPos = battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_STRATEGY];
1487 StratsPrevSelected = initialPos;
1490 break;
1493 switch(submenuResult) {
1495 // do nothing while player is choosing from menu
1496 break;
1499 break;
1507 break;
1508 default:
1510 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_STRATEGY] = submenuResult - 1;
1511 if (battleStatus->curSubmenu == BTL_MENU_TYPE_CHANGE_PARTNER) {
1515 } else {
1519 }
1520 break;
1521 }
1522 break;
1525 if ((battleStatus->curButtonsPressed & BUTTON_B) && submenuResult == 0) {
1529 } else if (btl_main_menu_update() != 0) {
1530 battleStatus->cancelTargetMenuSubstate = BTL_SUBSTATE_STRATEGIES_TARGET_CANCEL;
1531 battleStatus->acceptTargetMenuSubstate = BTL_SUBSTATE_STRATEGIES_TARGET_CHOSEN;
1532 switch (battleStatus->curSubmenu) {
1536 battleStatus->moveCategory = BTL_MENU_TYPE_RUN_AWAY;
1537 battleStatus->selectedMoveID = MOVE_RUN_AWAY;
1539 break;
1541 battleStatus->hustleTurns = 0;
1543 gBattleSubState = battleStatus->acceptTargetMenuSubstate;
1546 break;
1550 battleStatus->moveCategory = BTL_MENU_TYPE_DEFEND;
1551 battleStatus->selectedMoveID = MOVE_DEFEND;
1553 break;
1558 break;
1559 }
1560 }
1561 break;
1564 if (btl_main_menu_update() != 0) {
1568 }
1569 break;
1574 break;
1578 break;
1580 if (btl_submenu_strats_update() != -1) {
1582 }
1583 break;
1585 entryIdx = 0;
1586 for (i = 1; i < ARRAY_COUNT(playerData->partners); i++) {
1588 if (playerData->partners[partnerId].enabled) {
1591 popup->enabled[entryIdx] = true;
1592 popup->userIndex[entryIdx] = partnerId;
1593 popup->nameMsg[entryIdx] = prop->nameMsg;
1594 popup->descMsg[entryIdx] = prop->battleDescMsg;
1595 popup->value[entryIdx] = playerData->partners[partnerId].level;
1596 if (playerData->curPartner == partnerId) {
1598 popup->enabled[entryIdx] = false;
1599 }
1600 entryIdx++;
1601 }
1602 }
1603 if (battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_PARTNER] < 0) {
1604 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_PARTNER] = 0;
1605 }
1606 popup->popupType = POPUP_MENU_SWITCH_PARTNER;
1607 popup->numEntries = entryIdx;
1608 popup->initialPos = MenuIndexFromPartnerID[playerData->curPartner] - 1;
1609 popup->dipMode = 0;
1610 popup->titleNumber = 0;
1614 break;
1616 switch(popup->result) {
1618 // do nothing while player is choosing from menu
1619 break;
1622 break;
1628 break;
1629 default:
1630 battleStatus->cancelTargetMenuSubstate = BTL_SUBSTATE_CHANGE_PARTNER_TARGET_CANCEL;
1631 battleStatus->acceptTargetMenuSubstate = BTL_SUBSTATE_CHANGE_PARTNER_TARGET_CHOSEN;
1632 battleStatus->lastSelectedPartner = popup->userIndex[popup->result - 1];
1634 battleStatus->selectedMoveID = MOVE_CHANGE_PARTNER;
1635 battleStatus->curTargetListFlags = TARGET_FLAG_2;
1636 battleStatus->moveArgument = battleStatus->lastSelectedPartner;
1637 battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_PARTNER] = popup->result - 1;
1642 break;
1643 }
1644 break;
1646 if ((battleStatus->curButtonsPressed & BUTTON_B) && popup->result == POPUP_RESULT_CHOOSING) {
1651 } else {
1653 if (btl_main_menu_update() != 0) {
1654 gBattleSubState = battleStatus->acceptTargetMenuSubstate;
1657 }
1658 }
1659 break;
1662 if (btl_main_menu_update() != 0) {
1664 }
1665 break;
1671 break;
1676 break;
1680 if (popup->result != POPUP_RESULT_INVALID) {
1684 }
1685 break;
1686 }
1687}
void btl_init_menu_items(void)
Definition 190B20.c:601
void btl_check_can_change_partner(void)
Definition 190B20.c:566
s32 MenuIndexFromPartnerID[]
Definition 5B320.c:316
PartnerPopupProperties gPartnerPopupProperties[]
Definition 5B320.c:331
void create_battle_popup_menu(PopupMenu *popup)
void flush_popup_menu(void)
void show_popup_menu(void)
@ AC_MODE_TUTORIAL
Definition action_cmd.h:62
void btl_main_menu_resume_choose(void)
void btl_main_menu_destroy(void)
void btl_main_menu_restore_choose(void)
s8 BattleMenu_CurPos
s32 BattleMenu_ChooseDelay
#define MENU_DIPPING_DELAY
Definition battle_menu.h:8
IconHudScriptPair gItemHudScripts[]
s32 MovesOptionNames[24]
Definition menu_moves.c:55
void btl_submenu_moves_restore_locked(void)
Definition menu_moves.c:249
s8 ShowingErrorMessage
Definition menu_strats.c:54
s32 MovesOptionCount
Definition menu_moves.c:65
s32 MovesOptionIndices[24]
Definition menu_moves.c:61
void btl_submenu_moves_resume_choose(void)
Definition menu_moves.c:167
IconHudScriptPair StarPowersHudScripts
s32 btl_submenu_moves_update(void)
Definition menu_moves.c:254
s32 WheelOptionEnabled[]
s32 WheelOptionName[]
s32 MovesOptionEnabled[24]
Definition menu_moves.c:62
void btl_main_menu_init(void)
void btl_submenu_moves_destroy(void)
Definition menu_moves.c:138
s32 btl_main_menu_update(void)
s32 BattleMenu_SwapDelay
void btl_submenu_strats_restore_choose(void)
HudScript * MovesOptionHudScripts[24]
Definition menu_moves.c:52
s32 StratsOptionNames[]
Definition menu_strats.c:38
s32 MovesOptionBPCosts[24]
Definition menu_moves.c:60
s32 MovesOptionDiscounts[24]
Definition menu_moves.c:58
s32 UsingSpiritsSubmenu
Definition menu_moves.c:82
s32 WheelOptionError[]
s32 LeftJustMenuMessages[]
s32 WheelOptionSubmenu[]
s32 StratsOptionError[]
Definition menu_strats.c:42
IconHudScriptPair StrategiesHudScripts
s8 MovesOptionSortPriority[24]
Definition menu_moves.c:63
void btl_submenu_moves_restore_choose(void)
Definition menu_moves.c:207
s8 BattleMenu_HomePos
void btl_submenu_strats_restore_locked(void)
void btl_submenu_moves_hide(void)
Definition menu_moves.c:134
s32 StratsOptionMessage[]
Definition menu_strats.c:41
HudScript * StratsOptionHudScripts[]
Definition menu_strats.c:36
s32 MovesPrevSelected
Definition menu_moves.c:46
s32 MovesOptionDesc[24]
Definition menu_moves.c:56
IconHudScriptPair PartnerHudScripts[]
#define MENU_CHANGE_DELAY
Definition battle_menu.h:7
void btl_main_menu_restore_submenu(void)
s32 StratsPrevSelected
Definition menu_strats.c:34
void btl_main_menu_hide(void)
void btl_submenu_moves_init(void)
Definition menu_moves.c:94
HudScript * WheelOptionHudScript[]
b32 btl_partner_can_act(void)
IconHudScriptPair ItemsHudScripts
void btl_submenu_strats_hide(void)
void btl_submenu_strats_destroy(void)
s32 BattleMenu_WheelBase
s32 StratsOptionEnabled[]
Definition menu_strats.c:40
IconHudScriptPair DoNothingHudScripts
s32 BattleMenu_PrevSelected
IconHudScriptPair StarPowerMovesHudScripts[]
PopupMenu BattlePopupMenu
s32 WheelOptionCount
s8 MovesOptionError[24]
Definition menu_moves.c:64
s32 StratsOptionMenuTypes[]
Definition menu_strats.c:39
b32 btl_player_can_act(void)
void btl_menu_strats_init(void)
Definition menu_strats.c:66
IconHudScriptPair FleeHudScripts
b32 BattleMenu_ShowSwapIcons
s32 SelectedMovesIndex
Definition menu_moves.c:83
s32 btl_submenu_strats_update(void)
s32 StratsOptionCount
Definition menu_strats.c:43
s32 MovesOptionDisplayCosts[24]
Definition menu_moves.c:57
s32 MovesOptionDiscountColors[24]
Definition menu_moves.c:59
s32 CenteredBattleMessages[]
void btl_submenu_strats_resume_choose(void)
u32 pressedButtons[4]
ActorState state
Vec3f homePos
Vec3f curPos
#define rand_int
#define clamp_angle
@ BUTTON_B
Definition enums.h:2775
@ BUTTON_Z
Definition enums.h:2774
@ BS_FLAGS1_TUTORIAL_BATTLE
Definition enums.h:3627
@ BS_FLAGS1_PLAYER_IN_BACK
Definition enums.h:3622
@ BS_FLAGS1_MENU_OPEN
Definition enums.h:3599
@ BS_FLAGS1_YIELD_TURN
Definition enums.h:3623
@ BTL_MSG_CANT_SWITCH
Definition enums.h:3782
@ BTL_MSG_CANT_MOVE
Definition enums.h:3783
@ BTL_MSG_NO_JUMP_TARGET
Definition enums.h:3769
@ BTL_MSG_NO_ITEM_TARGET
Definition enums.h:3771
@ BTL_MSG_CANT_SELECT_NOW
Definition enums.h:3774
@ BTL_MSG_CANT_SELECT_NOW_ALT
Definition enums.h:3786
@ BTL_MSG_NO_HAMMER_TARGET
Definition enums.h:3770
@ POPUP_MENU_DOUBLE_DIP
Definition enums.h:3179
@ POPUP_MENU_USE_ITEM
Definition enums.h:3165
@ POPUP_MENU_TRIPLE_DIP
Definition enums.h:3180
@ POPUP_MENU_SWITCH_PARTNER
Definition enums.h:3166
@ WINDOW_UPDATE_9
Definition enums.h:4904
@ WINDOW_UPDATE_HIDE
Definition enums.h:4897
@ BTL_MENU_TYPE_INVALID
Definition enums.h:3825
@ BTL_MENU_TYPE_RUN_AWAY
Definition enums.h:3829
@ BTL_MENU_TYPE_CHANGE_PARTNER
Definition enums.h:3831
@ BTL_MENU_TYPE_STAR_POWERS
Definition enums.h:3834
@ BTL_MENU_TYPE_ITEMS
Definition enums.h:3828
@ BTL_MENU_TYPE_ACT_LATER
Definition enums.h:3836
@ BTL_MENU_TYPE_DEFEND
Definition enums.h:3830
@ BTL_MENU_TYPE_STRATEGIES
Definition enums.h:3833
@ BTL_MENU_TYPE_DO_NOTHING
Definition enums.h:3835
@ BS_FLAGS2_CAN_FLEE
Definition enums.h:3642
@ BS_FLAGS2_PARTNER_TURN_USED
Definition enums.h:3639
@ ITEM_TYPE_FLAG_BATTLE_USABLE
Definition enums.h:1861
@ BTL_CAM_DEFAULT
Definition enums.h:4409
@ TARGET_FLAG_PRIMARY_ONLY
Definition enums.h:1889
@ TARGET_FLAG_2
Definition enums.h:1876
@ POPUP_RESULT_CANCEL
Definition enums.h:3212
@ POPUP_RESULT_CHOOSING
Definition enums.h:3211
@ POPUP_RESULT_INVALID
Definition enums.h:3209
@ BATTLE_STATE_RUN_AWAY
Definition enums.h:3688
@ BATTLE_STATE_SWITCH_TO_PARTNER
Definition enums.h:3675
@ BATTLE_STATE_DEFEND
Definition enums.h:3689
@ BATTLE_STATE_PLAYER_MOVE
Definition enums.h:3682
@ BATTLE_STATE_END_PLAYER_TURN
Definition enums.h:3686
@ BATTLE_STATE_NONE
Definition enums.h:3664
@ BATTLE_STATE_SELECT_TARGET
Definition enums.h:3681
@ BATTLE_STATE_CHANGE_PARTNER
Definition enums.h:3692
@ ABILITY_BERSERKER
Definition enums.h:457
@ SOUND_PARTNER_SWAP_BATTLE_POS
Definition enums.h:563
@ SOUND_MENU_ERROR
Definition enums.h:936
@ BTL_MENU_ENABLED_SMASH
Definition enums.h:3842
@ BTL_MENU_ENABLED_ITEMS
Definition enums.h:3843
@ BTL_MENU_ENABLED_STAR_POWERS
Definition enums.h:3846
@ BTL_MENU_ENABLED_JUMP
Definition enums.h:3841
@ BTL_MENU_ENABLED_STRATEGIES
Definition enums.h:3845
@ ACTOR_PLAYER
Definition enums.h:2118
@ ACTOR_FLAG_SHOW_STATUS_ICONS
Definition enums.h:3377
@ ACTOR_FLAG_USING_IDLE_ANIM
Definition enums.h:3376
@ BTL_MENU_IDX_PARTNER
Definition enums.h:3816
@ BTL_MENU_IDX_STRATEGY
Definition enums.h:3818
@ BTL_MENU_IDX_SMASH
Definition enums.h:3813
@ BTL_MENU_IDX_STAR_POWER
Definition enums.h:3817
@ BTL_MENU_IDX_MAIN
Definition enums.h:3811
@ BTL_MENU_IDX_JUMP
Definition enums.h:3812
@ BTL_MENU_IDX_DIP
Definition enums.h:3815
@ BTL_MENU_IDX_ITEMS
Definition enums.h:3814
@ WIN_BTL_STRATS_MENU
Definition enums.h:4832
@ WIN_BTL_STRATS_TITLE
Definition enums.h:4833
void btl_show_variable_battle_message(s32, s32, s32)
void hide_popup_menu(void)
void set_window_update(s32 panelID, s32)
Definition windows.c:434
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:737
void btl_cam_move(s16)
Definition camera.c:1953
f32 sin_rad(f32 x)
Definition 43F0.c:713
void btl_set_state(s32 battleState)
s32 btl_is_popup_displayed(void)
HudScript * disabled
HudScript * enabled
IconHudScriptPair HammerHudScripts[]
void btl_init_menu_hammer(void)
s32 BattleMenu_CategoryForSubmenu[]
Definition menu_player.c:83
void btl_state_update_player_menu(void)
IconHudScriptPair BootsHudScripts[]
Definition menu_player.c:98
s32 get_player_anim_for_status(s32 animID)
Definition 190B20.c:1697
void btl_init_menu_boots(void)
void sfx_play_sound(s32 soundID)
#define DEG_TO_RAD(deg)
Definition macros.h:145
@ BTL_SUBSTATE_INIT
Definition states.h:8
s32 gBattleState
Definition battle.cpp:13
s32 PartnerIDFromMenuIndex[12]
Definition 5B320.c:300
GameStatus * gGameStatusPtr
Definition main_loop.c:31
s32 gBattleSubState
Definition battle.cpp:17

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 1689 of file menu_player.c.

1689 {
1690 switch (gBattleSubState) {
1693 break;
1721 break;
1727 break;
1730 break;
1733 break;
1736 break;
1739 break;
1740 }
1741}
void btl_main_menu_draw(void)

Referenced by btl_draw_ui().

Variable Documentation

◆ BattleMenu_CategoryForSubmenu

◆ BootsHudScripts

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

Definition at line 98 of file menu_player.c.

Referenced by btl_state_update_player_menu().

◆ HammerHudScripts

IconHudScriptPair HammerHudScripts[]
Initial value:
= {
}
HudScript HES_MenuHammer1
HudScript HES_MenuHammer2
HudScript HES_MenuHammer1Disabled
HudScript HES_MenuHammer3Disabled
HudScript HES_MenuHammer2Disabled
HudScript HES_MenuHammer3

Definition at line 105 of file menu_player.c.

Referenced by btl_state_update_player_menu().