/*
* 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
#include "defs.h"
#include "dirs.h"
#include "maze.h"
#include "splash.h"
#include "tk.h"
#include "util.h"
int
mf_splash(SDL_Renderer *renderer)
{
char *font_path = NULL;
TTF_Font *title_font = NULL;
TTF_Font *text_font = NULL;
SDL_Color text_color;
SDL_Color butn_color;
struct mftk_widget *grid;
struct mf_maze *maze = NULL;
SDL_Color maze_color;
SDL_Event event;
font_path = mf_strcat(mf_get_fonts_dir(), "/FifteenTwenty-Regular.ttf");
title_font = TTF_OpenFont(font_path, MF_SPLASH_TITLE_FONT_S);
if (title_font == NULL) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
"Couldn't open font: %s",
TTF_GetError());
goto err;
}
text_font = TTF_OpenFont(font_path, MF_SPLASH_TEXT_FONT_S);
if (text_font == NULL) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
"Couldn't open font: %s",
TTF_GetError());
goto err;
}
text_color.r = MF_COLOR_FORE_R;
text_color.g = MF_COLOR_FORE_G;
text_color.b = MF_COLOR_FORE_B;
text_color.a = MF_COLOR_FORE_A;
butn_color.r = MF_COLOR_BUTN_R;
butn_color.g = MF_COLOR_BUTN_G;
butn_color.b = MF_COLOR_BUTN_B;
butn_color.a = MF_COLOR_BUTN_A;
grid = mftk_grid_new(2, 1, MF_SPLASH_TITLE_M, 0,
mftk_label_new(title_font, "Maze Fight", &text_color,
renderer),
mftk_button_new(text_font, "Play", &text_color,
&butn_color, 2, NULL, NULL, renderer));
/* TODO: Widgets */
mftk_widget_layout(grid);
TTF_CloseFont(title_font);
title_font = NULL;
TTF_CloseFont(text_font);
text_font = NULL;
free(font_path);
font_path = NULL;
/* Create maze */
maze = mf_maze_new(time(NULL),
MF_WINDOW_W / MF_SPLASH_MAZE_CELL_W,
MF_WINDOW_H / MF_SPLASH_MAZE_CELL_W);
if (maze == NULL) {
goto err;
}
maze_color.r = MF_COLOR_MAZE_R;
maze_color.g = MF_COLOR_MAZE_G;
maze_color.b = MF_COLOR_MAZE_B;
maze_color.a = MF_COLOR_MAZE_A;
SDL_SetRenderDrawBlendMode(renderer, SDL_BLENDMODE_BLEND);
while (SDL_WaitEvent(&event)) {
switch (event.type) {
case SDL_QUIT:
goto quit;
default:
break;
}
SDL_SetRenderDrawColor(renderer,
MF_COLOR_BACK_R, MF_COLOR_BACK_G,
MF_COLOR_BACK_B, MF_COLOR_BACK_A);
SDL_RenderClear(renderer);
mf_maze_render(maze, renderer, &maze_color,
MF_SPLASH_MAZE_CELL_W);
mftk_widget_render(grid, renderer,
MF_SPLASH_WINDOW_P, MF_SPLASH_WINDOW_P);
SDL_RenderPresent(renderer);
}
quit:
mftk_widget_destroy(&grid);
mf_maze_destroy(&maze);
return 0;
err:
if (font_path != NULL) {
free(font_path);
}
if (title_font != NULL) {
TTF_CloseFont(title_font);
}
if (text_font != NULL) {
TTF_CloseFont(text_font);
}
mftk_widget_destroy(&grid);
mf_maze_destroy(&maze);
return -1;
}