add missing tools/pngdump to the repo
[gbajam22] / src / game.c
1 #include <string.h>
2 #include "gba.h"
3 #include "game.h"
4
5 struct screen *init_logo_screen(void);
6 struct screen *init_menu_screen(void);
7 struct screen *init_game_screen(void);
8 struct screen *init_controls_screen(void);
9
10 struct screen *curscr;
11
12 #define MAX_SCR 4
13 static struct screen *scrlist[MAX_SCR];
14 static int num_scr;
15
16 int init_screens(void)
17 {
18         if(!(scrlist[num_scr++] = init_logo_screen())) {
19                 return -1;
20         }
21         if(!(scrlist[num_scr++] = init_menu_screen())) {
22                 return -1;
23         }
24         if(!(scrlist[num_scr++] = init_controls_screen())) {
25                 return -1;
26         }
27         if(!(scrlist[num_scr++] = init_game_screen())) {
28                 return -1;
29         }
30         return 0;
31 }
32
33 int change_screen(struct screen *scr)
34 {
35         if(!scr) return -1;
36
37         mask(INTR_VBLANK);
38
39         if(curscr && curscr->stop) {
40                 curscr->stop();
41         }
42         if(scr->start && scr->start() == -1) {
43                 return -1;
44         }
45         curscr = scr;
46
47         unmask(INTR_VBLANK);
48         return 0;
49 }
50
51 struct screen *find_screen(const char *name)
52 {
53         int i;
54         for(i=0; i<num_scr; i++) {
55                 if(strcmp(scrlist[i]->name, name) == 0) {
56                         return scrlist[i];
57                 }
58         }
59         return 0;
60 }