From 6178e8fabf13d2e0074f3d9ef5c48b2a77c42c2c Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Thu, 18 Mar 2021 14:35:11 -0400 Subject: db_main_menu(): New function Factored out of main() --- (limited to 'src') diff --git a/src/local.mk b/src/local.mk index 508b1db..fbec287 100644 --- a/src/local.mk +++ b/src/local.mk @@ -3,6 +3,8 @@ dodge_balls_SOURCES += \ %reldir%/game.h \ %reldir%/locale.c \ %reldir%/locale.h \ + %reldir%/main-menu.c \ + %reldir%/main-menu.h \ %reldir%/main.c \ %reldir%/main.h \ %reldir%/output.c \ diff --git a/src/main-menu.c b/src/main-menu.c new file mode 100644 index 0000000..f3e46bf --- /dev/null +++ b/src/main-menu.c @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2021 P. J. McDermott + * + * This file is part of Dodge Balls + * + * Dodge Balls is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Dodge Balls is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Dodge Balls. If not, see . + */ + +#include +#include +#include +#include "game.h" +#include "main-menu.h" +#include "main.h" +#include "output.h" + +void +db_main_menu(void) +{ + const char *games_dir; + const char *fonts_dir; + SDL_Window *window; + SDL_Renderer *renderer; + SDL_Texture *texture; + struct db_game **games; + int n; + int i; + + games_dir = db_get_games_dir(); + fonts_dir = db_get_fonts_dir(); + + window = db_get_window(); + renderer = db_get_renderer(); + texture = db_get_texture(); + + /* Find games */ + n = db_games_find(games_dir, &games); + if (n > 0) { + printf("%d games:\n", n); + for (i = 0; i < n; ++i) { + printf("\t%s - %s\n", db_game_get_name(games[i]), + db_game_get_desc(games[i])); + db_game_free(games[i]); + } + free(games); + } + + SDL_SetRenderDrawColor(renderer, 0x7F, 0x7F, 0x7F, 0xFF); + SDL_RenderClear(renderer); + SDL_RenderPresent(renderer); + SDL_Delay(1000); +} diff --git a/src/main-menu.h b/src/main-menu.h new file mode 100644 index 0000000..cc55ca7 --- /dev/null +++ b/src/main-menu.h @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2021 P. J. McDermott + * + * This file is part of Dodge Balls + * + * Dodge Balls is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Dodge Balls is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Dodge Balls. If not, see . + */ + +#ifndef DB_MAIN_MENU_H_ +#define DB_MAIN_MENU_H_ + +void db_main_menu(void); + +#endif /* DB_MAIN_MENU_H_ */ diff --git a/src/main.c b/src/main.c index 3a2c93f..8d58351 100644 --- a/src/main.c +++ b/src/main.c @@ -23,7 +23,6 @@ #include #include #include -#include "game.h" #include "main.h" #include "output.h" @@ -141,10 +140,6 @@ db_get_texture(void) int main(int argc, char *argv[]) { - struct db_game **games; - int n; - int i; - /* Find data directories */ _db_find_dirs(argv[0]); @@ -153,22 +148,7 @@ main(int argc, char *argv[]) return EXIT_FAILURE; } - /* Find games */ - n = db_games_find(_db_games_dir, &games); - if (n > 0) { - printf("%d games:\n", n); - for (i = 0; i < n; ++i) { - printf("\t%s - %s\n", db_game_get_name(games[i]), - db_game_get_desc(games[i])); - db_game_free(games[i]); - } - free(games); - } - - SDL_SetRenderDrawColor(_db_renderer, 0x7F, 0x7F, 0x7F, 0xFF); - SDL_RenderClear(_db_renderer); - SDL_RenderPresent(_db_renderer); - SDL_Delay(1000); + db_main_menu(); /* Quit SDL libraries */ _db_quit(); -- cgit v0.9.1