summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/local.mk2
-rw-r--r--src/main-menu.c63
-rw-r--r--src/main-menu.h25
-rw-r--r--src/main.c22
4 files changed, 91 insertions, 21 deletions
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 <http://www.gnu.org/licenses/>.
+ */
+
+#include <SDL.h>
+#include <SDL_ttf.h>
+#include <stdlib.h>
+#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 <http://www.gnu.org/licenses/>.
+ */
+
+#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 <stdio.h>
#include <stdlib.h>
#include <string.h>
-#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();