/* * 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 . */ #include #include #include #include "defs.h" #include "dirs.h" #include "menu.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__))) { int e; /* Find data directories */ mf_find_dirs(argv[0]); /* Initialize SDL libraries */ if (_mf_init() < 0) { return EXIT_FAILURE; } e = EXIT_SUCCESS; if (mf_menu(_mf_renderer) < 0) { e = EXIT_FAILURE; } /* Quit SDL libraries */ _mf_quit(); return e; }