diff options
Diffstat (limited to 'clak.c')
-rw-r--r-- | clak.c | 19 |
1 files changed, 12 insertions, 7 deletions
@@ -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)) { |