summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorP. J. McDermott <pj@pehjota.net>2021-03-19 08:55:28 (EDT)
committer P. J. McDermott <pj@pehjota.net>2021-03-19 08:55:28 (EDT)
commit312c8a5cd499b3e221c56794f03cd6c809f8665e (patch)
treebe3093e98a8b460cfc336852dceec70c65bc9a13
parent9aa2cdf85381afe4e139174d8ddc9f23de60a066 (diff)
downloaddodge-balls-312c8a5cd499b3e221c56794f03cd6c809f8665e.zip
dodge-balls-312c8a5cd499b3e221c56794f03cd6c809f8665e.tar.gz
dodge-balls-312c8a5cd499b3e221c56794f03cd6c809f8665e.tar.bz2
help: New screen
-rw-r--r--src/help.c108
-rw-r--r--src/help.h25
-rw-r--r--src/local.mk2
-rw-r--r--src/main-menu.c2
4 files changed, 137 insertions, 0 deletions
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 <http://www.gnu.org/licenses/>.
+ */
+
+#include <SDL.h>
+#include <SDL_ttf.h>
+#include <config.h>
+#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 <http://www.gnu.org/licenses/>.
+ */
+
+#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 <stdlib.h>
#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