Digimon World 3 decomp
The European version, SLES_039.36
Loading...
Searching...
No Matches
card_screen.c
Go to the documentation of this file.
1/* The first object of STSTATUS.PRO, the screen with the party's pages of
2 STSTATUS_createCardScreen and the fader. STSTATUS.PRO was ten objects, about one per
3 screen: each one's jump tables are aligned to 8 from the start of its own
4 rodata, and three of them start 4 bytes past a multiple of 8. Where each
5 object's code starts is only known to be between the function with the
6 last jump table of the object before and the one with its first (or the
7 screen's create function). The data follows the objects' order: each
8 object's tables are with it, and the ones they share with the last. */
9
10#include "menus/field_menu.h"
11
12#define SCENE_TASK Task
13#define SCENE_CHILD FieldMenuScreen
14#define SCENE_CREATE OVL_NAME(createMenu)
15#define SCENE_PRIM_BUFFERS 0x14000
16#define SCENE_OT_SHIFT 3
18#include "shared/start.inc.c"
19
20/* Creates the windows of a screen with the party's pages */
22 s32 i;
23 s32 j;
24 WindowPos *pos;
25 TextWindow **children;
26
27 for (j = 0; j < 3; j++) {
28 pos = &STSTATUS_data.layout[0];
29 windows->pages[j].name = createTextWindow(screen->layer, 1, pos->x, pos->y + j * 46);
30 pos = &STSTATUS_data.layout[1];
31 for (i = 0; i < 5; i++, pos++) {
32 windows->pages[j].labels[i] = createTextWindow(screen->layer, 3, pos->x, pos->y + j * 46);
33 }
34 pos = &STSTATUS_data.layout[6];
35 for (i = 0; i < 5; i++, pos++) {
36 windows->pages[j].values[i] = createTextWindow(screen->layer, 3, pos->x, pos->y + j * 46);
37 }
38 }
39 pos = &STSTATUS_data.layout[12];
40 windows->help = createTextWindow(screen->layer, 1, pos->x, pos->y);
41 windows->help->setLines(windows->help, 2);
42 windows->hint = createTextWindow(screen->layer, 1, pos->x, pos->y + 14);
43 windows->choiceTitle = createTextWindow(screen->layer, 1, 0xB2, 0x2A);
44 for (i = 0; i < 2; i++) {
45 windows->options[i] = createTextWindow(screen->layer, 1, 0xC5, 0x3A + i * 14);
46 }
47 windows->cursor = createCursor(screen->layer, screen->depth - 1, 0xB8, 0x3A);
48 windows->cursor->setVisible(windows->cursor, 0);
49 children = screen->children;
50 for (i = 0; i < screen->childCount - 2; i++, children++) {
51 (*children)->setDepth(*children, screen->depth - 1);
52 }
53}
54
55/* Shows or hides a party member's page: name and five stats (as showPartnerPage) */
56void STSTATUS_showCardPage(PartyScreen *screen, PartyScreenWindows *windows, s32 member, s32 show) {
57 PartnerTotals stats;
58 WindowPos *layout;
59 s32 id;
60 s32 i;
61
62 if (show) {
63 id = GAME.funcs.getPartyMember(member);
64 GAME.funcs.computeStats(id, &stats);
65 windows->pages[member].name->setString(windows->pages[member].name, GAME.funcs.getPartnerStats(id), -1);
66 layout = &STSTATUS_data.layout[1];
67 for (i = 0; i < 5; i++, layout++) {
68 windows->pages[member].labels[i]->setString(windows->pages[member].labels[i],
70 }
71 for (i = 0; i < 5; i++) {
72 windows->pages[member].values[i]->setNumber(windows->pages[member].values[i], 0, stats.stats[STSTATUS_pageStats[i]]);
73 windows->pages[member].values[i]->setRightAlign(windows->pages[member].values[i], 1);
74 }
75 } else {
76 windows->pages[member].name->setVisible(windows->pages[member].name, 0);
77 for (i = 0; i < 5; i++) {
78 windows->pages[member].labels[i]->setVisible(windows->pages[member].labels[i], 0);
79 }
80 for (i = 0; i < 5; i++) {
81 windows->pages[member].values[i]->setVisible(windows->pages[member].values[i], 0);
82 }
83 }
84}
85
86/* Shows or hides the help and the two options with their cursor */
88 s32 i;
89
90 if (show) {
92 for (i = 0; i < 2; i++) {
93 windows->options[i]->setString(windows->options[i], FILE_CACHE.load(TEXT_FILE(TEXT_STATUS)), i + 0x4A);
94 }
95 windows->cursor->setVisible(windows->cursor, 1);
96 } else {
97 windows->choiceTitle->setVisible(windows->choiceTitle, 0);
98 for (i = 0; i < 2; i++) {
99 windows->options[i]->setVisible(windows->options[i], 0);
100 }
101 windows->cursor->setVisible(windows->cursor, 0);
102 }
103}
104
105/* Draws the party's portraits and their pages' panels */
107 SpriteDrawer sprite;
108 s32 member;
109 s32 level;
110 s32 i;
111
112 initSpriteDrawer(&sprite);
113 sprite.setLayerId(screen->layer, screen->depth);
114 if (GFX.funcs.getTime() - screen->frameTime >= 13) {
115 screen->frameTime = GFX.funcs.getTime();
116 for (i = 0; i < screen->count; i++) {
117 member = GAME.funcs.getPartyMember(i);
118 screen->frames[i]++;
119 if (STSTATUS_data.partnerAnims[member].frames[screen->frames[i]] == -1 || screen->frames[i] >= 7) {
120 screen->frames[i] = 0;
121 }
122 }
123 }
124 for (i = 0; i < screen->count; i++) {
125 level = screen->pageFades[i].level;
126 if (level != 0) {
127 ZOOM_SPRITE(sprite, level, 0x7C, i * 46 + 0x27);
128 member = GAME.funcs.getPartyMember(i);
129 sprite.setTexture(0x280, 0x100);
131 STSTATUS_data.partnerAnims[member].frames[screen->frames[i]], 0x6B, i * 46 + 0x13);
132 }
133 }
134 sprite.setTexture(0x140, 0);
135 DRAW_PAGE_PANELS(sprite, screen, i);
136 level = screen->fades[1].level;
137 if (level != 0) {
138 STRETCH_SPRITE(sprite, level, 0, 0xD3);
139 sprite.setTexture(0x280, 0x100);
140 sprite.draw(FILE_CACHE.getEntry(FILE_STATUS_SPRITES << 16), 0x20, 0, 0xC2);
141 }
142 if (screen->fade.level != 0) {
143 initSpriteDrawer(&sprite);
144 sprite.setLayerId(screen->layer, screen->depth);
145 sprite.setTexture(0x280, 0x100);
146 level = screen->fade.level;
147 if (level != ONE) {
148 sprite.setScale(level, ONE, ONE);
149 sprite.setPivot(0x140, 0x40);
150 }
151 sprite.draw(FILE_CACHE.getEntry(FILE_STATUS_SPRITES << 16), 0x3A, 0xA8, 0x28);
152 }
153}
154
155/* Starts the fade of the first page (and, with one party member, of the
156 panels); the next substate is the party's size */
157static inline void STSTATUS_startCardScreen(PartyScreen *screen) {
158 STSTATUS_data.funcs.startFade(&screen->pageFades[0], 1);
159 if (screen->count == 1) {
160 STSTATUS_data.funcs.startFade(&screen->fades[1], 1);
161 STSTATUS_data.funcs.startFade(&screen->fade, 1);
162 }
163 screen->substate = screen->count;
164}
165
166/* One member: once the page and the panels are in, shows the page, the help,
167 the hint and the options */
168static inline void STSTATUS_openCardScreenAlone(PartyScreen *screen, PartyScreenWindows *windows) {
171 if (STSTATUS_data.funcs.updateFade(&screen->fades[1])) {
172 STSTATUS_showCardPage(screen, windows, 0, 1);
173 windows->help->setString(windows->help, FILE_CACHE.load(TEXT_FILE(TEXT_STATUS)), 0x4C);
174 windows->hint->setString(windows->hint, FILE_CACHE.load(TEXT_FILE(TEXT_STATUS)), 0x15);
175 STSTATUS_showCardChoices(screen, windows, 1);
176 screen->substate = 10;
177 }
178}
179
180/* Two members: once the first page is in, shows it and starts the second
181 page and the help's panel */
183 if (STSTATUS_data.funcs.updateFade(&screen->pageFades[0])) {
184 STSTATUS_data.funcs.startFade(&screen->pageFades[1], 1);
185 STSTATUS_data.funcs.startFade(&screen->fades[1], 1);
186 STSTATUS_showCardPage(screen, windows, 0, 1);
187 screen->substate = 4;
188 }
189}
190
191/* Two members: once the second page and the panels are in, shows the page,
192 the help, the hint and the options */
196 if (STSTATUS_data.funcs.updateFade(&screen->fades[1])) {
197 STSTATUS_showCardPage(screen, windows, 1, 1);
198 windows->help->setString(windows->help, FILE_CACHE.load(TEXT_FILE(TEXT_STATUS)), 0x4C);
199 windows->hint->setString(windows->hint, FILE_CACHE.load(TEXT_FILE(TEXT_STATUS)), 0x15);
200 STSTATUS_showCardChoices(screen, windows, 1);
201 screen->substate = 10;
202 }
203}
204
205/* Three members: once the first page is in, shows it and starts the second */
207 if (STSTATUS_data.funcs.updateFade(&screen->pageFades[0])) {
208 STSTATUS_data.funcs.startFade(&screen->pageFades[1], 1);
209 STSTATUS_showCardPage(screen, windows, 0, 1);
210 screen->substate = 5;
211 }
212}
213
214/* Three members: once the second page is in, shows it and starts the third
215 and the help's panel */
217 if (STSTATUS_data.funcs.updateFade(&screen->pageFades[1])) {
218 STSTATUS_data.funcs.startFade(&screen->pageFades[2], 1);
219 STSTATUS_data.funcs.startFade(&screen->fades[1], 1);
220 STSTATUS_showCardPage(screen, windows, 1, 1);
221 screen->substate++;
222 }
223}
224
225/* Three members: once the third page and the panels are in, shows the page,
226 the help, the hint and the options */
227static inline void STSTATUS_openThirdCardPage(PartyScreen *screen, PartyScreenWindows *windows) {
230 if (STSTATUS_data.funcs.updateFade(&screen->fades[1])) {
231 STSTATUS_showCardPage(screen, windows, 2, 1);
232 windows->help->setString(windows->help, FILE_CACHE.load(TEXT_FILE(TEXT_STATUS)), 0x4C);
233 windows->hint->setString(windows->hint, FILE_CACHE.load(TEXT_FILE(TEXT_STATUS)), 0x15);
234 STSTATUS_showCardChoices(screen, windows, 1);
235 screen->substate = 10;
236 }
237}
238
239/* Choosing an option: up and down move the cursor, cross picks the card
240 album or the deck editor and fades the screen out, triangle closes it */
241static inline void STSTATUS_chooseCardOption(PartyScreen *screen, PartyScreenWindows *windows) {
242 s32 choice;
243
244 choice = screen->choice;
246 screen->choice = 0;
247 } else if (PAD_PRESSED(PAD_DOWN) || PAD_REPEATED(PAD_DOWN)) {
248 screen->choice = 1;
249 }
250 if (choice != screen->choice) {
252 windows->cursor->setPos(windows->cursor, 0xB8, screen->choice * 14 + 0x3A);
253 }
254 if (PAD_PRESSED(PAD_CROSS)) {
256 screen->setSubstate(screen, 100);
257 if (screen->choice == 0) {
258 screen->step = 1;
259 } else {
260 screen->step = 2;
261 }
262 } else if (PAD_PRESSED(PAD_TRIANGLE)) {
264 screen->setSubstate(screen, 0x32);
265 }
266}
267
268/* Creates the fader that hides the screen */
269static inline void STSTATUS_createCardFader(PartyScreen *screen, PartyScreenWindows *windows) {
270 if (windows->fader == NULL) {
271 windows->fader = STSTATUS_createFader();
272 }
273 screen->substate++;
274}
275
276/* Starts closing the screen: the last page, the panels, the help, the hint
277 and the options */
278static inline void STSTATUS_closeCardScreen(PartyScreen *screen, PartyScreenWindows *windows) {
279 STSTATUS_data.funcs.startFade(&screen->pageFades[screen->count - 1], 0);
280 STSTATUS_showCardPage(screen, windows, screen->count - 1, 0);
281 STSTATUS_data.funcs.startFade(&screen->fades[1], 0);
282 windows->help->setVisible(windows->help, 0);
283 windows->hint->setVisible(windows->hint, 0);
284 STSTATUS_data.funcs.startFade(&screen->fade, 0);
285 STSTATUS_showCardChoices(screen, windows, 0);
286 screen->substate = screen->count + 0x32;
287}
288
289/* One member: once the page and the panels are closed, goes on to the end */
290static inline void STSTATUS_closeCardScreenAlone(PartyScreen *screen) {
293 if (STSTATUS_data.funcs.updateFade(&screen->fades[1])) {
294 screen->substate = 0x39;
295 }
296}
297
298/* Two members: once the second page and the panels are closed, starts
299 closing the first */
303 if (STSTATUS_data.funcs.updateFade(&screen->fades[1])) {
304 STSTATUS_data.funcs.startFade(&screen->pageFades[0], 0);
305 STSTATUS_showCardPage(screen, windows, 0, 0);
306 screen->substate = 0x36;
307 }
308}
309
310/* Three members: once the third page and the panels are closed, starts
311 closing the second */
312static inline void STSTATUS_closeThirdCardPage(PartyScreen *screen, PartyScreenWindows *windows) {
315 if (STSTATUS_data.funcs.updateFade(&screen->fades[1])) {
316 STSTATUS_data.funcs.startFade(&screen->pageFades[1], 0);
317 STSTATUS_showCardPage(screen, windows, 1, 0);
318 screen->substate = 0x37;
319 }
320}
321
322/* Three members: once the second page is closed, starts closing the first */
324 if (STSTATUS_data.funcs.updateFade(&screen->pageFades[1])) {
325 STSTATUS_data.funcs.startFade(&screen->pageFades[0], 0);
326 STSTATUS_showCardPage(screen, windows, 0, 0);
327 screen->substate++;
328 }
329}
330
331/* The end: goes to the chosen card album or deck editor, or ends the screen */
332static inline void STSTATUS_endCardScreen(PartyScreen *screen) {
333 if (screen->step == 1) {
335 } else if (screen->step == 2) {
337 } else {
338 screen->state = 3;
339 }
340}
341
342/* Runs the screen: the pages come in one after the other, the cursor picks
343 one of the two options, and the pages go out in reverse */
345 switch (screen->substate) {
346 case 0:
347 default:
349 break;
350 case 1:
351 STSTATUS_openCardScreenAlone(screen, windows);
352 break;
353 case 2:
354 STSTATUS_openFirstOfTwoCardPages(screen, windows);
355 break;
356 case 4:
357 STSTATUS_openSecondOfTwoCardPages(screen, windows);
358 break;
359 case 3:
360 STSTATUS_openFirstOfThreeCardPages(screen, windows);
361 break;
362 case 5:
364 break;
365 case 6:
366 STSTATUS_openThirdCardPage(screen, windows);
367 break;
368 case 10:
369 STSTATUS_chooseCardOption(screen, windows);
370 break;
371 case 100:
372 STSTATUS_createCardFader(screen, windows);
373 break;
374 case 101:
375 windows->fader->start(windows->fader, 0, 10);
376 screen->substate++;
377 break;
378 case 102:
379 if (windows->fader->state == 2) {
380 screen->substate = 0x39;
381 }
382 break;
383 case 0x32:
384 STSTATUS_closeCardScreen(screen, windows);
385 break;
386 case 0x33:
388 break;
389 case 0x34:
390 STSTATUS_closeSecondOfTwoCardPages(screen, windows);
391 break;
392 case 0x35:
393 STSTATUS_closeThirdCardPage(screen, windows);
394 break;
395 case 0x37:
397 break;
398 case 0x36:
399 case 0x38:
400 if (STSTATUS_data.funcs.updateFade(&screen->pageFades[0])) {
401 screen->substate = 0x39;
402 }
403 break;
404 case 0x39:
406 break;
407 }
408}
409
410/* The screen's update: counts the party and opens the pages */
412 s32 i;
413
414 switch (screen->state) {
415 case TASK_INIT:
416 default:
417 screen->nextState(screen);
418 for (i = 0; i < 3; i++) {
419 if (GAME.funcs.getPartyMember(i) >= 0) {
420 screen->count++;
421 }
422 }
423 for (i = 0; i < screen->count; i++) {
424 screen->pageFades[i].duration = 10;
425 STSTATUS_data.funcs.startFade(&screen->pageFades[i], 1);
426 }
427 for (i = 0; i < 2; i++) {
428 screen->fades[i].duration = 10;
429 STSTATUS_data.funcs.startFade(&screen->fades[i], 1);
430 }
431 screen->fade.duration = 10;
432 STSTATUS_data.funcs.startFade(&screen->fade, 1);
433 STSTATUS_createCardWindows(screen, windows);
434 break;
435 case TASK_RUN:
436 STSTATUS_runCardScreen(screen, windows);
438 break;
439 case TASK_DONE:
440 case TASK_KILL:
441 break;
442 }
443}
444
445/* Creates the screen with the party's pages (task) whose two options go to the
446 card album (MODE_CARD_ALBUM) or the deck editor (MODE_DECK_EDITOR) */
449
450 screen->layer = SCREEN_LAYER;
451 screen->depth = 6;
452 screen->menu = menu;
453 return (Task *)screen;
454}
455
459#define FADER_DEPTH 0
461
462/* The stats a party member's page shows, in PartnerTotals.stats (as
463 STSTATUS_pageStats2, 4, 0, 8 and 9 on the other screens) */
static void STSTATUS_chooseCardOption(PartyScreen *screen, PartyScreenWindows *windows)
Choosing an option: up and down move the cursor, cross picks the card album or the deck editor and fa...
static void STSTATUS_openThirdCardPage(PartyScreen *screen, PartyScreenWindows *windows)
Three members: once the third page and the panels are in, shows the page, the help,...
static void STSTATUS_closeThirdCardPage(PartyScreen *screen, PartyScreenWindows *windows)
Three members: once the third page and the panels are closed, starts closing the second.
static void STSTATUS_closeCardScreen(PartyScreen *screen, PartyScreenWindows *windows)
Starts closing the screen: the last page, the panels, the help, the hint and the options.
void STSTATUS_showCardPage(PartyScreen *screen, PartyScreenWindows *windows, s32 member, s32 show)
Shows or hides a party member's page: name and five stats (as showPartnerPage)
Definition card_screen.c:56
Task * STSTATUS_createCardScreen(FieldMenuScreen *menu, s32 extra)
Creates the screen with the party's pages (task) whose two options go to the card album (MODE_CARD_AL...
static void STSTATUS_openSecondOfTwoCardPages(PartyScreen *screen, PartyScreenWindows *windows)
Two members: once the second page and the panels are in, shows the page, the help,...
void STSTATUS_updateCardScreen(PartyScreen *screen, PartyScreenWindows *windows)
The screen's update: counts the party and opens the pages.
static void STSTATUS_closeSecondOfTwoCardPages(PartyScreen *screen, PartyScreenWindows *windows)
Two members: once the second page and the panels are closed, starts closing the first.
void STSTATUS_showCardChoices(PartyScreen *screen, PartyScreenWindows *windows, s32 show)
Shows or hides the help and the two options with their cursor.
Definition card_screen.c:87
static void STSTATUS_createCardFader(PartyScreen *screen, PartyScreenWindows *windows)
Creates the fader that hides the screen.
static void STSTATUS_closeCardScreenAlone(PartyScreen *screen)
One member: once the page and the panels are closed, goes on to the end.
static void STSTATUS_endCardScreen(PartyScreen *screen)
The end: goes to the chosen card album or deck editor, or ends the screen.
void STSTATUS_runCardScreen(PartyScreen *screen, PartyScreenWindows *windows)
Runs the screen: the pages come in one after the other, the cursor picks one of the two options,...
static void STSTATUS_openCardScreenAlone(PartyScreen *screen, PartyScreenWindows *windows)
One member: once the page and the panels are in, shows the page, the help, the hint and the options.
s32 STSTATUS_pageStats[]
The stats a party member's page shows, in PartnerTotals.stats (as STSTATUS_pageStats2,...
void STSTATUS_createCardWindows(PartyScreen *screen, PartyScreenWindows *windows)
Creates the windows of a screen with the party's pages.
Definition card_screen.c:21
void STSTATUS_drawCardScreen(PartyScreen *screen)
Draws the party's portraits and their pages' panels.
static void STSTATUS_openSecondOfThreeCardPages(PartyScreen *screen, PartyScreenWindows *windows)
Three members: once the second page is in, shows it and starts the third and the help's panel.
static void STSTATUS_closeSecondOfThreeCardPages(PartyScreen *screen, PartyScreenWindows *windows)
Three members: once the second page is closed, starts closing the first.
static void STSTATUS_openFirstOfTwoCardPages(PartyScreen *screen, PartyScreenWindows *windows)
Two members: once the first page is in, shows it and starts the second page and the help's panel.
static void STSTATUS_startCardScreen(PartyScreen *screen)
Starts the fade of the first page (and, with one party member, of the panels); the next substate is t...
static void STSTATUS_openFirstOfThreeCardPages(PartyScreen *screen, PartyScreenWindows *windows)
Three members: once the first page is in, shows it and starts the second.
#define NULL
Definition common.h:17
signed int s32
Definition common.h:11
GfxState GFX
GFX: the graphics state and its methods.
Definition display.c:209
GameState GAME
The save data, the game mode and the methods.
Definition state.c:64
#define TASK_RUN
Definition task.h:35
#define TASK_KILL
Definition task.h:37
#define TASK_INIT
Tasks: every game object is a task, a heap block that starts with this header and is updated once per...
Definition task.h:34
#define TASK_DONE
Definition task.h:36
Cursor * createCursor(s16 layerId, s32 depth, s16 x, s16 y)
A menu cursor on a layer at (x, y)
Definition cursor.c:92
STSTATUS.PRO: the field menu's screens.
#define DRAW_PAGE_PANELS(sprite, screen, i)
Draws the panels of the party's pages (parts 0x15 to 0x17 of the menu's sprites), each stretched acro...
Definition field_menu.h:455
#define FILE_STATUS_SPRITES
The menu's sprite sheet; the next file is its texture archive.
Definition field_menu.h:20
ScreenFade * STSTATUS_createFader(void)
#define TEXT_FILE(file)
Definition file.h:190
#define TEXT_STATUS
STATUS: the field menu's and STSTATUS's.
Definition file.h:225
FileCache FILE_CACHE
The file cache.
Definition file_cache.c:7
#define MODE_DECK_EDITOR
STCRDDEK.
Definition game_state.h:430
#define MODE_CARD_ALBUM
STCRDABM.
Definition game_state.h:451
#define STAT_MP
Definition game_state.h:283
#define STAT_MAX_HP
Definition game_state.h:282
#define STAT_HP
Definition game_state.h:281
#define STAT_LEVEL
Indices of a partner's stats (PartnerStats.stats, computeStats, setStat)
Definition game_state.h:279
#define STAT_MAX_MP
Definition game_state.h:284
#define STRETCH_SPRITE(sprite, level, x, y)
Definition gfx.h:273
#define ZOOM_SPRITE(sprite, level, x, y)
Definition gfx.h:275
#define SCREEN_LAYER
The layer over the whole screen that most modes create first and draw their menus on (FIELDSTG and ST...
Definition gfx.h:45
StatusData STSTATUS_data
Definition helpers.c:356
#define PAD_CROSS
Definition pad.h:31
#define PAD_DOWN
Definition pad.h:24
#define PAD_TRIANGLE
Definition pad.h:32
#define PAD_PRESSED(button)
One button of pad 1: newly pressed, auto-repeated while held, or held.
Definition pad.h:140
#define PAD_UP
Definition pad.h:22
#define PAD_REPEATED(button)
Definition pad.h:141
SoundState SOUND
rsin and rcos (libgte) read rsin_tbl[a - 0x800] and the like: their addresses before the table fall i...
Definition sound.c:180
#define SOUND_SELECT
Sounds the overlays share, with SOUNDTST's names.
Definition sound.h:38
#define SOUND_MENU_CANCEL
SYSTEM01.
Definition sound.h:39
#define SOUND_CURSOR
SYSTEM02: a cursor moves.
Definition sound.h:40
void initSpriteDrawer(SpriteDrawer *obj)
Clears a sprite drawer to neutral (no scale, gray tint, follows the scroll), gives it its methods and...
void(* setPos)()
(cursor, x, y)
Definition text.h:34
void(* setVisible)()
(cursor, visible)
Definition text.h:33
The mode's main task (STSTATUS_createMenu)
Definition field_menu.h:25
void *(* load)(u32 file)
Definition file.h:92
void *(* getEntry)(u32 fileAndIndex)
Definition file.h:96
struct PartnerStats *(* getPartnerStats)(s32 partner)
Definition game_state.h:38
void(* computeStats)(s32 partner, union PartnerTotals *out)
Definition game_state.h:31
void(* requestMode)(s32 mode, s32 arg)
Definition game_state.h:21
s32(* getPartyMember)(u32 index)
Definition game_state.h:24
GameFuncs funcs
Definition game_state.h:582
s32(* getTime)(void)
Definition gfx.h:31
GfxFuncs funcs
Definition gfx.h:77
s32 level
Definition menu.h:21
s32 duration
Definition menu.h:19
s32 frames[7]
Definition game_state.h:341
TextWindow * values[5]
Definition menu.h:88
TextWindow * labels[5]
Definition menu.h:87
TextWindow * name
Definition menu.h:86
The windows of the screens STSTATUS_updateCardScreen and STSTATUS_updateDemoScreen.
Definition field_menu.h:293
TextWindow * choiceTitle
Definition field_menu.h:297
ScreenFade * fader
Definition field_menu.h:300
PartnerPage pages[3]
Definition field_menu.h:294
TextWindow * options[2]
Definition field_menu.h:298
TextWindow * help
two lines
Definition field_menu.h:295
TextWindow * hint
Definition field_menu.h:296
The screens with the party's pages (STSTATUS_createCardScreen, STSTATUS_createDemoScreen)
Definition field_menu.h:53
s32 count
party members
Definition field_menu.h:58
FieldMenuScreen * menu
Definition field_menu.h:55
PanelAnim fades[2]
Definition field_menu.h:63
void(* setSubstate)(struct PartyScreen *task, s32 substate)
Definition field_menu.h:54
void(* nextState)(struct PartyScreen *task)
Definition field_menu.h:54
PanelAnim fade
Definition field_menu.h:64
void * children
Definition field_menu.h:54
s32 frames[3]
of their portraits' animations
Definition field_menu.h:59
s32 choice
0, 1: the options
Definition field_menu.h:61
PanelAnim pageFades[3]
Definition field_menu.h:62
void(* start)(struct ScreenFade *fade, s32 fadeIn, s32 frames)
TASK_DONE when done.
Definition gfx.h:368
s32 state
Definition gfx.h:362
short(* playSound)(s32 id)
returns the voice of a key-on
Definition sound.h:187
Draws sprites from a sprite sheet (such as file 0x277, the menu graphics): a sheet has a table of fra...
Definition gfx.h:223
void(* setPivot)()
(x, y)
Definition gfx.h:250
void(* setScale)()
(x, y, z), ONE = 1.0
Definition gfx.h:248
void(* setLayerId)()
(id, depth)
Definition gfx.h:244
void(* draw)()
(sheet, frame, x, y)
Definition gfx.h:246
void(* setTexture)()
(x, y)
Definition gfx.h:242
WindowPos * layout
where the windows go, and their strings
Definition field_menu.h:438
PartnerAnim * partnerAnims
the partners' portraits
Definition field_menu.h:437
StatusFuncs funcs
Definition field_menu.h:445
s32(* updateFade)(PanelAnim *fade)
Definition field_menu.h:276
void(* startFade)(PanelAnim *fade, s32 fadeIn)
Definition field_menu.h:275
Any task, seen through its header.
Definition task.h:62
A text window (createTextWindow): up to six text buffers (0 is shown, 1-5 are "work" buffers that con...
Definition text.h:131
void(* setRightAlign)()
no prototype: callers would truncate u8 args
Definition text.h:178
void(* setLines)()
no prototype: callers would truncate u8 args
Definition text.h:184
void(* setNumber)()
Definition text.h:166
void(* setString)()
Definition text.h:165
void(* setVisible)(struct TextWindow *obj, u8 arg)
Definition text.h:177
Where a window goes, and the string it shows.
Definition menu.h:102
s16 y
Definition menu.h:106
s32 string
Definition menu.h:103
s16 x
Definition menu.h:104
void * createTask(void(*update)(), s32 size, s32 childrenSize)
createTaskWithId for a task nothing needs to find
Definition task.c:105
TextWindow * createTextWindow(s16 layerId, s16 style, s16 x, s16 y)
A text window on a layer, in a font style, at (x, y)
computeStats' result: the stats with the equipment added, by STAT_* or by name.
Definition game_state.h:409
s16 stats[24]
Definition game_state.h:410