/* * 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" #include "util.h" static void _db_main_menu_title(const char *fonts_dir, SDL_Renderer *renderer) { SDL_Color color; TTF_Font *font; SDL_Surface *surface; SDL_Texture *texture; SDL_Rect rect; color.r = 0x00; color.g = 0x00; color.b = 0xFF; color.a = 0xFF; font = TTF_OpenFont( db_strcat(fonts_dir, "/UbuntuTitling-Bold.ttf"), 48); if (font == NULL) { db_err("Failed to open font (%s)", TTF_GetError()); return; } surface = TTF_RenderText_Blended(font, "Dodge Balls", color); if (surface == NULL) { db_err("Failed to create surface (%s)", TTF_GetError()); return; } texture = SDL_CreateTextureFromSurface(renderer, surface); if (texture == NULL) { db_err("Failed to create texture (%s)", SDL_GetError()); return; } rect.x = 16; rect.y = 16; rect.w = surface->w; rect.h = surface->h; SDL_RenderCopy(renderer, texture, NULL, &rect); SDL_DestroyTexture(texture); SDL_FreeSurface(surface); } 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(); /* Render background */ SDL_SetRenderDrawColor(renderer, 0x7F, 0x7F, 0x7F, 0xFF); SDL_RenderClear(renderer); /* Render title text */ _db_main_menu_title(fonts_dir, renderer); /* 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_RenderPresent(renderer); SDL_Delay(1000); }