/* * 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 #include "defs.h" #include "dirs.h" #include "main-menu.h" #include "output.h" static SDL_Window *_db_window; static SDL_Renderer *_db_renderer; static int _db_init(void) { srand(time(NULL)); if (SDL_Init(SDL_INIT_VIDEO) < 0) { db_err("Failed to initialize SDL (%s)", SDL_GetError()); return -1; } if (TTF_Init() < 0) { db_err("Failed to initialize SDL_ttf (%s)", TTF_GetError()); return -1; } _db_window = SDL_CreateWindow("Dodge Balls", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, DB_WINDOW_W, DB_WINDOW_H, 0); if (_db_window == NULL) { db_err("Failed to create window (%s)", SDL_GetError()); SDL_Quit(); return -1; } _db_renderer = SDL_CreateRenderer(_db_window, -1, 0); if (_db_renderer == NULL) { db_err("Failed to create renderer (%s)", SDL_GetError()); SDL_DestroyWindow(_db_window); SDL_Quit(); return -1; } SDL_DisableScreenSaver(); return 0; } static void _db_quit(void) { SDL_EnableScreenSaver(); SDL_DestroyRenderer(_db_renderer); SDL_DestroyWindow(_db_window); TTF_Quit(); SDL_Quit(); } int main(int argc __attribute__((__unused__)), char *argv[]) { /* Find data directories */ db_find_dirs(argv[0]); /* Initialize SDL libraries */ if (_db_init() < 0) { return EXIT_FAILURE; } db_main_menu(_db_window); /* Quit SDL libraries */ _db_quit(); return EXIT_SUCCESS; }