summaryrefslogtreecommitdiffstats
path: root/src/main.c
diff options
context:
space:
mode:
authorP. J. McDermott <pj@pehjota.net>2021-08-01 23:44:27 (EDT)
committer P. J. McDermott <pj@pehjota.net>2021-08-01 23:45:22 (EDT)
commiteb0084ef69a05f8d5c93a4d2d5a500c11f558543 (patch)
tree9d13ea114bb88759e21a8010f1e0a7b00586cc48 /src/main.c
parent6238e82905f0778af12c95364971062bc4776d1c (diff)
downloadmazefight-eb0084ef69a05f8d5c93a4d2d5a500c11f558543.zip
mazefight-eb0084ef69a05f8d5c93a4d2d5a500c11f558543.tar.gz
mazefight-eb0084ef69a05f8d5c93a4d2d5a500c11f558543.tar.bz2
main: Implement
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c98
1 files changed, 98 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c
index e69de29..648bac8 100644
--- a/src/main.c
+++ b/src/main.c
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2021 P. J. McDermott
+ *
+ * This file is part of Maze Fight
+ *
+ * Maze Fight 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.
+ *
+ * Maze Fight 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 Maze Fight. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <SDL.h>
+#include <SDL_ttf.h>
+#include <stdlib.h>
+#include "defs.h"
+
+static SDL_Window *_mf_window;
+static SDL_Renderer *_mf_renderer;
+
+static int
+_mf_init(void)
+{
+ if (SDL_Init(SDL_INIT_VIDEO) < 0) {
+ SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
+ "Couldn't initialize SDL: %s",
+ SDL_GetError());
+ return -1;
+ }
+
+ if (TTF_Init() < 0) {
+ SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
+ "Couldn't initialize SDL_ttf: %s",
+ SDL_GetError());
+ SDL_Quit();
+ return -1;
+ }
+
+ _mf_window = SDL_CreateWindow("Maze Fight",
+ SDL_WINDOWPOS_UNDEFINED,
+ SDL_WINDOWPOS_UNDEFINED,
+ MF_WINDOW_W, MF_WINDOW_H, 0);
+ if (_mf_window == NULL) {
+ SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
+ "Couldn't create window: %s",
+ SDL_GetError());
+ TTF_Quit();
+ SDL_Quit();
+ return -1;
+ }
+
+ _mf_renderer = SDL_CreateRenderer(_mf_window, -1, 0);
+ if (_mf_renderer == NULL) {
+ SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
+ "Couldn't create renderer: %s",
+ SDL_GetError());
+ SDL_DestroyWindow(_mf_window);
+ TTF_Quit();
+ SDL_Quit();
+ return -1;
+ }
+
+ SDL_DisableScreenSaver();
+
+ return 0;
+}
+
+static void
+_mf_quit(void)
+{
+ SDL_EnableScreenSaver();
+ SDL_DestroyRenderer(_mf_renderer);
+ SDL_DestroyWindow(_mf_window);
+ TTF_Quit();
+ SDL_Quit();
+}
+
+int
+main(int argc __attribute__((__unused__)),
+ char *argv[] __attribute__((__unused__)))
+{
+ /* Initialize SDL libraries */
+ if (_mf_init() < 0) {
+ return EXIT_FAILURE;
+ }
+
+ /* Quit SDL libraries */
+ _mf_quit();
+
+ return EXIT_SUCCESS;
+}