Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
btl_states_menus.c
Go to the documentation of this file.
1#include "battle/battle.h"
3
4#define MENU_CAPACITY 6
5
6#define WHEEL_SPACING (28.0f)
7#define WHEEL_RADIUS (87.0f)
8
9#define REEL_APPEAR_TIME (3)
10
23
25
36
47extern HudScript HES_Bow;
49extern HudScript HES_Watt;
57
64
71
74
77
80extern HudScript HES_Mamar;
96
105
108
115extern HudScript HES_SwapZ;
116
118
120
135
154
156
158
160
175
190
193BSS s32 BattleMenu_TargetNameOffsetX; // used to animate the position of the target name box
194BSS s32 BattleMenu_SwapDelay; // delay before the player and partner can swap after the main menu is opened
224
233
240
245
251
256
261
279
283 s32 i;
284 f32 x, y;
285 s32 l, t;
286
287 switch (BattleMenuState) {
298
299 for (i = 0; i < WheelOptionCount; i++) {
306
313 }
314
321
326 hud_element_set_tint(hid, 0, 91, 127);
331
336 hud_element_set_tint(hid, 0, 91, 127);
341
346 hud_element_set_tint(hid, 255, 255, 255);
348 hud_element_set_transform_rotation(hid, 0.0f, 0.0f, -45.0f);
353
357 hud_element_set_tint(hid, 255, 255, 255);
361
367
373
383 break;
386
388 default:
390 break;
391 case 1:
392 // show the projector beam
395 // last tick
397 break;
398 case 0:
402 for (i = 0; i < WheelOptionCount; i++) {
403 x = 0.0f;
404 y = 0.0f;
406
409 hid = HID_OptionIcons[i];
412
413 hid = HID_Spotlights[i];
417 }
418
419 x = 0.0f;
420 y = 0.0f;
422
431 break;
432 }
433 break;
435 if (battleStatus->curButtonsPressed & BUTTON_A) {
439 } else {
443 }
444 } else {
447 if ((battleStatus->curButtonsHeld & (BUTTON_STICK_LEFT | BUTTON_STICK_UP)) &&
449 {
451 }
452 if ((battleStatus->curButtonsHeld & (BUTTON_STICK_RIGHT | BUTTON_STICK_DOWN)) &&
454 {
456 }
457 }
458
462 }
463 }
464 break;
466 BattleMenuAlpha = 100;
484 break;
488 break;
491 break;
492 }
495 break;
496 }
497 return 0;
498}
499
501 s32 hid;
502 s32 opacity;
503 f32 theta;
505 f32 x, y;
506 f32 scale;
507 s32 i;
508
509 switch (BattleMenuState) {
513 hud_element_set_transform_rotation(hid, 0.0f, 0.0f, 0.0f);
521 break;
527 opacity = (BattleMenu_ReelAlpha * BattleMenuAlpha) / 255;
530
537 }
538 } else if (BattleMenu_WheelAngle < theta) {
543 }
544 } else { // BattleMenu_WheelAngle == theta
546 }
547
548 if (wheelDoneMoving) {
551 } else {
553 }
554
555 // draw the spotlights
556 for (i = 0; i < WheelOptionCount; i++) {
557 // draw the series of base spotlights under each option
559 x = 0.0f;
560 y = 0.0f;
564
565 hid = HID_Spotlights[i];
568 hud_element_set_alpha(hid, (opacity * 150) / 255);
569
570 if (wheelDoneMoving && theta == (2 * WHEEL_SPACING)) {
572 } else {
574 }
576
577 // draw the current selection highlight (if aligned)
579 x = 0.0f;
580 y = 0.0f;
584
588 hud_element_set_alpha(hid, (opacity * 180) / 255);
590
591 if (!wheelDoneMoving) {
593 } else {
595 }
597 }
598 }
600
601 // calculate beam narrowing
602 scale = (fabsf(fabsf((BattleMenu_WheelAngle - theta) * (45.0 / WHEEL_SPACING)) - 22.5) / 22.5) + 0.01;
603 if (wheelDoneMoving) {
604 scale = 1.0f;
605 }
606
609 hud_element_set_transform_rotation(hid, 0.0f, 0.0f, -43.0f);
611 hud_element_set_transform_scale(hid, 1.0f, 1.8f, 1.0f);
612 hud_element_set_alpha(hid, (opacity * 200) / 255);
615
618 scale = (BattleMenu_WheelAngle - theta) * (45.0 / WHEEL_SPACING);
619 hud_element_set_transform_rotation(hid, 0.0f, 0.0f, -scale);
622 hud_element_set_alpha(hid, (opacity * 254) / 255);
625
627 hud_element_set_alpha(hid, (opacity * 254) / 255);
631
632 // draw the icons for each option
633 for (i = 0; i < WheelOptionCount; i++) {
635 x = 0.0f;
636 y = 0.0f;
640
641 btl_draw_prim_quad(0, 0, 0, 0, x - 12, y - 12, 24, 24);
642 hid = HID_OptionIcons[i];
644 hud_element_set_alpha(hid, (opacity * 180) / 255);
646 hud_element_set_alpha(hid, opacity);
647 }
649 }
650
651 // draw the names for each option
652 if (wheelDoneMoving) {
653 x = BattleMenu_BasePosX + 20;
654 y = BattleMenu_BasePosY - 34;
655 btl_draw_prim_quad(0, 0, 0, 0, x + 26, y, 48, 16);
657 }
658
661 }
662
665 hud_element_set_alpha(hid, (opacity * 200) / 255);
667 hid = HID_SwapZ;
668 hud_element_set_alpha(hid, opacity);
671 hud_element_set_alpha(hid, opacity);
674 hud_element_set_alpha(hid, opacity);
676 }
677 break;
678 }
679}
680
683 Actor* player = battleStatus->playerActor;
684
686 return FALSE;
687 } else {
688 s8 debuff = player->debuff;
690
691 if (player->koStatus == STATUS_KEY_KO) {
693 }
694 if (debuff == STATUS_KEY_POISON) {
696 }
697 if (debuff == STATUS_KEY_SHRINK) {
699 }
700 if (debuff == STATUS_KEY_SLEEP) {
702 }
703 if (debuff == STATUS_KEY_UNUSED) {
705 }
706 if (debuff == STATUS_KEY_DIZZY) {
708 }
709 if (debuff == STATUS_KEY_PARALYZE) {
711 }
712 if (debuff == STATUS_KEY_FROZEN) {
714 }
715 if (debuff == STATUS_KEY_STOP) {
717 }
718 if (player->stoneStatus == STATUS_KEY_STONE) {
720 }
721 if (battleStatus->outtaSightActive) {
723 }
724 return !playerCantMove;
725 }
726}
727
730 Actor* partner = battleStatus->partnerActor;
733
735 return FALSE;
736 }
737
740
741 if (partner->koStatus == STATUS_KEY_KO) {
743 }
746 }
749 }
752 }
755 }
758 }
761 }
764 }
765 if (partner->stoneStatus == STATUS_KEY_STONE) {
767 }
768 return !partnerCantMove;
769}
BSS s32 PopupMenu_SelectedIndex
BSS HudElemID HID_ProjectorReelB
HudScript HES_Muskular
HudScript HES_BombetteDisabled
void btl_main_menu_resume_choose(void)
HudScript HES_MenuBoots2Disabled
void btl_main_menu_destroy(void)
HudScript HES_MoveGreenOrbDisabled
BSS s8 BattleMenu_MaxIdx
BSS s32 WheelOptionEnabled[6]
BSS HudElemID HID_ProjectorReelA
void btl_main_menu_restore_choose(void)
HudScript HES_MenuHammer1
BSS MsgID WheelOptionName[6]
HudScript HES_MuskularDisabled
BSS b32 BattleMenu_ShowSwapIcons
HudScript HES_Parakarry
HudScript HES_MoveBlueOrb
BSS s16 BattleMenu_ReelAlpha
HudScript HES_MenuHammer2
HudScript HES_MenuDefendDisabled
HudScript HES_Mamar
BSS HudElemID HID_HighlightSpot
HudScript HES_HandPointDownLoop
Definition 5B320.c:173
HudScript HES_MenuHammer1Disabled
BSS s16 BattleMenuAlpha
IconHudScriptPair StarPowersHudScripts
HudScript HES_MoveRedOrbDisabled
BattleMenuStates
@ BTL_MENU_STATE_SHOW_REEL
@ BTL_MENU_STATE_ERROR_DONE
@ BTL_MENU_STATE_CREATE
@ BTL_MENU_STATE_HIDE_HOLD
@ BTL_MENU_STATE_RESTORE
@ BTL_MENU_STATE_ERROR_SHOW
@ BTL_MENU_STATE_RESUME_SUBMENU
@ BTL_MENU_STATE_SUBMENU_OPEN
@ BTL_MENU_STATE_HIDE_INIT
@ BTL_MENU_STATE_CHOOSING
HudScript HES_MisstarDisabled
HudScript HES_HandPointLeftLoop
Definition 5B320.c:234
HudScript HES_Misstar
HudScript HES_MenuHammer3Disabled
HudScript HES_MenuHammer2Disabled
HudScript HES_PartnerADisabled
HudScript HES_BowDisabled
HudScript HES_SwapArrowRight
BSS s8 BattleMenu_CurPos
HudScript HES_ProjectorBeam
#define REEL_APPEAR_TIME
BSS s32 BattleMenu_TargetHudElems[MAX_ENEMY_ACTORS]
HudScript HES_LakilesterDisabled
void btl_main_menu_init(void)
s32 btl_main_menu_update(void)
BSS HudElemID HID_SwapArrowRight
HudScript HES_MamarDisabled
HudScript HES_MenuStrategiesDisabled
HudScript HES_EldstarDisabled
HudScript HES_SushieDisabled
HudScript HES_SwapArrowLeft
HudScript HES_MenuBoots1Disabled
HudScript HES_Kalmar
BSS s32 BattleMenu_BasePosY
HudScript HES_ProjectorReel
HudScript HES_Eldstar
BSS HudElemID HID_Spotlights[6]
HudScript HES_KooperDisabled
HudScript HES_GoombarioDisabled
HudScript HES_MenuDoNothing
BSS HudElemID HID_SwapZ
HudScript HES_MenuFlee
#define WHEEL_SPACING
HudScript HES_MenuItemDisabled
HudScript HES_MenuBoots3Disabled
s32 LeftJustMenuMessages[]
HudScript HES_MenuPouch
HudScript HES_ParakarryDisabled
BSS s32 BattleMenu_ChooseDelay
IconHudScriptPair StrategiesHudScripts
HudScript HES_MoveDiamond
BSS s32 WheelOptionSubmenu[6]
HudScript HES_KalmarDisabled
BSS PopupMenu BattlePopupMenu
HudScript HES_MenuStrategies
BSS s32 BattleMenu_SwapDelay
BSS s32 BattleMenu_BasePosX
HudScript HES_StarBeam
BSS f32 BattleMenu_WheelAngle
HudScript HES_MoveBlueOrbDisabled
HudScript HES_PeachBeamDisabled
BSS s32 BattleMenu_WheelBase
BSS s8 BattleMenu_PrevPos
HudScript HES_MenuHammer3
HudScript HES_SwapBackground
BSS s32 WheelOptionCount
HudScript HES_PeachBeam
HudScript HES_MenuItem
BSS s16 BattleMenu_ReelHidePercent
BSS HudElemID HID_ProjectorBeam
HudScript HES_Partner0Disabled
HudScript HES_MenuDefend
HudScript HES_WattDisabled
HudScript HES_MoveDiamond_disabled
IconHudScriptPair PartnerHudScripts[]
HudScript HES_ProjectorSpot
HudScript HES_Klevar
HudScript HES_SwapZ
void btl_main_menu_restore_submenu(void)
HudScript HES_Sushie
void btl_main_menu_hide(void)
#define WHEEL_RADIUS
BSS HudElemID HID_SwapBackground
BSS f32 BattleMenu_WheelSpeed
HudScript HES_MenuPouchDisabled
BSS s32 BattleMenu_TargetNameOffsetX
b32 btl_partner_can_act(void)
HudScript HES_Partner0
HudScript HES_StarBeamDisabled
BSS s32 BattleMenu_PrevSelected
#define MENU_CAPACITY
IconHudScriptPair ItemsHudScripts
HudScript HES_MenuBoots2
HudScript HES_PartnerA
BSS s32 BattleMenu_TargetPointerAlpha
HudScript HES_MenuBoots3
BSS s8 BattleMenu_ErrorCode
HudScript HES_MoveGreenOrb
BSS s8 BattleMenu_ReelAppearTimer
HudScript HES_Kooper
HudScript HES_MenuStarPowerDisabled
IconHudScriptPair DoNothingHudScripts
HudScript HES_Skolar
HudScript HES_SkolarDisabled
HudScript HES_YellowArrow
IconHudScriptPair StarPowerMovesHudScripts[]
HudScript HES_MoveRedOrb
void btl_main_menu_draw(void)
BSS HudScript * WheelOptionHudScript[6]
HudScript HES_Watt
b32 btl_player_can_act(void)
IconHudScriptPair FleeHudScripts
HudScript HES_MenuFleeDisabled
BSS s32 WheelOptionError[6]
BSS s8 BattleMenu_MinIdx
HudScript HES_MenuBoots1
BSS b8 BattleMenu_WheelMoving
BSS s8 BattleMenu_HomePos
HudScript HES_Lakilester
HudScript HES_MenuDoNothingDisabled
HudScript HES_KlevarDisabled
HudScript HES_Bow
HudScript HES_Bombette
HudScript HES_Goombario
BSS HudElemID HID_SwapArrowLeft
BSS HudElemID HID_OptionIcons[6]
HudScript HES_MenuStarPower
BSS s8 BattleMenuState
s32 CenteredBattleMessages[]
s32 HudElemID
s32 b32
s8 b8
s32 MsgID
#define draw_msg
@ BUTTON_A
Definition enums.h:2776
@ BUTTON_STICK_UP
Definition enums.h:2777
@ BUTTON_STICK_DOWN
Definition enums.h:2778
@ BUTTON_STICK_LEFT
Definition enums.h:2779
@ BUTTON_STICK_RIGHT
Definition enums.h:2780
@ BS_FLAGS1_TUTORIAL_BATTLE
Definition enums.h:3627
@ MSG_PAL_35
Definition enums.h:5043
@ BS_FLAGS2_PLAYER_TURN_USED
Definition enums.h:3638
@ BS_FLAGS2_PARTNER_TURN_USED
Definition enums.h:3639
@ BS_FLAGS2_PEACH_BATTLE
Definition enums.h:3643
@ STATUS_KEY_PARALYZE
Definition enums.h:2806
@ STATUS_KEY_FROZEN
Definition enums.h:2808
@ STATUS_KEY_KO
Definition enums.h:2814
@ STATUS_KEY_SLEEP
Definition enums.h:2807
@ STATUS_KEY_UNUSED
Definition enums.h:2804
@ STATUS_KEY_STONE
Definition enums.h:2813
@ STATUS_KEY_STOP
Definition enums.h:2809
@ STATUS_KEY_SHRINK
Definition enums.h:2811
@ STATUS_KEY_DIZZY
Definition enums.h:2805
@ STATUS_KEY_POISON
Definition enums.h:2810
@ SOUND_MENU_CHANGE_TAB
Definition enums.h:702
@ SOUND_MENU_NEXT
Definition enums.h:703
@ SOUND_MENU_ERROR
Definition enums.h:936
@ ACTOR_FLAG_NO_ATTACK
Skip attack turn.
Definition enums.h:3373
@ PARTNER_NONE
Definition enums.h:2919
f32 fabsf(f32 f)
void btl_show_battle_message(s32 messageIndex, s32 duration)
void btl_draw_prim_quad(u8 r, u8 g, u8 b, u8 a, u16 left, u16 top, u16 arg6, u16 arg7)
Definition 190B20.c:2663
s32 btl_is_popup_displayed(void)
void add_vec2D_polar(f32 *x, f32 *y, f32 r, f32 theta)
Definition 43F0.c:683
void hud_element_draw_complex_hud_next(s32 hid)
void hud_element_set_scale(s32 index, f32 scale)
void hud_element_set_alpha(s32 id, s32 opacity)
void hud_element_set_render_depth(s32 id, s32 z)
void hud_element_create_transform_B(s32 id)
void hud_element_set_transform_pos(s32 id, f32 x, f32 y, f32 z)
void hud_element_set_tint(s32 id, s32 r, s32 g, s32 b)
void hud_element_set_transform_rotation(s32 id, f32 x, f32 y, f32 z)
void hud_element_draw_complex_hud_first(s32 hid)
void hud_element_set_render_pos(s32 id, s32 x, s32 y)
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.
void hud_element_draw_clipped(s32 id)
void hud_element_set_transform_scale(s32 id, f32 x, f32 y, f32 z)
void hud_element_free(s32 id)
@ HUD_ELEMENT_FLAG_DISABLED
Definition hud_element.h:72
@ HUD_ELEMENT_FLAG_MANUAL_RENDER
Definition hud_element.h:78
@ HUD_ELEMENT_FLAG_FILTER_TEX
Definition hud_element.h:86
s32 HudScript[]
Definition hud_element.h:9
void sfx_play_sound(s32 soundID)
#define MAX_ENEMY_ACTORS
Definition macros.h:83
#define BSS
Definition macros.h:7
#define SQ(x)
Definition macros.h:178
BattleStatus gBattleStatus
Definition battle.cpp:14