/* * 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); }