aboutsummaryrefslogtreecommitdiff
path: root/clak.c
diff options
context:
space:
mode:
Diffstat (limited to 'clak.c')
-rw-r--r--clak.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/clak.c b/clak.c
index f7208e7..3c484bc 100644
--- a/clak.c
+++ b/clak.c
@@ -9,7 +9,7 @@
#define VOLUME 0.15
-struct board *board = NULL;
+struct board_state state = {0};
void do_exit(int code)
{
@@ -21,14 +21,14 @@ void on_clean_exit(void) { do_exit(0); }
void keyboard_on_down(void)
{
- assert(board != NULL);
- board->on_down();
+ assert(state.on_down != NULL);
+ state.on_down(&state);
}
void keyboard_on_up(void)
{
- assert(board != NULL);
- board->on_up();
+ assert(state.on_up != NULL);
+ state.on_up(&state);
}
int main(int argc, char **argv)
@@ -40,12 +40,17 @@ int main(int argc, char **argv)
// TODO: List valid boards.
return 1;
}
+
+ /* Initialise board state */
+ state.sound_play = &sound_play; /* Inject platform-specific impl */
+
fprintf(stderr, "Loading board...\n");
- if ((board = load_board(argv[1])) == NULL) {
+ if (!load_board(&state, argv[1])) {
printf("Failed to load board, exiting.\n");
return 1;
}
- fprintf(stderr, "Loaded board: %s\n", board->name);
+ state.board_init(&state);
+ fprintf(stderr, "Loaded board: %s\n", state.name);
fprintf(stderr, "Initialisating sound system...\n");
if (!sound_init(VOLUME)) {