Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
jump.c
Go to the documentation of this file.
1#include "common.h"
2#include "battle/action_cmd.h"
3
4#define NAMESPACE action_command_jump
5
6extern s32 actionCmdTableJump[];
7
8// indices into ActionCommandStatus::hudElements for this action command
9enum {
12};
13
14API_CALLABLE(N(init)) {
16 HudElemID hid;
17
21
24 return ApiStatus_DONE2;
25 }
26
29 acs->hudPosX = -48;
30 acs->state = 0;
31 acs->wrongButtonPressed = FALSE;
32 acs->hudPosY = 80;
33
35 acs->hudElemIDs[HIDX_BUTTON] = hid;
39 hud_element_set_alpha(hid, 255);
40
42 acs->hudElemIDs[HIDX_RIGHT_ON] = hid;
46 hud_element_set_alpha(hid, 255);
47
48 return ApiStatus_DONE2;
49}
50
51API_CALLABLE(N(start)) {
53 BattleStatus* battleStatus = &gBattleStatus;
54 Bytecode* args = script->ptrReadPos;
55 HudElemID hid;
56
57 if (battleStatus->actionCommandMode == AC_MODE_NOT_LEARNED) {
58 battleStatus->actionQuality = 0;
59 return ApiStatus_DONE2;
60 }
61
63 acs->prepareTime = evt_get_variable(script, *args++);
64 acs->difficulty = evt_get_variable(script, *args++);
66 acs->wrongButtonPressed = FALSE;
67 battleStatus->actionQuality = 0;
68
69 hid = acs->hudElemIDs[HIDX_BUTTON];
70 acs->hudPosX = 50;
71 battleStatus->flags1 &= ~BS_FLAGS1_FREE_ACTION_COMMAND;
72 battleStatus->flags1 &= ~BS_FLAGS1_2000;
74 if (acs->showHud) {
76 }
77
78 acs->state = AC_STATE_START;
81
82 return ApiStatus_DONE2;
83}
84
85void N(update)(void) {
87 BattleStatus* battleStatus = &gBattleStatus;
88 HudElemID hid;
89 s32 successWindow;
90
91 switch (acs->state) {
92 case AC_STATE_INIT:
93 if (battleStatus->actionCommandMode == AC_MODE_TUTORIAL) {
95 }
97 break;
98 case AC_STATE_APPEAR:
99 if (battleStatus->actionCommandMode == AC_MODE_TUTORIAL) {
101 }
102
103 acs->hudPosX += 20;
104 if (acs->hudPosX > 50) {
105 acs->hudPosX = 50;
106 }
107
108 hid = acs->hudElemIDs[HIDX_BUTTON];
110 if (acs->showHud) {
112 }
113
114 if (acs->autoSucceed) {
115 hid = acs->hudElemIDs[HIDX_RIGHT_ON];
116 hud_element_set_render_pos(hid, acs->hudPosX + 50, acs->hudPosY);
117 if (acs->showHud) {
119 }
120 }
121 break;
122 case AC_STATE_START:
123 // this state is the time before valid input is allowed
124
125 if (battleStatus->actionCommandMode == AC_MODE_TUTORIAL) {
127 }
128
129 // show the A button being pressed two frames before input is allowed
130 successWindow = battleStatus->actionCmdDifficultyTable[acs->difficulty];
131 if (((acs->prepareTime - successWindow) - 2) <= 0) {
133 }
134 // inputs during this state will cause the action to fail
135 if ((battleStatus->curButtonsPressed & BUTTON_A) && !acs->autoSucceed) {
136 acs->wrongButtonPressed = TRUE;
137 battleStatus->actionResult = ACTION_RESULT_EARLY;
138 }
139 // continue until we begin the window for valid input
140 if ((acs->prepareTime - successWindow) > 0) {
141 acs->prepareTime--;
142 break;
143 }
144
145 acs->stateTimer = battleStatus->actionCmdDifficultyTable[acs->difficulty];
146 battleStatus->actionQuality = AC_QUALITY_FAILED;
147 acs->state = AC_STATE_ACTIVE;
148
149 // fallthrough
150 case AC_STATE_ACTIVE:
151 if (battleStatus->actionCommandMode == AC_MODE_TUTORIAL) {
153 }
154 if (battleStatus->actionCommandMode >= AC_MODE_TUTORIAL) {
155 if (acs->stateTimer == 0) {
156 break;
157 }
158 } else {
159 if (battleStatus->actionQuality >= 0) {
160 hid = acs->hudElemIDs[HIDX_BUTTON];
161 if (acs->showHud) {
163 }
164 }
165 }
166
167 // valid input is allowed during this state
168 if (battleStatus->actionQuality < 0) {
169 if (((battleStatus->curButtonsPressed & BUTTON_A) && !acs->wrongButtonPressed) || acs->autoSucceed) {
170 battleStatus->actionQuality = 1;
171 battleStatus->actionResult = ACTION_RESULT_SUCCESS;
173 }
174 }
175
176 if (acs->stateTimer == 0) {
177 if (battleStatus->actionQuality == 1) {
179 }
180 if (battleStatus->actionCommandMode == AC_MODE_TUTORIAL) {
182 }
183 acs->stateTimer = 5;
184 acs->state = AC_STATE_DISPOSE;
185 break;
186 }
187 acs->stateTimer--;
188 break;
189 case AC_STATE_DISPOSE:
190 if (acs->stateTimer != 0) {
191 acs->stateTimer--;
192 break;
193 }
195 break;
196 }
197}
198
205
BSS ActionCommandStatus gActionCommandStatus
Definition action_cmd.c:91
void action_command_free(void)
Definition action_cmd.c:446
void increment_action_command_attempt_count(void)
Definition action_cmd.c:641
s32 adjust_action_command_difficulty(s32 difficultyLevel)
Definition action_cmd.c:101
void increment_action_command_success_count(void)
Definition action_cmd.c:655
void action_command_init_status(void)
Definition action_cmd.c:256
#define AC_QUALITY_FAILED
Definition action_cmd.h:66
HudScript HES_AButton
HudElemID hudElemIDs[16]
Definition action_cmd.h:83
@ AC_STATE_APPEAR
Definition action_cmd.h:35
@ AC_STATE_DISPOSE
Definition action_cmd.h:38
@ AC_STATE_INIT
Definition action_cmd.h:34
@ AC_STATE_ACTIVE
Definition action_cmd.h:37
@ AC_STATE_START
Definition action_cmd.h:36
HudScript HES_RightOn
HudScript HES_AButtonDown
@ AC_MODE_TUTORIAL
Definition action_cmd.h:62
@ AC_MODE_NOT_LEARNED
Definition action_cmd.h:60
s32 actionCmdTableJump[]
Definition action_cmd.c:28
@ HIDX_BUTTON
Definition jump.c:10
@ HIDX_RIGHT_ON
Definition jump.c:11
void N free(void)
Definition jump.c:206
void N update(void)
Definition jump.c:85
void N draw(void)
Definition jump.c:199
s32 HudElemID
@ ACTION_COMMAND_JUMP
Definition enums.h:3473
@ BUTTON_A
Definition enums.h:2790
@ BS_FLAGS1_2000
Definition enums.h:3581
@ DEMO_BTL_FLAG_ENABLED
Definition enums.h:3542
@ ACTION_RESULT_EARLY
Definition enums.h:1966
@ ACTION_RESULT_SUCCESS
Definition enums.h:1968
@ ACTION_RESULT_FAIL
Definition enums.h:1967
#define ApiStatus_DONE2
Definition evt.h:118
s32 Bytecode
Definition evt.h:7
void btl_set_popup_duration(s32 duration)
s32 evt_get_variable(Evt *script, Bytecode var)
Definition evt.c:1689
void hud_element_set_alpha(s32 id, s32 opacity)
void hud_element_set_script(s32 id, HudScript *anim)
void hud_element_set_render_depth(s32 id, s32 z)
void hud_element_set_render_pos(s32 id, s32 x, s32 y)
s32 hud_element_create(HudScript *anim)
Creates a new HUD element and returns its ID.
void hud_element_set_flags(s32 id, s32 flags)
Turns on the given flags.
void hud_element_clear_flags(s32 id, s32 flags)
Turns off the given flags.
void hud_element_draw_clipped(s32 id)
void hud_element_free(s32 id)
@ HUD_ELEMENT_FLAG_DISABLED
Definition hud_element.h:72
@ HUD_ELEMENT_FLAG_80
Definition hud_element.h:78
#define POPUP_MSG_OFF
Definition battle.h:270
#define POPUP_MSG_ON
Definition battle.h:269
s32 * actionCmdDifficultyTable
GameStatus * gGameStatusPtr
Definition main_loop.c:32
BattleStatus gBattleStatus
Definition battle.c:11
void N init(Npc *bombette)
Definition bombette.c:66