From b0e8f4f379d913423d416582c5d2bf2302ca946b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Arreola=20Rodr=C3=ADguez?= Date: Sun, 13 Oct 2019 13:46:51 -0500 Subject: [PATCH] Agrego puntajes, vidas y texto de nivel. --- data/Makefile.am | 3 +- data/klickclack.ttf | Bin 0 -> 112348 bytes po/bean-counters-classic.pot | 93 ++++++++++++++++++++++ src/Makefile.am | 1 + src/beans.c | 136 ++++++++++++++++++++++++++++--- src/draw-text.c | 150 +++++++++++++++++++++++++++++++++++ src/draw-text.h | 31 ++++++++ 7 files changed, 404 insertions(+), 10 deletions(-) create mode 100644 data/klickclack.ttf create mode 100644 po/bean-counters-classic.pot create mode 100644 src/draw-text.c create mode 100644 src/draw-text.h diff --git a/data/Makefile.am b/data/Makefile.am index e24d33b..ec37ea9 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -134,7 +134,8 @@ nobase_dist_gamedata_DATA = images/background.png \ images/crash_1.png \ images/crash_2.png \ images/crash_3.png \ - images/crash_4.png + images/crash_4.png \ + klickclack.ttf # Instalar los archivos .desktop e iconos applicationsdir = $(datadir)/applications diff --git a/data/klickclack.ttf b/data/klickclack.ttf new file mode 100644 index 0000000000000000000000000000000000000000..043780880e16142ef872d6e4400fe7118fef7b7d GIT binary patch literal 112348 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≪@LPicKCH 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 literal 0 HcmV?d00001 diff --git a/po/bean-counters-classic.pot b/po/bean-counters-classic.pot new file mode 100644 index 0000000..3dc253e --- /dev/null +++ b/po/bean-counters-classic.pot @@ -0,0 +1,93 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# This file is distributed under the same license as the bean-counters-classic package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: bean-counters-classic 0.1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-10-13 13:45-0500\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/beans.c:872 +msgid "LIVES:" +msgstr "" + +#: src/beans.c:873 +msgid "TRUCK:" +msgstr "" + +#: src/beans.c:874 +msgid "SCORE:" +msgstr "" + +#: src/beans.c:1732 +#, c-format +msgid "" +"Error: Can't initialize the video subsystem\n" +"The error returned by SDL is:\n" +"%s\n" +msgstr "" + +#: src/beans.c:1743 +msgid "Bean Counters Classic" +msgstr "" + +#: src/beans.c:1750 +#, c-format +msgid "" +"Error: Can't setup 760x480 video mode.\n" +"The error returned by SDL is:\n" +"%s\n" +msgstr "" + +#: src/beans.c:1759 +#, c-format +msgid "" +"Warning: Can't initialize the audio subsystem\n" +"Continuing...\n" +msgstr "" + +#: src/beans.c:1768 +#, c-format +msgid "Warning: Can't initialize the SDL Mixer library\n" +msgstr "" + +#: src/beans.c:1779 src/beans.c:1906 +#, c-format +msgid "" +"Failed to load data file:\n" +"%s\n" +"The error returned by SDL is:\n" +"%s\n" +msgstr "" + +#: src/beans.c:1806 +#, c-format +msgid "" +"Failed to load data file:\n" +"%s\n" +msgstr "" + +#: src/beans.c:1862 +#, c-format +msgid "" +"Error: Can't initialize the SDL TTF library\n" +"%s\n" +msgstr "" + +#: src/beans.c:1873 +#, c-format +msgid "" +"Failed to load font file 'Klick Clack\n" +"The error returned by SDL is:\n" +"%s\n" +msgstr "" diff --git a/src/Makefile.am b/src/Makefile.am index d07f93e..e87c19e 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -8,6 +8,7 @@ bean_counters_classic_SOURCES = beans.c \ path.c path.h \ collider.c collider.h \ sdl2_rect.c sdl2_rect.h \ + draw-text.c draw-text.h \ gettext.h if MACOSX diff --git a/src/beans.c b/src/beans.c index 16f0294..86316ca 100644 --- a/src/beans.c +++ b/src/beans.c @@ -43,6 +43,7 @@ #include "gfx_blit_func.h" #include "collider.h" +#include "draw-text.h" #define FPS (1000/24) #define RANDOM(x) ((int) (x ## .0 * rand () / (RAND_MAX + 1.0))) @@ -472,6 +473,13 @@ enum { NUM_COLLIDERS }; +enum { + TEXT_LIVES, + TEXT_TRUCKS, + TEXT_SCORE, + NUM_TEXTS +}; + const char *collider_names[NUM_COLLIDERS] = { "collider/bag_3.col", @@ -860,6 +868,11 @@ const int flower_offsets[32][2] = { {334, 382} }; +const char *text_strings[NUM_TEXTS] = { + gettext_noop ("LIVES:"), + gettext_noop ("TRUCK:"), + gettext_noop ("SCORE:") +}; /* Prototipos de función */ int game_intro (void); @@ -874,6 +887,7 @@ void delete_bag (BeanBag *p); /* Variables globales */ SDL_Surface * screen; SDL_Surface * images[NUM_IMAGES]; +SDL_Surface * texts[NUM_TEXTS]; SDL_Surface * penguin_images[NUM_PENGUIN_FRAMES]; int use_sound; Collider *colliders[NUM_COLLIDERS]; @@ -887,6 +901,8 @@ Mix_Music * mus_carnie; BeanBag *first_bag = NULL; BeanBag *last_bag = NULL; +TTF_Font *ttf24_klickclack; + int main (int argc, char *argv[]) { /* Recuperar las rutas del sistema */ initSystemPaths (argv[0]); @@ -1037,8 +1053,21 @@ int game_loop (void) { int fish_max = 4; int fish_counter = 0; int crash_anim = -1; - + int score = 0; int bag_stack = 0; + char buffer[20]; + + SDL_Color negro, blanco; + blanco.r = blanco.g = blanco.b = 255; + blanco.unused = 255; + negro.r = negro.g = negro.b = 0; + negro.unused = 255; + + SDL_Surface *vidas_p, *nivel_p, *score_p; + + vidas_p = draw_text_with_shadow (ttf24_klickclack, 2, "3", blanco, negro); + nivel_p = draw_text_with_shadow (ttf24_klickclack, 2, "1", blanco, negro); + score_p = draw_text_with_shadow (ttf24_klickclack, 2, "0", blanco, negro); SDL_EventState (SDL_MOUSEMOTION, SDL_IGNORE); @@ -1059,9 +1088,15 @@ int game_loop (void) { bags--; if (next_level_visible == NO_NEXT_LEVEL) { - /* TODO: Incrementar score = score + (nivel * 3) */ + score = score + (nivel * 3); + SDL_FreeSurface (score_p); + snprintf (buffer, sizeof (buffer), "%d", score); + score_p = draw_text_with_shadow (ttf24_klickclack, 2, buffer, blanco, negro); } else if (next_level_visible == NEXT_LEVEL) { - /* TODO: Incrementar score = score + (nivel * 25) */ + score = score + (nivel * 25); + SDL_FreeSurface (score_p); + snprintf (buffer, sizeof (buffer), "%d", score); + score_p = draw_text_with_shadow (ttf24_klickclack, 2, buffer, blanco, negro); } /* TODO: Sonido de poner bolsa */ @@ -1196,15 +1231,20 @@ int game_loop (void) { animacion = 0; airbone = 1000; /* El airbone bloquea que salgan más objetos */ vidas--; - + SDL_FreeSurface (vidas_p); + snprintf (buffer, sizeof (buffer), "%d", vidas); + vidas_p = draw_text_with_shadow (ttf24_klickclack, 2, buffer, blanco, negro); /* TODO: Reproducir aquí el sonido de golpe */ } else { gameover_visible = TRUE; printf ("Game Over visible\n"); } } else { - /* Sumar solo si no crasheó al pinguino - * score = score + (nivel * 2); */ + /* Sumar solo si no crasheó al pinguino */ + score = score + (nivel * 2); + SDL_FreeSurface (score_p); + snprintf (buffer, sizeof (buffer), "%d", score); + score_p = draw_text_with_shadow (ttf24_klickclack, 2, buffer, blanco, negro); } airbone--; printf ("Airbone: %i\n", airbone); @@ -1229,6 +1269,9 @@ int game_loop (void) { animacion = 0; airbone = 1000; /* El airbone bloquea que salgan más objetos */ vidas--; + SDL_FreeSurface (vidas_p); + snprintf (buffer, sizeof (buffer), "%d", vidas); + vidas_p = draw_text_with_shadow (ttf24_klickclack, 2, buffer, blanco, negro); } else { gameover_visible = TRUE; printf ("Game Over visible\n"); @@ -1246,6 +1289,9 @@ int game_loop (void) { if (i == SDL_TRUE) { vidas++; + SDL_FreeSurface (vidas_p); + snprintf (buffer, sizeof (buffer), "%d", vidas); + vidas_p = draw_text_with_shadow (ttf24_klickclack, 2, buffer, blanco, negro); /* TODO: Reproducir sonido boing */ /* TODO: Mostrar la notificación de 1 vida */ @@ -1270,6 +1316,9 @@ int game_loop (void) { animacion = 0; airbone = 1000; /* El airbone bloquea que salgan más objetos */ vidas--; + SDL_FreeSurface (vidas_p); + snprintf (buffer, sizeof (buffer), "%d", vidas); + vidas_p = draw_text_with_shadow (ttf24_klickclack, 2, buffer, blanco, negro); } else { gameover_visible = TRUE; } @@ -1295,6 +1344,9 @@ int game_loop (void) { animacion = 0; airbone = 1000; /* El airbone bloquea que salgan más objetos */ vidas--; + SDL_FreeSurface (vidas_p); + snprintf (buffer, sizeof (buffer), "%d", vidas); + vidas_p = draw_text_with_shadow (ttf24_klickclack, 2, buffer, blanco, negro); } else { gameover_visible = TRUE; } @@ -1393,6 +1445,51 @@ int game_loop (void) { SDL_BlitSurface (images[i], NULL, screen, &rect); } + /* Los mensajes de texto van antes de las bolsas */ + rect.x = 30; + rect.y = 8; + rect.w = texts[TEXT_LIVES]->w; + rect.h = texts[TEXT_LIVES]->h; + + SDL_BlitSurface (texts[TEXT_LIVES], NULL, screen, &rect); + + rect.x = 30 + texts[TEXT_LIVES]->w + 2; + rect.y = 8; + rect.w = vidas_p->w; + rect.h = vidas_p->h; + + SDL_BlitSurface (vidas_p, NULL, screen, &rect); + + rect.x = 216; + rect.y = 8; + rect.w = texts[TEXT_TRUCKS]->w; + rect.h = texts[TEXT_TRUCKS]->h; + + SDL_BlitSurface (texts[TEXT_TRUCKS], NULL, screen, &rect); + + rect.x = 216 + texts[TEXT_TRUCKS]->w + 5; + rect.y = 8; + rect.w = nivel_p->w; + rect.h = nivel_p->h; + + SDL_BlitSurface (nivel_p, NULL, screen, &rect); + + rect.x = 390; + rect.y = 8; + rect.w = texts[TEXT_SCORE]->w; + rect.h = texts[TEXT_SCORE]->h; + + SDL_BlitSurface (texts[TEXT_SCORE], NULL, screen, &rect); + + rect.x = 390 + texts[TEXT_SCORE]->w + 5; + rect.h = 8; + rect.w = score_p->w; + rect.h = score_p->h; + + SDL_BlitSurface (score_p, NULL, screen, &rect); + + /* TODO: Dibujar el mensaje de nivel completo */ + /* Dibujar los objetos en pantalla */ thisbag = first_bag; while (thisbag != NULL) { @@ -1518,8 +1615,6 @@ int game_loop (void) { } if (next_level_visible == NEXT_LEVEL) { - - if (animacion < 36) { rect.x = 568 + (198 * animacion) / 36; } else if (animacion >= 36 && animacion < 60) { @@ -1566,6 +1661,9 @@ int game_loop (void) { nivel++; + SDL_FreeSurface (nivel_p); + snprintf (buffer, sizeof (buffer), "%d", nivel); + nivel_p = draw_text_with_shadow (ttf24_klickclack, 2, buffer, blanco, negro); airbone = 0; bag_stack = 0; @@ -1739,8 +1837,28 @@ void setup (void) { exit (1); } + sprintf (buffer_file, "%s%s", systemdata_path, "klickclack.ttf"); + ttf24_klickclack = TTF_OpenFont (buffer_file, 24); + + if (!ttf24_klickclack) { + fprintf (stderr, + _("Failed to load font file 'Klick Clack\n" + "The error returned by SDL is:\n" + "%s\n"), TTF_GetError ()); + SDL_Quit (); + exit (1); + } + // TODO: Favor de manejar correctamente el bind_textdomain_codeset - //bind_textdomain_codeset (PACKAGE, "UTF-8"); + bind_textdomain_codeset (PACKAGE, "UTF-8"); + + SDL_Color negro, blanco; + blanco.r = blanco.g = blanco.b = 255; + negro.r = negro.g = negro.b = 0; + + for (g = 0; g < NUM_TEXTS; g++) { + texts[g] = draw_text_with_shadow (ttf24_klickclack, 2, _(text_strings[g]), blanco, negro); + } } void setup_and_color_penguin (void) { diff --git a/src/draw-text.c b/src/draw-text.c new file mode 100644 index 0000000..850dce8 --- /dev/null +++ b/src/draw-text.c @@ -0,0 +1,150 @@ +/* + * draw-text.c + * This file is part of Find Four + * + * Copyright (C) 2015 - Félix Arreola Rodríguez + * + * Find Four 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 2 of the License, or + * (at your option) any later version. + * + * Find Four 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 Find Four. If not, see . + */ + +#include +#include + +#include "gfx_blit_func.h" +#include "draw-text.h" + +#if SDL_BYTEORDER == SDL_BIG_ENDIAN +#define RMASK 0xff000000 +#define GMASK 0x00ff0000 +#define BMASK 0x0000ff00 +#define AMASK 0x000000ff +#else +#define RMASK 0x000000ff +#define GMASK 0x0000ff00 +#define BMASK 0x00ff0000 +#define AMASK 0xff000000 +#endif + +static char *l_strsep(char **from, const char *delim) { + char *s, *dp, *ret; + + if ((s = *from) == NULL) + return NULL; + + ret = s; + while (*s != '\0') { + /* loop until the end of s, checking against each delimiting character, + * if we find a delimiter set **s to '\0' and return our previous token + * to the user. */ + dp = (char *)delim; + while (*dp != '\0') { + if (*s == *dp) { + *s = '\0'; + *from = s + 1; + return ret; + } + dp++; + } + s++; + } + /* end of string case */ + *from = NULL; + return ret; +} + +SDL_Surface *draw_text (TTF_Font *font, const char *cadena, SDL_Color *color) { + SDL_Surface *final, **text; + SDL_Rect dest_rect; + int n_tokens; + int g, len, maxw; + char *dup, *str_token, *original; + + /* Si contiene saltos de linea, llamar a la otra función */ + if (strchr (cadena, '\n') != NULL) { + len = strlen (cadena); + for (g = 0, n_tokens = 1; g < len; g++) { + if (cadena[g] == '\n') n_tokens++; + } + len = TTF_FontLineSkip (font) * n_tokens; + + text = (SDL_Surface **) malloc (sizeof (SDL_Surface *) * n_tokens); + original = dup = strdup (cadena); + + str_token = l_strsep (&dup, "\n"); + g = 0; maxw = 0; + while (str_token != NULL) { + if (str_token[0] != '\0') { + text[g] = TTF_RenderUTF8_Blended (font, str_token, *color); + if (text[g]->w > maxw) maxw = text[g]->w; + } else { + text[g] = NULL; + } + g++; + str_token = l_strsep (&dup, "\n"); + }; + final = SDL_CreateRGBSurface (SDL_SWSURFACE, maxw, len, 32, RMASK, GMASK, BMASK, AMASK); + + SDL_FillRect (final, NULL, SDL_MapRGBA (final->format, 0, 0, 0, 0)); + /*SDL_SetAlpha(final, 0, SDL_ALPHA_OPAQUE);*/ + len = TTF_FontLineSkip (font); + for (g = 0; g < n_tokens; g++) { + if (text[g] == NULL) continue; + SDL_SetAlpha (text[g], 0, SDL_ALPHA_OPAQUE); + dest_rect.x = (maxw - text[g]->w) / 2; + dest_rect.y = len * g; + dest_rect.w = text[g]->w; + dest_rect.h = text[g]->h; + /*fprintf (stdout, "UMASK, R: %i, G: %i, B: %i, A: %i\n", text->format->Rmask, text->format->Gmask, text->format->Bmask, text->format->Amask);*/ + SDL_BlitSurface (text[g], NULL, final, &dest_rect); + SDL_FreeSurface (text[g]); + } + SDL_SetAlpha(final, SDL_SRCALPHA, SDL_ALPHA_OPAQUE); + free (text); + free (original); + return final; + } else { + /* En caso contrario, renderizarla nosotros mismos */ + return TTF_RenderUTF8_Blended (font, cadena, *color); + } +} + +SDL_Surface *draw_text_with_shadow (TTF_Font *font, int outline, const char *text, SDL_Color foreground, SDL_Color background) { + SDL_Surface *black_letters, *white_letters; + SDL_Rect rect; + + /* Algunas validaciones */ + if (!font) { + return NULL; + } + + if (!text || text[0] == '\0') { + /* Texto vacio */ + return NULL; + } + + TTF_SetFontOutline (font, outline); + black_letters = TTF_RenderUTF8_Blended (font, text, background); + + TTF_SetFontOutline (font, 0); + white_letters = TTF_RenderUTF8_Blended (font, text, foreground); + + rect.w = white_letters->w; rect.h = white_letters->h; + rect.x = rect.y = outline; + + SDL_gfxBlitRGBA (white_letters, NULL, black_letters, &rect); + + SDL_FreeSurface (white_letters); + + return black_letters; +} diff --git a/src/draw-text.h b/src/draw-text.h new file mode 100644 index 0000000..a713acf --- /dev/null +++ b/src/draw-text.h @@ -0,0 +1,31 @@ +/* + * draw-text.h + * This file is part of Find Four + * + * Copyright (C) 2015 - Félix Arreola Rodríguez + * + * Find Four 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 2 of the License, or + * (at your option) any later version. + * + * Find Four 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 Find Four. If not, see . + */ + +#ifndef __DRAW_TEXT_H__ +#define __DRAW_TEXT_H__ + +#include +#include + +SDL_Surface *draw_text (TTF_Font *font, const char *cadena, SDL_Color *color); +SDL_Surface *draw_text_with_shadow (TTF_Font *font, int outline, const char *text, SDL_Color foreground, SDL_Color background); + +#endif /* __DRAW_TEXT_H__ */ +