From 312c8a5cd499b3e221c56794f03cd6c809f8665e Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Fri, 19 Mar 2021 08:55:28 -0400 Subject: help: New screen --- diff --git a/src/help.c b/src/help.c new file mode 100644 index 0000000..dc5c071 --- /dev/null +++ b/src/help.c @@ -0,0 +1,108 @@ +/* + * 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 "help.h" +#include "main.h" +#include "output.h" +#include "util.h" + +const char *_db_help_text = + PACKAGE_NAME " version " PACKAGE_VERSION "\n" + "\n" + "Evade the balls and get to the target! Dodge Balls is a simple " + "puzzle game with obstacle courses consisting of moving balls.\n" + "\n" + "The classic game is a liberated remake of a 2007 game, Dodgeball " + "v3.0, by the same author. It features 10 levels, each harder than " + "the last.\n" + "\n" + "How to Play\n" + "\n" + "Move your character (a smiley face in the classic game) through the " + "obstacle course to reach the target (a star in the classic game). If " + "you are hit by a ball, the level is restarted.\n" + "\n" + "Controls\n" + "\n" + "Up: Move up\n" + "Down: Move down\n" + "Left: Move left\n" + "Right: Move right\n" + "...\n" + "\n" + "Hints\n" + "\n" + "Use the map to your advantage. You can go through walls that appear " + "to be hollow. Try to anticipate where balls will be. Remember that " + "they bounce off walls in the opposite direction. To stop, move " + "against a wall."; + +void +db_help(void) +{ + char *font_path; + SDL_Renderer *renderer; + TTF_Font *font; + SDL_Color color; + SDL_Surface *surface; + SDL_Texture *texture; + SDL_Rect dest_rect; + + font_path = db_strcat(db_get_fonts_dir(), "/UbuntuTitling-Bold.ttf"); + + renderer = db_get_renderer(); + + font = TTF_OpenFont(font_path, 16); + if (font == NULL) { + db_err("Failed to open font (%s)", TTF_GetError()); + free(font_path); + return; + } + + color.r = 0x00; + color.g = 0x00; + color.b = 0xFF; + color.a = 0xFF; + + surface = TTF_RenderText_Blended_Wrapped(font, _db_help_text, color, + 608); + 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; + } + + dest_rect.x = 16; + dest_rect.y = 16; + dest_rect.w = surface->w; + dest_rect.h = surface->h; + + SDL_RenderClear(renderer); + SDL_RenderCopy(renderer, texture, NULL, &dest_rect); + SDL_RenderPresent(renderer); + SDL_Delay(1000); +} diff --git a/src/help.h b/src/help.h new file mode 100644 index 0000000..0c9d279 --- /dev/null +++ b/src/help.h @@ -0,0 +1,25 @@ +/* + * 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 . + */ + +#ifndef DB_HELP_H_ +#define DB_HELP_H_ + +void db_help(void); + +#endif /* DB_HELP_H_ */ diff --git a/src/local.mk b/src/local.mk index 922064f..199a9c4 100644 --- a/src/local.mk +++ b/src/local.mk @@ -3,6 +3,8 @@ dodge_balls_SOURCES += \ %reldir%/collision.h \ %reldir%/game.c \ %reldir%/game.h \ + %reldir%/help.c \ + %reldir%/help.h \ %reldir%/locale.c \ %reldir%/locale.h \ %reldir%/main-menu.c \ diff --git a/src/main-menu.c b/src/main-menu.c index 93c816d..7ebe859 100644 --- a/src/main-menu.c +++ b/src/main-menu.c @@ -22,6 +22,7 @@ #include #include "collision.h" #include "game.h" +#include "help.h" #include "main-menu.h" #include "main.h" #include "output.h" @@ -73,6 +74,7 @@ _db_main_menu_text(TTF_Font *font, const char *text, SDL_Color *color, static void _db_main_menu_action_help(void *user_data __attribute__((__unused__))) { + db_help(); } static void -- cgit v0.9.1