From 787cb6366ff51a4371de7f88acb54e879894c752 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Mon, 28 Oct 2024 20:45:24 +0100 Subject: [PATCH] Pasaeta de include-what-you-use Acabada de perfilar la classe PathSprite Menjeades declaracions de utils.h als fitxers que toca --- linux_utils/check_all_includes.sh | 8 ++ source/animated_sprite.cpp | 14 +-- source/animated_sprite.h | 13 +- source/asset.cpp | 13 +- source/background.cpp | 19 ++- source/balloon.cpp | 13 +- source/balloon.h | 15 ++- source/bullet.cpp | 9 +- source/bullet.h | 17 ++- source/define_buttons.cpp | 15 ++- source/director.cpp | 82 ++++++------- source/director.h | 15 +-- source/enter_name.cpp | 3 +- source/explosions.cpp | 18 +-- source/explosions.h | 14 +-- source/fade.cpp | 13 +- source/game.cpp | 79 ++++++------- source/game.h | 53 ++++----- source/game_logo.cpp | 21 ++-- source/game_logo.h | 11 +- source/global_inputs.cpp | 19 ++- source/hiscore_table.cpp | 42 +++---- source/instructions.cpp | 44 ++++--- source/instructions.h | 21 ++-- source/intro.cpp | 36 +++--- source/intro.h | 15 ++- source/logo.cpp | 28 ++--- source/main.cpp | 5 +- source/manage_hiscore_table.cpp | 11 +- source/manage_hiscore_table.h | 12 +- source/moving_sprite.cpp | 3 +- source/moving_sprite.h | 11 +- source/notifier.cpp | 35 ++---- source/on_screen_help.cpp | 22 ++-- source/options.h | 90 +++++++++++++- source/param.h | 77 +++++++++++- source/path_sprite.cpp | 86 +++++++------- source/path_sprite.h | 47 ++++---- source/player.cpp | 21 ++-- source/player.h | 23 ++-- source/resource.cpp | 13 +- source/resource.h | 18 +-- source/scoreboard.cpp | 24 ++-- source/screen.cpp | 32 ++--- source/screen.h | 17 ++- source/smart_sprite.cpp | 3 +- source/text.cpp | 14 +-- source/text.h | 13 +- source/texture.cpp | 21 ++-- source/tiled_bg.cpp | 15 ++- source/tiled_bg.h | 5 +- source/title.cpp | 47 ++++---- source/title.h | 27 ++--- source/utils.cpp | 42 +++++-- source/utils.h | 189 ++---------------------------- 55 files changed, 768 insertions(+), 805 deletions(-) create mode 100644 linux_utils/check_all_includes.sh diff --git a/linux_utils/check_all_includes.sh b/linux_utils/check_all_includes.sh new file mode 100644 index 0000000..3329bf3 --- /dev/null +++ b/linux_utils/check_all_includes.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +SOURCEPATH=../source/ + +for i in "$SOURCEPATH"/*.cpp +do + include-what-you-use -D DEBUG -D VERBOSE -std=c++20 -Wall "$i" +done diff --git a/source/animated_sprite.cpp b/source/animated_sprite.cpp index 9025906..1df4f78 100644 --- a/source/animated_sprite.cpp +++ b/source/animated_sprite.cpp @@ -1,11 +1,11 @@ #include "animated_sprite.h" -#include // para copy -#include // para basic_ostream, operator<<, basic_istream, basic... -#include // para cout -#include // para back_insert_iterator, back_inserter -#include // para basic_stringstream -#include "texture.h" // para Texture -#include "utils.h" +#include // Para size_t +#include // Para basic_ostream, basic_istream, operator<<, basic... +#include // Para cout, cerr +#include // Para basic_stringstream +#include // Para runtime_error +#include "texture.h" // Para Texture +#include "utils.h" // Para printWithDots // Carga las animaciones en un vector(Animations) desde un fichero AnimationsFileBuffer loadAnimationsFromFile(const std::string &file_path) diff --git a/source/animated_sprite.h b/source/animated_sprite.h index bead0c0..e2cc6f5 100644 --- a/source/animated_sprite.h +++ b/source/animated_sprite.h @@ -1,12 +1,11 @@ #pragma once -#include // para SDL_Rect -#include // para Uint8 -#include // para shared_ptr -#include // para string -#include // para vector -#include "moving_sprite.h" // para MovingSprite -class Texture; +#include // Para SDL_Rect +#include // Para shared_ptr +#include // Para string +#include // Para vector +#include "moving_sprite.h" // Para MovingSprite +class Texture; // lines 9-9 struct Animation { diff --git a/source/asset.cpp b/source/asset.cpp index b155608..68704bc 100644 --- a/source/asset.cpp +++ b/source/asset.cpp @@ -1,12 +1,9 @@ #include "asset.h" -#include "utils.h" -#include // para SDL_RWFromFile, SDL_RWclose, SDL_RWops -#include // para SDL_max -#include // para size_t -#include // para basic_ostream, operator<<, cout, endl -#include -#include -#include // Para std::find_if +#include // Para find_if, max +#include // Para basic_ostream, operator<<, basic_ifstream, endl +#include // Para cout +#include // Para allocator, char_traits, string, operator+, oper... +#include "utils.h" // Para getFileName, printWithDots // [SINGLETON] Hay que definir las variables estáticas, desde el .h sólo la hemos declarado Asset *Asset::asset_ = nullptr; diff --git a/source/background.cpp b/source/background.cpp index fd10974..8cb2208 100644 --- a/source/background.cpp +++ b/source/background.cpp @@ -1,14 +1,13 @@ #include "background.h" -#include // para SDL_BLENDMODE_BLEND -#include // para SDL_PIXELFORMAT_RGBA8888 -#include // para clamp, max -#include "asset.h" // para Asset -#include "moving_sprite.h" // para MovingSprite -#include "param.h" // para param -#include "resource.h" // para Resource -#include "screen.h" -#include "sprite.h" // para Sprite -#include "texture.h" // para Texture +#include // Para SDL_BLENDMODE_BLEND +#include // Para SDL_PIXELFORMAT_RGBA8888 +#include // Para clamp, max +#include "moving_sprite.h" // Para MovingSprite +#include "param.h" // Para Param, ParamBackground, param +#include "resource.h" // Para Resource +#include "screen.h" // Para Screen +#include "sprite.h" // Para Sprite +#include "texture.h" // Para Texture // Constructor Background::Background() diff --git a/source/balloon.cpp b/source/balloon.cpp index fbfb6cb..00f18f5 100644 --- a/source/balloon.cpp +++ b/source/balloon.cpp @@ -1,11 +1,10 @@ #include "balloon.h" -#include // para abs -#include // para clamp -#include "animated_sprite.h" // para SpriteAnimated -#include "moving_sprite.h" // para MovingSprite -#include "param.h" // para param -#include "sprite.h" // para Sprite -#include "texture.h" // para Texture +#include // Para clamp +#include // Para fabs +#include "animated_sprite.h" // Para AnimatedSprite +#include "param.h" // Para Param, param, ParamBalloon, ParamGame +#include "sprite.h" // Para Sprite +#include "texture.h" // Para Texture // Constructor Balloon::Balloon(float x, float y, BalloonType type, BalloonSize size, float vel_x, float speed, Uint16 creation_timer, std::shared_ptr texture, const std::vector &animation) diff --git a/source/balloon.h b/source/balloon.h index 3b1cebd..c39c042 100644 --- a/source/balloon.h +++ b/source/balloon.h @@ -1,13 +1,12 @@ #pragma once -#include // para Uint8, Uint16, Uint32 -#include // para shared_ptr, unique_ptr -#include // para string -#include // para vector -#include "animated_sprite.h" // para SpriteAnimated -#include "utils.h" // para Circle -#include "param.h" -class Texture; +#include // Para Uint8, Uint16, Uint32 +#include // Para shared_ptr, unique_ptr +#include // Para string +#include // Para vector +#include "animated_sprite.h" // Para AnimatedSprite +#include "utils.h" // Para Circle +class Texture; // lines 10-10 // Cantidad de elementos del vector con los valores de la deformación del globo al rebotar constexpr int MAX_BOUNCE = 10; diff --git a/source/bullet.cpp b/source/bullet.cpp index fc24d93..5140181 100644 --- a/source/bullet.cpp +++ b/source/bullet.cpp @@ -1,8 +1,9 @@ #include "bullet.h" -#include // para unique_ptr, make_unique, shared_ptr -#include "param.h" // para param -#include "sprite.h" // para Sprite -class Texture; +#include // Para SDL_Rect +#include // Para unique_ptr, make_unique, shared_ptr +#include "param.h" // Para Param, ParamGame, param +#include "sprite.h" // Para Sprite +class Texture; // lines 5-5 // Constructor Bullet::Bullet(int x, int y, BulletType bullet_type, bool powered_up, int owner, std::shared_ptr texture) diff --git a/source/bullet.h b/source/bullet.h index 87d09d7..4eb5688 100644 --- a/source/bullet.h +++ b/source/bullet.h @@ -1,11 +1,10 @@ #pragma once -#include // para SDL_Rect -#include // para Uint8 -#include // para shared_ptr, unique_ptr -#include "sprite.h" // para Sprite -#include "utils.h" // para Circle -class Texture; +#include // Para Uint8 +#include // Para shared_ptr, unique_ptr +#include "sprite.h" // Para Sprite +#include "utils.h" // Para Circle +class Texture; // lines 8-8 // Tipos de balas enum class BulletType : Uint8 @@ -36,9 +35,9 @@ private: std::unique_ptr sprite_; // Sprite con los gráficos y métodos de pintado - int pos_x_; // Posición en el eje X - int pos_y_; // Posición en el eje Y - int vel_x_; // Velocidad en el eje X + int pos_x_; // Posición en el eje X + int pos_y_; // Posición en el eje Y + int vel_x_; // Velocidad en el eje X BulletType bullet_type_; // Tipo de objeto int owner_; // Identificador del dueño del objeto diff --git a/source/define_buttons.cpp b/source/define_buttons.cpp index b1db147..fa37ac6 100644 --- a/source/define_buttons.cpp +++ b/source/define_buttons.cpp @@ -1,12 +1,11 @@ #include "define_buttons.h" -#include // para move -#include "input.h" // para Input, InputType -#include "lang.h" // para getText -#include "options.h" // para options -#include "param.h" // para param -#include "section.h" // para Name, Options, name, options -#include "text.h" // para Text -#include "utils.h" // para OptionsController, Options, Param, ParamGame +#include // Para move +#include "input.h" // Para Input, InputType +#include "lang.h" // Para getText +#include "options.h" // Para OptionsController, Options, options +#include "param.h" // Para Param, param, ParamGame, ParamTitle +#include "section.h" // Para Name, Options, name, options +#include "text.h" // Para Text // Constructor DefineButtons::DefineButtons(std::unique_ptr text_) diff --git a/source/director.cpp b/source/director.cpp index 59e5b3b..f74e7bd 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -1,44 +1,46 @@ #include "director.h" -#include // para SDL_Init, SDL_Quit, SDL_INIT_EV... -#include // para AUDIO_S16 -#include // para SDL_BLENDMODE_BLEND -#include // para SDL_GetError -#include // para SDL_CONTROLLER_BUTTON_B, SDL_CO... -#include // para SDL_SetHint, SDL_HINT_RENDER_DR... -#include // para SDL_SCANCODE_0, SDL_SCANCODE_DOWN -#include // para SDL_bool, Uint32 -#include // para SDL_GetTicks -#include // para system -#include // para errno, EEXIST, EACCES, ENAMETOO... -#include // para printf, perror -#include // para strcmp -#include // para mkdir, stat, S_IRWXU -#include // para getuid -#include // para exit, EXIT_FAILURE, rand, srand -#include // para basic_ostream, operator<<, cout -#include // para make_unique, unique_ptr -#include // para operator+, allocator, char_traits -#include "asset.h" // para Asset, AssetType -#include "dbgtxt.h" // para dbg_init -#include "game.h" // para Game, GAME_MODE_DEMO_OFF, GAME_... -#include "global_inputs.h" // para init -#include "hiscore_table.h" // para HiScoreTable -#include "input.h" // para Input, InputType -#include "instructions.h" // para Instructions -#include "intro.h" // para Intro -#include "jail_audio.h" // para JA_LoadMusic, JA_LoadSound, JA_... -#include "lang.h" // para Code, loadFromFile -#include "logo.h" // para Logo -#include "manage_hiscore_table.h" // para ManageHiScoreTable -#include "notifier.h" // para Notifier -#include "on_screen_help.h" // para OnScreenHelp -#include "options.h" // para options, loadOptionsFile, saveO... -#include "param.h" // para param, loadParamsFromFile -#include "resource.h" //for Resource -#include "screen.h" // para Screen -#include "section.h" // para Name, name, Options, options -#include "title.h" // para Title -#include "utils.h" // para MusicFile, SoundFile, Options +#include // Para SDL_Init, SDL_Quit, SDL_INIT_EV... +#include // Para AUDIO_S16 +#include // Para SDL_BLENDMODE_BLEND +#include // Para SDL_GetError +#include // Para SDL_CONTROLLER_BUTTON_B, SDL_CO... +#include // Para SDL_SetHint, SDL_HINT_RENDER_DR... +#include // Para SDL_SCANCODE_0, SDL_SCANCODE_DOWN +#include // Para SDL_bool, Uint32 +#include // Para SDL_GetTicks +#include // Para errno, EEXIST, EACCES, ENAMETOO... +#include // Para printf, perror +#include // Para strcmp +#include // Para mkdir, stat, S_IRWXU +#include // Para getuid +#include // Para exit, EXIT_FAILURE, rand, srand +#include // Para basic_ostream, operator<<, cout +#include // Para make_unique, unique_ptr, make_s... +#include // Para runtime_error +#include // Para operator+, allocator, char_traits +#include // Para vector +#include "asset.h" // Para Asset, AssetType +#include "dbgtxt.h" // Para dbg_init +#include "game.h" // Para Game, GAME_MODE_DEMO_OFF, GAME_... +#include "global_inputs.h" // Para init +#include "hiscore_table.h" // Para HiScoreTable +#include "input.h" // Para Input, InputType +#include "instructions.h" // Para Instructions +#include "intro.h" // Para Intro +#include "jail_audio.h" // Para JA_EnableMusic, JA_EnableSound +#include "lang.h" // Para Code, loadFromFile +#include "logo.h" // Para Logo +#include "manage_hiscore_table.h" // Para ManageHiScoreTable +#include "notifier.h" // Para Notifier +#include "on_screen_help.h" // Para OnScreenHelp +#include "options.h" // Para Options, options, OptionsContro... +#include "param.h" // Para Param, ParamGame, param, loadPa... +#include "resource.h" // Para Resource +#include "screen.h" // Para Screen +#include "section.h" // Para Name, Options, name, options +#include "text.h" // Para Text +#include "title.h" // Para Title +#include "utils.h" // Para Overrides, overrides #ifndef _WIN32 #include // para getpwuid, passwd diff --git a/source/director.h b/source/director.h index 10f3ef0..ab74c51 100644 --- a/source/director.h +++ b/source/director.h @@ -1,15 +1,12 @@ #pragma once -#include // para SDL_Renderer -#include // para SDL_Window -#include // para string -#include // para vector +#include // Para SDL_Renderer +#include // Para SDL_Window +#include // Para string namespace lang { enum class Code : int; -} -struct ResourceMusic; -struct ResourceSound; +} // lines 9-9 // Textos constexpr char WINDOW_CAPTION[] = "Coffee Crisis Arcade Edition"; @@ -18,8 +15,8 @@ class Director { private: // Objetos y punteros - SDL_Window *window_; // La ventana donde dibujamos - SDL_Renderer *renderer_; // El renderizador de la ventana + SDL_Window *window_; // La ventana donde dibujamos + SDL_Renderer *renderer_; // El renderizador de la ventana #ifndef VERBOSE std::streambuf *orig_buf; // Puntero al buffer de flujo original para restaurar std::cout #endif diff --git a/source/enter_name.cpp b/source/enter_name.cpp index 54a06b4..4e642e5 100644 --- a/source/enter_name.cpp +++ b/source/enter_name.cpp @@ -1,5 +1,6 @@ #include "enter_name.h" -#include // para max, min +#include // Para size_t +#include // Para max, min // Constructor EnterName::EnterName() diff --git a/source/explosions.cpp b/source/explosions.cpp index b4fc259..2c0a74d 100644 --- a/source/explosions.cpp +++ b/source/explosions.cpp @@ -1,20 +1,6 @@ #include "explosions.h" -#include // para move -#include "animated_sprite.h" // para SpriteAnimated -class Texture; // lines 3-3 - -// Constructor -Explosions::Explosions() -{ - textures_.clear(); - explosions_.clear(); -} - -// Destructor -Explosions::~Explosions() -{ - explosions_.clear(); -} +#include "animated_sprite.h" // Para AnimatedSprite +class Texture; // lines 4-4 // Actualiza la lógica de la clase void Explosions::update() diff --git a/source/explosions.h b/source/explosions.h index 1cb95b9..1661032 100644 --- a/source/explosions.h +++ b/source/explosions.h @@ -1,10 +1,10 @@ #pragma once -#include // para shared_ptr, unique_ptr -#include // para string -#include // para vector -class AnimatedSprite; -class Texture; +#include // Para unique_ptr, shared_ptr +#include // Para string +#include // Para vector +#include "animated_sprite.h" // Para AnimatedSprite +class Texture; // lines 7-7 struct ExplosionTexture { @@ -33,10 +33,10 @@ private: public: // Constructor - Explosions(); + Explosions() = default; // Destructor - ~Explosions(); + ~Explosions() = default; // Actualiza la lógica de la clase void update(); diff --git a/source/fade.cpp b/source/fade.cpp index 775bbba..160dea8 100644 --- a/source/fade.cpp +++ b/source/fade.cpp @@ -1,11 +1,10 @@ #include "fade.h" -#include // para SDL_BLENDMODE_BLEND, SDL_BLENDMODE_NONE -#include // para SDL_PIXELFORMAT_RGBA8888 -#include // para rand -#include // para min, max -#include "param.h" // para param -#include "screen.h" -#include "utils.h" // para Param, ParamGame, ParamFade +#include // Para SDL_BLENDMODE_BLEND, SDL_BLENDMODE_NONE +#include // Para SDL_PIXELFORMAT_RGBA8888 +#include // Para rand +#include // Para min, max +#include "param.h" // Para Param, param, ParamGame, ParamFade +#include "screen.h" // Para Screen // Constructor Fade::Fade() diff --git a/source/game.cpp b/source/game.cpp index c822f8a..29b1d2f 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -1,44 +1,39 @@ #include "game.h" -#include // para SDL_BLENDMODE_BLEND -#include // para SDL_PollEvent, SDL_Event, SDL_KEYDOWN -#include // para SDLK_1, SDLK_2, SDLK_3, SDLK_4 -#include // para SDL_PIXELFORMAT_RGBA8888 -#include // para SDL_RWFromFile, SDL_RWclose, SDL_R... -#include // para SDL_GetTicks -#include // para SDL_WINDOWEVENT_FOCUS_GAINED, SDL_... -#include // para rand -#include // para min, remove_if -#include // para basic_ostream, operator<<, basic_i... -#include // para cout -#include // para accumulate -#include // para move -#include "asset.h" // para Asset -#include "background.h" // para Background -#include "balloon.h" // para Balloon, BALLOON_SCORE_1, BALLOON_... -#include "balloon_formations.h" // para Stage, BalloonFormationParams, Bal... -#include "bullet.h" // para Bullet, BulletType, BulletMoveStatus -#include "explosions.h" // para Explosions -#include "fade.h" // para Fade, FadeType -#include "global_inputs.h" // para check -#include "input.h" // para InputType, Input, INPUT_DO_NOT_ALL... -#include "item.h" // para Item, ItemType::COFFEE_MACHINE, ItemType::CLOCK -#include "jail_audio.h" // para JA_PlaySound -#include "lang.h" // para getText -#include "manage_hiscore_table.h" // para ManageHiScoreTable -#include "notifier.h" // para Notifier -#include "param.h" // para param -#include "path_sprite.h" // para PathSprite -#include "player.h" // para Player, PlayerStatus -#include "resource.h" // para Resource -#include "scoreboard.h" // para Scoreboard, ScoreboardMode, SCOREB... -#include "screen.h" // para Screen -#include "section.h" // para Name, name, Options, options -#include "smart_sprite.h" // para SpriteSmart -#include "text.h" // para Text, TEXT_CENTER -#include "texture.h" // para Texture -struct JA_Music_t; // lines 35-35 -struct JA_Sound_t; // lines 36-36 -#include "dbgtxt.h" +#include // Para SDL_BLENDMODE_BLEND +#include // Para SDL_PollEvent, SDL_Event, SDL_KEYDOWN +#include // Para SDLK_1, SDLK_2, SDLK_3, SDLK_4 +#include // Para SDL_PIXELFORMAT_RGBA8888 +#include // Para SDL_GetTicks +#include // Para SDL_WINDOWEVENT_FOCUS_GAINED, SDL_... +#include // Para rand, size_t +#include // Para find_if, clamp, min, remove_if +#include // Para distance, size +#include // Para accumulate +#include "asset.h" // Para Asset +#include "background.h" // Para Background +#include "balloon.h" // Para Balloon, BALLOON_SCORE, BALLOON_VE... +#include "balloon_formations.h" // Para BalloonFormations, BalloonFormatio... +#include "bullet.h" // Para Bullet, BulletType, BulletMoveStatus +#include "explosions.h" // Para Explosions +#include "fade.h" // Para Fade, FadeType +#include "global_inputs.h" // Para check +#include "input.h" // Para InputType, Input, INPUT_DO_NOT_ALL... +#include "item.h" // Para Item, ItemType +#include "jail_audio.h" // Para JA_PlaySound, JA_GetMusicState +#include "lang.h" // Para getText +#include "manage_hiscore_table.h" // Para ManageHiScoreTable +#include "notifier.h" // Para Notifier +#include "param.h" // Para Param, param, ParamGame, ParamFade +#include "path_sprite.h" // Para PathSprite, PathType +#include "player.h" // Para Player, PlayerStatus +#include "resource.h" // Para Resource +#include "scoreboard.h" // Para Scoreboard, ScoreboardMode, SCOREB... +#include "screen.h" // Para Screen +#include "section.h" // Para Name, name, Options, options +#include "smart_sprite.h" // Para SmartSprite +#include "text.h" // Para Text, TEXT_CENTER +#include "texture.h" // Para Texture +struct JA_Sound_t; // lines 40-40 // Constructor Game::Game(int player_id, int current_stage, bool demo) @@ -1579,8 +1574,8 @@ void Game::checkEvents() { const auto x = players_.at(0)->getPosX(); createPathSprite(game_text_textures_.at(3)); - path_sprites_.back()->addVerticalPath({x,220}, {x,170}, 100, 5); - path_sprites_.back()->addVerticalPath({x,170}, {x,-20}, 120, 5); + path_sprites_.back()->addPath(220, 160, PathType::VERTICAL, x, 100, easeOutQuint, 0); + path_sprites_.back()->addPath(160, -21, PathType::VERTICAL, x, 80, easeInQuint, 0); break; } default: diff --git a/source/game.h b/source/game.h index c174707..d0a4fa8 100644 --- a/source/game.h +++ b/source/game.h @@ -1,32 +1,31 @@ #pragma once -#include // para SDL_Renderer, SDL_Texture -#include // para Uint32 -#include // para shared_ptr, unique_ptr -#include // para string -#include // para vector -#include "balloon.h" // para Balloon -#include "player.h" // para Player -#include "utils.h" // para DemoKeys, Color, HiScoreEntry -#include "options.h" // para options -class Asset; -class Background; -class BalloonFormations; -class Bullet; -class Explosions; -class Fade; -class Input; -class Item; -class PathSprite; -class Scoreboard; -class Screen; -class SmartSprite; -class Text; -class Texture; -enum class BulletType : Uint8; // lines 26-26 -struct JA_Music_t; // lines 27-27 -struct JA_Sound_t; // lines 28-28 -enum class ItemType; +#include // Para SDL_Renderer, SDL_Texture +#include // Para Uint32, Uint8 +#include // Para shared_ptr, unique_ptr +#include // Para string +#include // Para vector +#include "balloon.h" // Para Balloon +#include "manage_hiscore_table.h" // Para HiScoreEntry +#include "options.h" // Para Options, OptionsGame, options +#include "player.h" // Para Player +#include "utils.h" // Para Demo +class Asset; // lines 12-12 +class Background; // lines 13-13 +class BalloonFormations; // lines 14-14 +class Bullet; // lines 15-15 +class Explosions; // lines 16-16 +class Fade; // lines 17-17 +class Input; // lines 18-18 +class Item; // lines 19-19 +class PathSprite; // lines 20-20 +class Scoreboard; // lines 21-21 +class Screen; // lines 22-22 +class SmartSprite; // lines 23-23 +class Text; // lines 24-24 +class Texture; // lines 25-25 +enum class BulletType : Uint8; // lines 26-26 +enum class ItemType; // lines 27-27 // Modo demo constexpr bool GAME_MODE_DEMO_OFF = false; diff --git a/source/game_logo.cpp b/source/game_logo.cpp index bbc8101..365b4bb 100644 --- a/source/game_logo.cpp +++ b/source/game_logo.cpp @@ -1,16 +1,13 @@ #include "game_logo.h" -#include // para SDL_FLIP_HORIZONTAL -#include // para max -#include "animated_sprite.h" // para SpriteAnimated -#include "asset.h" // para Asset -#include "jail_audio.h" // JA_PlaySound -#include "param.h" // para param -#include "resource.h" // para Resource -#include "screen.h" // para Screen -#include "smart_sprite.h" // para SpriteSmart -#include "sprite.h" // para Sprite -#include "texture.h" // para Texture -#include "utils.h" // para Param, ParamGame, ParamTitle +#include // Para SDL_FLIP_HORIZONTAL +#include // Para max +#include "animated_sprite.h" // Para AnimatedSprite +#include "jail_audio.h" // Para JA_PlaySound +#include "param.h" // Para Param, param, ParamGame, ParamTitle +#include "resource.h" // Para Resource +#include "smart_sprite.h" // Para SmartSprite +#include "sprite.h" // Para Sprite +#include "texture.h" // Para Texture // Constructor GameLogo::GameLogo(int x, int y) diff --git a/source/game_logo.h b/source/game_logo.h index a2fb8e0..098fa52 100644 --- a/source/game_logo.h +++ b/source/game_logo.h @@ -1,11 +1,10 @@ #pragma once -#include // para unique_ptr, shared_ptr -#include "animated_sprite.h" -#include "smart_sprite.h" -class Sprite; -class Texture; -struct JA_Sound_t; // lines 10-10 +#include // Para unique_ptr, shared_ptr +#include "animated_sprite.h" // Para AnimatedSprite +#include "smart_sprite.h" // Para SmartSprite +#include "sprite.h" // Para Sprite +class Texture; // lines 7-7 // Clase GameLogo class GameLogo diff --git a/source/global_inputs.cpp b/source/global_inputs.cpp index bd19a44..0d4356c 100644 --- a/source/global_inputs.cpp +++ b/source/global_inputs.cpp @@ -1,14 +1,13 @@ #include "global_inputs.h" -#include // para basic_string, operator+ -#include "input.h" // para Input, inputs_e, INPUT_DO_NOT_ALLOW_REPEAT -#include "jail_audio.h" // para JA_EnableMusic, JA_EnableSound -#include "lang.h" // para getText -#include "notifier.h" // para Notifier -#include "options.h" // para options -#include "on_screen_help.h" -#include "screen.h" // para Screen -#include "section.h" // para SectionOptions, name, SectionName, options -#include "utils.h" // para OptionsAudio, Options, OptionsMusic, boolToOnOff +#include // Para operator+, string +#include "input.h" // Para Input, InputType, INPUT_DO_NOT_ALLOW_REPEAT +#include "jail_audio.h" // Para JA_EnableMusic, JA_EnableSound +#include "lang.h" // Para getText +#include "notifier.h" // Para Notifier +#include "on_screen_help.h" // Para OnScreenHelp +#include "options.h" // Para Options, OptionsAudio, options, OptionsM... +#include "section.h" // Para Name, Options, name, options +#include "utils.h" // Para boolToOnOff, stringInVector namespace globalInputs { diff --git a/source/hiscore_table.cpp b/source/hiscore_table.cpp index 870abaf..6005eda 100644 --- a/source/hiscore_table.cpp +++ b/source/hiscore_table.cpp @@ -1,25 +1,25 @@ #include "hiscore_table.h" -#include // para SDL_BLENDMODE_BLEND -#include // para SDL_PollEvent, SDL_Event, SDL_QUIT -#include // para SDL_PIXELFORMAT_RGBA8888 -#include // para SDL_GetTicks -#include // para SDL_WINDOWEVENT_SIZE_CHANGED -#include // para max -#include // para vector -#include "asset.h" // para Asset -#include "background.h" // para Background -#include "fade.h" // para Fade, FadeMode, FadeType -#include "global_inputs.h" // para check -#include "input.h" // para Input -#include "jail_audio.h" // para JA_GetMusicState, JA_Music_state -#include "lang.h" // para getText -#include "options.h" // para options -#include "param.h" // para param -#include "resource.h" // para Resource -#include "screen.h" // para Screen -#include "section.h" // para Name, name, Options, options -#include "text.h" // para Text, TEXT_CENTER, TEXT_SHADOW, TEXT... -#include "utils.h" // para Param, ParamGame, Color, HiScoreEntry +#include // Para SDL_BLENDMODE_BLEND +#include // Para SDL_PollEvent, SDL_Event, SDL_QUIT +#include // Para SDL_PIXELFORMAT_RGBA8888 +#include // Para SDL_GetTicks +#include // Para SDL_WINDOWEVENT_SIZE_CHANGED +#include // Para max +#include // Para vector +#include "background.h" // Para Background +#include "fade.h" // Para Fade, FadeMode, FadeType +#include "global_inputs.h" // Para check +#include "input.h" // Para Input +#include "jail_audio.h" // Para JA_GetMusicState, JA_Music_state +#include "lang.h" // Para getText +#include "manage_hiscore_table.h" // Para HiScoreEntry +#include "options.h" // Para Options, OptionsGame, options +#include "param.h" // Para Param, param, ParamGame, ParamFade +#include "resource.h" // Para Resource +#include "screen.h" // Para Screen +#include "section.h" // Para Name, name, Options, options +#include "text.h" // Para Text, TEXT_CENTER, TEXT_SHADOW +#include "utils.h" // Para Color, Zone, fade_color, orange_color // Constructor HiScoreTable::HiScoreTable() diff --git a/source/instructions.cpp b/source/instructions.cpp index 1e6fca9..10aaaf9 100644 --- a/source/instructions.cpp +++ b/source/instructions.cpp @@ -1,27 +1,25 @@ #include "instructions.h" -#include // para SDL_BLENDMODE_BLEND -#include // para SDL_PollEvent, SDL_Event, SDL_QUIT -#include // para SDL_PIXELFORMAT_RGBA8888 -#include // para SDL_GetTicks -#include // para SDL_WINDOWEVENT_SIZE_CHANGED -#include // para max -#include // para move -#include "asset.h" // para Asset -#include "fade.h" // para Fade, FadeMode, FadeType -#include "global_inputs.h" // para check -#include "input.h" // para Input -#include "jail_audio.h" // para JA_GetMusicState, JA_Music_state -#include "lang.h" // para getText -#include "param.h" // para param -#include "resource.h" // para Resource -#include "screen.h" // para Screen -#include "section.h" // para Name, name, Options, options -#include "sprite.h" // para Sprite -#include "text.h" // para Text, TEXT_CENTER, TEXT_COLOR, TEXT_... -#include "texture.h" // para Texture -#include "tiled_bg.h" // para TiledBG, TILED_MODE_STATIC -#include "utils.h" // para Param, ParamGame, Color, shdw_txt_color -struct JA_Music_t; // lines 22-22 +#include // Para SDL_BLENDMODE_BLEND +#include // Para SDL_PollEvent, SDL_Event, SDL_QUIT +#include // Para SDL_PIXELFORMAT_RGBA8888 +#include // Para SDL_GetTicks +#include // Para SDL_WINDOWEVENT_SIZE_CHANGED +#include // Para max +#include // Para move +#include "fade.h" // Para Fade, FadeMode, FadeType +#include "global_inputs.h" // Para check +#include "input.h" // Para Input +#include "jail_audio.h" // Para JA_GetMusicState, JA_Music_state +#include "lang.h" // Para getText +#include "param.h" // Para Param, param, ParamGame, ParamFade +#include "resource.h" // Para Resource +#include "screen.h" // Para Screen +#include "section.h" // Para Name, name, Options, options +#include "sprite.h" // Para Sprite +#include "text.h" // Para Text, TEXT_CENTER, TEXT_COLOR, TEXT_... +#include "texture.h" // Para Texture +#include "tiled_bg.h" // Para TiledBG, TiledBGMode +#include "utils.h" // Para Color, shdw_txt_color, Zone, no_color // Constructor Instructions::Instructions() diff --git a/source/instructions.h b/source/instructions.h index 879fb77..2a727db 100644 --- a/source/instructions.h +++ b/source/instructions.h @@ -1,16 +1,15 @@ #pragma once -#include // para SDL_Point, SDL_Rect -#include // para SDL_Texture, SDL_Renderer -#include // para Uint32 -#include // para unique_ptr, shared_ptr -#include // para vector -class Fade; -class Sprite; -class Text; -class Texture; -class TiledBG; -struct JA_Music_t; // lines 14-14 +#include // Para SDL_Point, SDL_Rect +#include // Para SDL_Texture, SDL_Renderer +#include // Para Uint32 +#include // Para unique_ptr, shared_ptr +#include // Para vector +class Fade; // lines 8-8 +class Sprite; // lines 9-9 +class Text; // lines 10-10 +class Texture; // lines 11-11 +class TiledBG; // lines 12-12 /* Esta clase gestiona un estado del programa. Se encarga de poner en pantalla diff --git a/source/intro.cpp b/source/intro.cpp index 5647137..f2df9b8 100644 --- a/source/intro.cpp +++ b/source/intro.cpp @@ -1,23 +1,21 @@ #include "intro.h" -#include // para SDL_PollEvent, SDL_Event, SDL_QUIT, SDL... -#include // para SDL_GetTicks -#include // para SDL_WINDOWEVENT_SIZE_CHANGED -#include // para move -#include "asset.h" // para Asset -#include "global_inputs.h" // para check -#include "input.h" // para Input -#include "jail_audio.h" // para JA_StopMusic, JA_PlayMusic -#include "lang.h" // para getText -#include "param.h" // para param -#include "resource.h" // para Resource -#include "screen.h" // para Screen -#include "section.h" // para Name, name, Options, options -#include "smart_sprite.h" // para SpriteSmart -#include "text.h" // para Text -#include "texture.h" // para Texture -#include "utils.h" // para Param, ParamGame, Zone, BLOCK, Color -#include "writer.h" // para Writer -struct JA_Music_t; // lines 19-19 +#include // Para SDL_PollEvent, SDL_Event, SDL_QUIT, SDL... +#include // Para SDL_GetTicks +#include // Para SDL_WINDOWEVENT_SIZE_CHANGED +#include // Para move +#include "global_inputs.h" // Para check +#include "input.h" // Para Input +#include "jail_audio.h" // Para JA_StopMusic, JA_PlayMusic +#include "lang.h" // Para getText +#include "param.h" // Para Param, ParamGame, param +#include "resource.h" // Para Resource +#include "screen.h" // Para Screen +#include "section.h" // Para Name, name, Options, options +#include "smart_sprite.h" // Para SmartSprite +#include "text.h" // Para Text +#include "texture.h" // Para Texture +#include "utils.h" // Para Zone, BLOCK, Color, bg_color +#include "writer.h" // Para Writer // Constructor Intro::Intro() diff --git a/source/intro.h b/source/intro.h index 2ef57bc..670a04f 100644 --- a/source/intro.h +++ b/source/intro.h @@ -1,13 +1,12 @@ #pragma once -#include // para Uint32, Uint8 -#include // para unique_ptr, shared_ptr -#include // para vector -#include "smart_sprite.h" // para SpriteSmart -#include "writer.h" // para Writer -class Text; -class Texture; -struct JA_Music_t; // lines 11-11 +#include // Para Uint32 +#include // Para unique_ptr, shared_ptr +#include // Para vector +#include "smart_sprite.h" // Para SmartSprite +#include "writer.h" // Para Writer +class Text; // lines 8-8 +class Texture; // lines 9-9 /* Esta clase gestiona un estado del programa. Se encarga de mostrar la secuencia diff --git a/source/logo.cpp b/source/logo.cpp index 844dbad..f4c8550 100644 --- a/source/logo.cpp +++ b/source/logo.cpp @@ -1,19 +1,17 @@ #include "logo.h" -#include // para SDL_PollEvent, SDL_Event, SDL_QUIT, SDL... -#include // para SDL_Renderer -#include // para SDL_GetTicks -#include // para SDL_WINDOWEVENT_SIZE_CHANGED -#include // para move -#include "asset.h" // para Asset -#include "global_inputs.h" // para check -#include "input.h" // para Input -#include "jail_audio.h" // para JA_StopMusic -#include "param.h" // para param -#include "resource.h" // para Resource -#include "screen.h" // para Screen -#include "section.h" // para Name, name, Options, options -#include "sprite.h" // para Sprite -#include "texture.h" // para Texture +#include // Para SDL_PollEvent, SDL_Event, SDL_QUIT, SDL... +#include // Para SDL_GetTicks +#include // Para SDL_WINDOWEVENT_SIZE_CHANGED +#include // Para move +#include "global_inputs.h" // Para check +#include "input.h" // Para Input +#include "jail_audio.h" // Para JA_StopMusic +#include "param.h" // Para Param, ParamGame, param +#include "resource.h" // Para Resource +#include "screen.h" // Para Screen +#include "section.h" // Para Name, name, Options, options +#include "sprite.h" // Para Sprite +#include "texture.h" // Para Texture // Constructor Logo::Logo() diff --git a/source/main.cpp b/source/main.cpp index 6f4041d..2b727fa 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -7,9 +7,8 @@ Actualizando a la versión "Arcade Edition" en 08/05/2024 */ -#include // para char_traits, basic_ostream, operator<<, cout -#include // para make_unique, unique_ptr -#include "director.h" // para Director +#include // Para make_unique, unique_ptr +#include "director.h" // Para Director int main(int argc, char *argv[]) { diff --git a/source/manage_hiscore_table.cpp b/source/manage_hiscore_table.cpp index f20dfe7..417dbbe 100644 --- a/source/manage_hiscore_table.cpp +++ b/source/manage_hiscore_table.cpp @@ -1,10 +1,9 @@ #include "manage_hiscore_table.h" -#include // para SDL_GetError -#include // para SDL_RWread, SDL_RWwrite, SDL_RWFromFile -#include // para free, malloc -#include // para sort -#include // para basic_ostream, char_traits, operator<< -#include "utils.h" // para HiScoreEntry +#include // Para SDL_GetError +#include // Para SDL_RWread, SDL_RWwrite, SDL_RWFromFile +#include // Para sort +#include // Para basic_ostream, operator<<, cout, endl +#include "utils.h" // Para HiScoreEntry, getFileName // Resetea la tabla a los valores por defecto void ManageHiScoreTable::clear() diff --git a/source/manage_hiscore_table.h b/source/manage_hiscore_table.h index 0820aa8..f351a82 100644 --- a/source/manage_hiscore_table.h +++ b/source/manage_hiscore_table.h @@ -2,7 +2,6 @@ #include // para string #include // para vector -struct HiScoreEntry; /* Esta clase sirve para añadir elementos hiScoreEntry_r a un vector (tabla), de manera @@ -12,6 +11,17 @@ struct HiScoreEntry; leer y escribir la tabla a un fichero */ +// Estructura para las entradas de la tabla de recirds +struct HiScoreEntry +{ + std::string name; // Nombre + int score; // Puntuación + + // Constructor + explicit HiScoreEntry(const std::string &n = "", int s = 0) + : name(n), score(s) {} +}; + // Clase ManageHiScoreTable class ManageHiScoreTable { diff --git a/source/moving_sprite.cpp b/source/moving_sprite.cpp index a171e4d..ac83121 100644 --- a/source/moving_sprite.cpp +++ b/source/moving_sprite.cpp @@ -1,5 +1,6 @@ #include "moving_sprite.h" -#include "texture.h" // para Texture +#include // Para max +#include "texture.h" // Para Texture // Constructor MovingSprite::MovingSprite(std::shared_ptr texture, SDL_Rect pos, Rotate rotate, float zoom_w, float zoom_h, SDL_RendererFlip flip) diff --git a/source/moving_sprite.h b/source/moving_sprite.h index 485705a..b6fc4da 100644 --- a/source/moving_sprite.h +++ b/source/moving_sprite.h @@ -1,11 +1,10 @@ #pragma once -#include // para SDL_Rect, SDL_Point -#include // para SDL_RendererFlip -#include // para Uint16 -#include // para shared_ptr -#include "sprite.h" // para Sprite -class Texture; +#include // Para SDL_Rect, SDL_Point +#include // Para SDL_RendererFlip +#include // Para shared_ptr +#include "sprite.h" // Para Sprite +class Texture; // lines 8-8 // Clase MovingSprite. Añade movimiento y efectos de rotación, zoom y flip al sprite class MovingSprite : public Sprite diff --git a/source/notifier.cpp b/source/notifier.cpp index b523688..4199bdf 100644 --- a/source/notifier.cpp +++ b/source/notifier.cpp @@ -1,14 +1,13 @@ #include "notifier.h" -#include // para SDL_BLENDMODE_BLEND -#include // para SDL_PIXELFORMAT_RGBA8888 -#include // para string -#include "jail_audio.h" // para JA_DeleteSound, JA_LoadSound, JA_Pla... -#include "param.h" // para param -#include "resource.h" // para Resource -#include "screen.h" // para Screen -#include "sprite.h" // para Sprite -#include "text.h" // para Text -#include "texture.h" // para Texture +#include // Para SDL_BLENDMODE_BLEND +#include // Para SDL_PIXELFORMAT_RGBA8888 +#include // Para string +#include "jail_audio.h" // Para JA_DeleteSound, JA_LoadSound, JA_Pla... +#include "param.h" // Para Param, param, ParamNotification, Par... +#include "screen.h" // Para Screen +#include "sprite.h" // Para Sprite +#include "text.h" // Para Text +#include "texture.h" // Para Texture // [SINGLETON] Hay que definir las variables estáticas, desde el .h sólo la hemos declarado Notifier *Notifier::notifier_ = nullptr; @@ -34,35 +33,25 @@ Notifier *Notifier::get() // Constructor Notifier::Notifier(std::string icon_file, std::shared_ptr text, const std::string &sound_file) : renderer_(Screen::get()->getRenderer()), + icon_texture_(!icon_file.empty() ? std::make_unique(renderer_, icon_file) : nullptr), text_(text), bg_color_(param.notification.color), wait_time_(150), stack_(false), - sound_(JA_LoadSound(sound_file.c_str())) -{ - // Inicializa variables - has_icons_ = !icon_file.empty(); - - // Crea objetos - icon_texture_ = has_icons_ ? std::make_unique(renderer_, icon_file) : nullptr; -} + has_icons_(!icon_file.empty()), + sound_(JA_LoadSound(sound_file.c_str())) {} // Destructor Notifier::~Notifier() { - // Libera la memoria de los objetos JA_DeleteSound(sound_); - - notifications_.clear(); } // Dibuja las notificaciones por pantalla void Notifier::render() { for (int i = (int)notifications_.size() - 1; i >= 0; --i) - { notifications_[i].sprite->render(); - } } // Actualiza el estado de las notificaiones diff --git a/source/on_screen_help.cpp b/source/on_screen_help.cpp index a8f79df..bb9b29c 100644 --- a/source/on_screen_help.cpp +++ b/source/on_screen_help.cpp @@ -1,16 +1,14 @@ #include "on_screen_help.h" -#include // para SDL_BLENDMODE_BLEND -#include // para SDL_PIXELFORMAT_RGBA8888 -#include // para make_unique, make_shared, unique_ptr -#include "asset.h" // para Asset -#include "lang.h" // para getText -#include "param.h" // para param -#include "resource.h" // para Resource -#include "screen.h" // para Screen -#include "sprite.h" // para Sprite -#include "text.h" // para Text -#include "texture.h" // para Texture -#include "utils.h" // para easeInOutSine, Param, ParamGame +#include // Para SDL_BLENDMODE_BLEND +#include // Para SDL_PIXELFORMAT_RGBA8888 +#include // Para make_unique, unique_ptr +#include "lang.h" // Para getText +#include "param.h" // Para Param, ParamGame, param +#include "resource.h" // Para Resource +#include "screen.h" // Para Screen +#include "sprite.h" // Para Sprite +#include "text.h" // Para Text +#include "utils.h" // Para easeInOutSine // [SINGLETON] Hay que definir las variables estáticas, desde el .h sólo la hemos declarado OnScreenHelp *OnScreenHelp::onScreenHelp = nullptr; diff --git a/source/options.h b/source/options.h index 474b289..e668b79 100644 --- a/source/options.h +++ b/source/options.h @@ -1,7 +1,93 @@ #pragma once -#include // para string -struct Options; +#include // Para SDL_GameControllerButton +#include // Para Uint8 +#include "manage_hiscore_table.h" +#include // Para vector +#include +enum class InputType : int; +enum class ScreenFilter : int; +enum class ScreenVideoMode : int; +namespace lang +{ + enum class Code : int; +} + +// Dificultad del juego +enum class GameDifficulty +{ + EASY = 0, + NORMAL = 1, + HARD = 2, +}; + +// Estructura para las opciones de la ventana +struct OptionsWindow +{ + int size; // Contiene el valor por el que se multiplica el tamaño de la ventana +}; + +// Estructura con opciones para el video +struct OptionsVideo +{ + OptionsWindow window; // Opciones para la ventana del programa + ScreenVideoMode mode; // Contiene el valor del modo de pantalla completa + ScreenFilter filter; // Filtro usado para el escalado de la imagen + bool v_sync; // Indica si se quiere usar vsync o no + bool integer_scale; // Indica si se va a usar el escalado entero + bool shaders; // Indica si se van a usar shaders para los filtros de video +}; + +// Estructura para las opciones de musica +struct OptionsMusic +{ + bool enabled; // Indica si la musica suena o no + int volume; // Volumen al que suena la música +}; + +// Estructura para las opciones de sonido +struct OptionsSound +{ + bool enabled; // Indica si los sonidos suenan o no + int volume; // Volumen al que suenan los sonidos +}; + +// Estructura para las opciones de audio +struct OptionsAudio +{ + OptionsMusic music; // Opciones para la música + OptionsSound sound; // Opciones para los efectos de sonido +}; + +// Estructura para las opciones del juego +struct OptionsGame +{ + GameDifficulty difficulty; // Dificultad del juego + lang::Code language; // Idioma usado en el juego + bool autofire; // Indica si el jugador ha de pulsar repetidamente para disparar o basta con mantener pulsado + std::vector hi_score_table; // Tabla con las mejores puntuaciones +}; + +// Estructura para los controles del juego +struct OptionsController +{ + int index; // Indice en el vector de mandos + int player_id; // Jugador asociado al mando + Uint8 device_type; // Indica si se utilizará teclado o mando o ambos + std::string name; // Nombre del dispositivo + bool plugged; // Indica si el mando se encuentra conectado + std::vector inputs; // Listado de inputs + std::vector buttons; // Listado de botones asignados a cada input +}; + +// Estructura con todas las opciones de configuración del programa +struct Options +{ + OptionsGame game; // Opciones para el propio juego + OptionsVideo video; // Opciones relativas a la clase screen + OptionsAudio audio; // Opciones para el audio + std::vector controller; // Opciones con las asignaciones del mando para cada jugador +}; // Variables extern Options options; diff --git a/source/param.h b/source/param.h index 2569c44..3f62b1d 100644 --- a/source/param.h +++ b/source/param.h @@ -1,7 +1,80 @@ #pragma once -#include // para string -struct Param; +#include // Para SDL_Rect +#include // Para string +#include // Para vector +#include "utils.h" // Para Color, Zone + +// param.game +struct ParamGame +{ + int width; // Ancho de la resolucion nativa del juego + int height; // Alto de la resolucion nativa del juego + int item_size; // Tamaño de los items del juego + Zone play_area; // Rectangulo con la posición de la zona de juego + Zone game_area; // Rectangulo con las dimensiones del juego + int enter_name_seconds; // Duración en segundos para introducir el nombre al finalizar la partida +}; + +// param.fade +struct ParamFade +{ + int num_squares_width; // Cantidad total de cuadraditos en horizontal para el FadeType::RANDOM_SQUARE + int num_squares_height; // Cantidad total de cuadraditos en vertical para el FadeType::RANDOM_SQUARE + int random_squares_delay; // Duración entre cada pintado de cuadrados + int random_squares_mult; // Cantidad de cuadrados que se pintaran cada vez + int post_duration; // Duración final del fade + int venetian_size; // Altura de los rectangulos para FadeType::VENETIAN +}; + +// param.title +struct ParamTitle +{ + int press_start_position; // Posición del texto para empezar a jugar + int title_duration; // Tiempo de inactividad del titulo + int arcade_edition_position; // Posición del bitmap + int title_c_c_position; // Posición del bitmap +}; + +// param.background +struct ParamBackground +{ + Color attenuate_color; + int attenuate_alpha; +}; + +struct ParamBalloon +{ + float grav; // Aceleración en el eje Y. Modifica la velocidad + float vel; // Velocidad inicial que tienen al rebotar contra el suelo + + // Constructor + explicit ParamBalloon(float grav_val = 0.0f, float vel_val = 0.0f) + : grav(grav_val), vel(vel_val) {} +}; + +// Estructura para las opciones de las notificaciones +struct ParamNotification +{ + NotifyPosition pos_h; // Ubicación de las notificaciones en pantalla + NotifyPosition pos_v; // Ubicación de las notificaciones en pantalla + bool sound; // Indica si las notificaciones suenan + Color color; // Color de las notificaciones +}; + +// Estructura para almacenar todos los parámetros del juego +struct Param +{ + ParamGame game; // Parametros relacionados con el juego + ParamFade fade; // Parametros para ajustar el fade + SDL_Rect scoreboard; // Posición y tamaño del marcador + ParamTitle title; // Parametros con ajustes para la sección Title + ParamBackground background; // Parametros que afectan a la clase Background + std::vector balloon; // Parametros de velocidad y gravedad de cada tipo de globo + ParamNotification notification; // Opciones para las notificaciones + + Param() { balloon.reserve(4); } +}; extern Param param; diff --git a/source/path_sprite.cpp b/source/path_sprite.cpp index 04b5687..a654d4c 100644 --- a/source/path_sprite.cpp +++ b/source/path_sprite.cpp @@ -1,6 +1,11 @@ #include "path_sprite.h" -#include "utils.h" -class Texture; +#include // Para abs +#include // Para abs +#include // Para move +#include "moving_sprite.h" // Para MovingSprite +#include "utils.h" // Para easeOutQuint +#include +class Texture; // lines 3-3 // Constructor PathSprite::PathSprite(std::shared_ptr texture) @@ -16,57 +21,49 @@ void PathSprite::update() } } -// Añade un recorrido vertical -void PathSprite::addVerticalPath(SDL_Point start, SDL_Point end, int steps, int waiting_counter) +// Añade un recorrido +void PathSprite::addPath(int start, int end, PathType type, int fixed_pos, int steps, const std::function &easingFunction, int waiting_counter) { - paths_.emplace_back(createVerticalPath(start, end, steps), waiting_counter); + paths_.emplace_back(createPath(start, end, type, fixed_pos, steps, easingFunction), waiting_counter); } -// Añade un recorrido horizontal -void PathSprite::addHorizontalPath(SDL_Point start, SDL_Point end, int steps, int waiting_counter) -{ - paths_.emplace_back(createHorizontalPath(start, end, steps), waiting_counter); -} - -// Añade un recorrido desde un vector +// Añade un recorrido void PathSprite::addPath(std::vector spots, int waiting_counter) { - paths_.emplace_back(spots, waiting_counter); + paths_.emplace_back(std::move(spots), waiting_counter); } -std::vector PathSprite::createVerticalPath(const SDL_Point& start, const SDL_Point& end, int steps) { - std::vector v; - v.reserve(steps); - - for (int i = 0; i < steps; ++i) { - double t = static_cast(i) / steps; - double value = start.y + (end.y - start.y) * easeOutQuint(t); - - // Ajusta el valor si los puntos tienen signos diferentes - if (start.y > 0 && end.y < 0) { - value = start.y - std::abs(end.y - start.y) * easeOutQuint(t); - } else if (start.y < 0 && end.y > 0) { - value = start.y + std::abs(end.y - start.y) * easeOutQuint(t); - } - - v.emplace_back(SDL_Point{start.x, static_cast(value)}); - } - - return v; -} - - // Devuelve un vector con los puntos que conforman la ruta -std::vector PathSprite::createHorizontalPath(SDL_Point start, SDL_Point end, int steps) +std::vector PathSprite::createPath(int start, int end, PathType type, int fixed_pos, int steps, const std::function &easingFunction) { std::vector v; v.reserve(steps); for (int i = 0; i < steps; ++i) { - double t = static_cast(i) / steps; - double value = static_cast(start.x) + (end.x - start.x) * easeOutQuint(t); - v.emplace_back(SDL_Point{static_cast(value), start.y}); + double t = static_cast(i) / (steps - 1); + double value = start + (end - start) * easingFunction(t); + + if (start > 0 && end < 0) + { + value = start - std::abs(end - start) * easingFunction(t); + } + else if (start < 0 && end > 0) + { + value = start + std::abs(end - start) * easingFunction(t); + } + + switch (type) + { + case PathType::HORIZONTAL: + v.emplace_back(SDL_Point{static_cast(value), fixed_pos}); + break; + case PathType::VERTICAL: + v.emplace_back(SDL_Point{fixed_pos, static_cast(value)}); + break; + default: + break; + } } return v; @@ -84,7 +81,7 @@ void PathSprite::moveThroughCurrentPath() auto &path = paths_.at(current_path_); // Establece la posición - const SDL_Point p = path.spots.at(path.counter); + const auto &p = path.spots.at(path.counter); MovingSprite::setPos(p.x, p.y); // Comprobar si ha terminado el recorrido @@ -99,10 +96,13 @@ void PathSprite::moveThroughCurrentPath() } // Comprobar si ha terminado la espera - if (path.waiting_counter == 0) - path.finished = true; - else if (path.on_destination) + if (path.on_destination) + { + if (path.waiting_counter == 0) + path.finished = true; + else --path.waiting_counter; + } } // Cambia de recorrido o finaliza diff --git a/source/path_sprite.h b/source/path_sprite.h index f6a482b..393afb3 100644 --- a/source/path_sprite.h +++ b/source/path_sprite.h @@ -1,8 +1,11 @@ #pragma once -#include // para shared_ptr -#include "animated_sprite.h" // para SpriteAnimated -class Texture; +#include // Para SDL_Point +#include // Para shared_ptr +#include +#include // Para vector +#include "animated_sprite.h" // Para AnimatedSprite +class Texture; // lines 5-5 enum class PathType { @@ -15,20 +18,18 @@ class PathSprite : public AnimatedSprite { private: // Estructuras -struct Path { - std::vector spots; // Puntos por los que se desplazará el sprite - int fixed_pos; // Coordenada fija - int waiting_counter; // Tiempo de espera una vez en el destino - bool on_destination = false; // Indica si ha llegado al destino - bool finished = false; // Indica si ha terminado de esperarse - int counter = 0; // Contador interno - PathType type; // Tipo de recorrido - - // Constructor - Path(const std::vector& spots_init, int waiting_counter_init, int fixed_pos_init, PathType type_init) - : spots(spots_init), waiting_counter(waiting_counter_init), fixed_pos(fixed_pos_init), type(type_init) {} -}; + struct Path + { + std::vector spots; // Puntos por los que se desplazará el sprite + int waiting_counter; // Tiempo de espera una vez en el destino + bool on_destination = false; // Indica si ha llegado al destino + bool finished = false; // Indica si ha terminado de esperarse + int counter = 0; // Contador interno + // Constructor + Path(const std::vector &spots_init, int waiting_counter_init) + : spots(spots_init), waiting_counter(waiting_counter_init) {} + }; // Variables bool finished_ = false; // Indica si ya ha terminado @@ -52,20 +53,12 @@ public: // Actualiza la posición del sprite void update() override; - // Añade un recorrido vertical - void addVerticalPath(SDL_Point start, SDL_Point end, int steps, int waiting_counter); - - // Añade un recorrido horizontal - void addHorizontalPath(SDL_Point start, SDL_Point end, int steps, int waiting_counter); - - // Añade un recorrido desde un vector + // Añade un recorrido void addPath(std::vector spots, int waiting_counter); + void addPath(int start, int end, PathType type, int fixed_pos, int steps, const std::function &easingFunction, int waiting_counter); // Devuelve un vector con los puntos que conforman la ruta - std::vector createVerticalPath(const SDL_Point &start, const SDL_Point &end, int steps); - - // Devuelve un vector con los puntos que conforman la ruta - std::vector createHorizontalPath(SDL_Point start, SDL_Point end, int steps); + std::vector createPath(int start, int end, PathType type, int fixed_pos, int steps, const std::function &easingFunction); // Habilita el objeto void enable(); diff --git a/source/player.cpp b/source/player.cpp index e3d611a..bb4f677 100644 --- a/source/player.cpp +++ b/source/player.cpp @@ -1,14 +1,15 @@ #include "player.h" -#include // para SDL_FLIP_HORIZONTAL, SDL_FLIP_NONE, SDL... -#include // para SDL_GetTicks -#include // para rand -#include // para max, min -#include "animated_sprite.h" // para SpriteAnimated -#include "input.h" // para inputs_e -#include "param.h" // para param -#include "texture.h" // para Texture -#include "scoreboard.h" // para Texture -#include "options.h" +#include // Para SDL_FLIP_HORIZONTAL, SDL_FLIP_NONE +#include // Para SDL_GetTicks +#include // Para rand +#include // Para max, min +#include "animated_sprite.h" // Para AnimatedSprite +#include "input.h" // Para InputType +#include "manage_hiscore_table.h" // Para HiScoreEntry +#include "options.h" // Para Options, OptionsGame, options +#include "param.h" // Para Param, ParamGame, param +#include "scoreboard.h" // Para Scoreboard, ScoreboardMode +#include "texture.h" // Para Texture // Constructor Player::Player(int id, float x, int y, bool demo, SDL_Rect &play_area, std::vector> texture, const std::vector> &animations) diff --git a/source/player.h b/source/player.h index b0cafdd..229d83b 100644 --- a/source/player.h +++ b/source/player.h @@ -1,17 +1,16 @@ #pragma once -#include // para SDL_Rect -#include // para Uint32 -#include // para unique_ptr, shared_ptr -#include // para string -#include // para vector -#include "animated_sprite.h" // para SpriteAnimated -#include "smart_sprite.h" // para SpriteAnimated -#include "enter_name.h" // para EnterName -#include "utils.h" // para Circle -class Texture; -enum class InputType : int; -enum class ScoreboardMode; // lines 12-12 +#include // Para SDL_Rect +#include // Para Uint32 +#include // Para unique_ptr, shared_ptr +#include // Para string +#include // Para vector +#include "animated_sprite.h" // Para AnimatedSprite +#include "enter_name.h" // Para EnterName +#include "utils.h" // Para Circle +class Texture; // lines 12-12 +enum class InputType : int; // lines 13-13 +enum class ScoreboardMode; // lines 14-14 // Estados del jugador enum class PlayerStatus diff --git a/source/resource.cpp b/source/resource.cpp index a2d75a0..3e4fe34 100644 --- a/source/resource.cpp +++ b/source/resource.cpp @@ -1,9 +1,12 @@ -#include -#include -#include #include "resource.h" -#include "asset.h" -#include "screen.h" +#include // Para find_if +#include // Para basic_ostream, operator<<, endl, cout, cerr +#include // Para runtime_error +#include "asset.h" // Para Asset, AssetType +#include "jail_audio.h" // Para JA_LoadMusic, JA_LoadSound +#include "screen.h" // Para Screen +struct JA_Music_t; +struct JA_Sound_t; // [SINGLETON] Hay que definir las variables estáticas, desde el .h sólo la hemos declarado Resource *Resource::resource_ = nullptr; diff --git a/source/resource.h b/source/resource.h index 999d754..34da948 100644 --- a/source/resource.h +++ b/source/resource.h @@ -1,14 +1,14 @@ #pragma once -#include -#include -#include -#include -#include "jail_audio.h" -#include "texture.h" -#include "text.h" -#include "utils.h" -#include "animated_sprite.h" +#include // Para shared_ptr +#include // Para string +#include // Para vector +#include "animated_sprite.h" // Para AnimationsFileBuffer +#include "text.h" // Para TextFile +#include "texture.h" // Para Texture +#include "utils.h" // Para DemoData +struct JA_Music_t; +struct JA_Sound_t; // Estructura para almacenar ficheros de sonido y su nombre struct ResourceSound diff --git a/source/scoreboard.cpp b/source/scoreboard.cpp index f9deb70..0459bce 100644 --- a/source/scoreboard.cpp +++ b/source/scoreboard.cpp @@ -1,17 +1,15 @@ #include "scoreboard.h" -#include // para SDL_BLENDMODE_BLEND -#include // para SDL_PIXELFORMAT_RGBA8888 -#include // para SDL_GetTicks -#include // para roundf -#include -#include -#include "asset.h" // para Asset -#include "lang.h" // para getText -#include "resource.h" // para Resource -#include "screen.h" -#include "sprite.h" // para Sprite -#include "text.h" // para Text -#include "texture.h" // para Texture +#include // Para SDL_BLENDMODE_BLEND +#include // Para SDL_PIXELFORMAT_RGBA8888 +#include // Para SDL_GetTicks +#include // Para roundf +#include // Para operator<<, setfill, setw +#include // Para basic_ostream, basic_ostringstream +#include "lang.h" // Para getText +#include "resource.h" // Para Resource +#include "screen.h" // Para Screen +#include "sprite.h" // Para Sprite +#include "text.h" // Para Text // [SINGLETON] Hay que definir las variables estáticas, desde el .h sólo la hemos declarado Scoreboard *Scoreboard::scoreboard_ = nullptr; diff --git a/source/screen.cpp b/source/screen.cpp index 89a953c..864ef52 100644 --- a/source/screen.cpp +++ b/source/screen.cpp @@ -1,20 +1,20 @@ #include "screen.h" -#include // para SDL_DISABLE, SDL_ENABLE -#include // para SDL_ShowCursor -#include // para SDL_PIXELFORMAT_RGBA8888 -#include // para SDL_GetTicks -#include // para max, min -#include // para basic_ifstream, ifstream -#include // para istreambuf_iterator, operator!= -#include // para basic_string, operator+, to_string, cha... -#include // para vector -#include "asset.h" // para Asset -#include "dbgtxt.h" // para dbg_print -#include "global_inputs.h" // para servicePressedCounter -#include "input.h" // para Input, inputs_e, INPUT_DO_NOT_ALLOW_REPEAT -#include "notifier.h" // para Notify -#include "on_screen_help.h" // para OnScreenHelp -#include "options.h" // para options +#include // Para SDL_DISABLE, SDL_ENABLE +#include // Para SDL_ShowCursor +#include // Para SDL_PIXELFORMAT_RGBA8888 +#include // Para SDL_GetTicks +#include // Para clamp, max, min +#include // Para basic_ifstream, ifstream +#include // Para istreambuf_iterator, operator== +#include // Para allocator, operator+, to_string, char_t... +#include // Para vector +#include "asset.h" // Para Asset +#include "dbgtxt.h" // Para dbg_print +#include "global_inputs.h" // Para service_pressed_counter +#include "input.h" // Para Input, InputType, INPUT_DO_NOT_ALLOW_RE... +#include "notifier.h" // Para Notifier +#include "on_screen_help.h" // Para OnScreenHelp +#include "options.h" // Para Options, OptionsVideo, options, Options... #ifndef NO_SHADERS #include "jail_shader.h" // para init, render diff --git a/source/screen.h b/source/screen.h index 63fe6e6..33189dc 100644 --- a/source/screen.h +++ b/source/screen.h @@ -1,14 +1,13 @@ #pragma once -#include // para SDL_BlendMode -#include // para SDL_Rect -#include // para SDL_Renderer, SDL_Texture -#include // para Uint32 -#include // para SDL_Window -#include // para basic_string, string -#include "utils.h" // para Color -#include -#include "param.h" // para param +#include // Para SDL_BlendMode +#include // Para SDL_Rect, SDL_Point +#include // Para SDL_Renderer, SDL_Texture +#include // Para Uint32 +#include // Para SDL_Window +#include // Para string +#include "param.h" // Para Param, ParamGame, param +#include "utils.h" // Para Color enum class ScreenFilter : int { diff --git a/source/smart_sprite.cpp b/source/smart_sprite.cpp index 68617d8..fa208e8 100644 --- a/source/smart_sprite.cpp +++ b/source/smart_sprite.cpp @@ -1,5 +1,6 @@ #include "smart_sprite.h" -class Texture; +#include "moving_sprite.h" // Para MovingSprite +class Texture; // lines 2-2 // Constructor SmartSprite::SmartSprite(std::shared_ptr texture) diff --git a/source/text.cpp b/source/text.cpp index 06002c9..9c4b167 100644 --- a/source/text.cpp +++ b/source/text.cpp @@ -1,11 +1,11 @@ #include "text.h" -#include // para SDL_Rect -#include // para basic_ostream, basic_ifstream, basic_istream -#include // para cout -#include "resource.h" // para Resource -#include "sprite.h" // para Sprite -#include "texture.h" // para Texture -#include "utils.h" // para Color +#include // Para SDL_Rect +#include // Para basic_ifstream, basic_istream, basic_ostream +#include // Para cerr +#include // Para runtime_error +#include "sprite.h" // Para Sprite +#include "texture.h" // Para Texture +#include "utils.h" // Para Color, getFileName, printWithDots // Llena una estructuta TextFile desde un fichero std::shared_ptr loadTextFile(const std::string &file_path) diff --git a/source/text.h b/source/text.h index edadbd4..4fac5ec 100644 --- a/source/text.h +++ b/source/text.h @@ -1,12 +1,11 @@ #pragma once -#include // para SDL_Renderer -#include // para Uint8 -#include // para shared_ptr, unique_ptr -#include // para string -#include "sprite.h" // para Sprite -#include "utils.h" // para Color -class Texture; +#include // Para Uint8 +#include // Para unique_ptr, shared_ptr +#include // Para string +#include "sprite.h" // Para Sprite +#include "utils.h" // Para Color +class Texture; // lines 9-9 constexpr int TEXT_COLOR = 1; constexpr int TEXT_SHADOW = 2; diff --git a/source/texture.cpp b/source/texture.cpp index fe87b50..1c88c91 100644 --- a/source/texture.cpp +++ b/source/texture.cpp @@ -1,15 +1,16 @@ #include "texture.h" -#include "utils.h" -#include // para SDL_GetError -#include // para SDL_CreateRGBSurfaceWithFormatFrom -#include // para SEEK_END, SEEK_SET -#include // para fseek, fclose, fopen, fread, ftell, NULL -#include // para malloc, free, exit -#include // para basic_ostream, operator<<, cout, endl -#include -#include -#include "gif.c" // para LoadGif, LoadPalette +#include // Para SDL_GetError +#include // Para SDL_CreateRGBSurfaceWithFormatFrom +#include // Para SEEK_END, SEEK_SET +#include // Para fseek, fclose, fopen, fread, ftell, FILE +#include // Para free, malloc +#include // Para basic_ostream, operator<<, basic_ifstream +#include // Para cerr, cout +#include // Para runtime_error +#include "gif.c" // Para LoadGif, LoadPalette +#include "utils.h" // Para getFileName, printWithDots + #define STB_IMAGE_IMPLEMENTATION #include "stb_image.h" // para stbi_failure_reason, stbi_image_free diff --git a/source/tiled_bg.cpp b/source/tiled_bg.cpp index 8707840..6ce8970 100644 --- a/source/tiled_bg.cpp +++ b/source/tiled_bg.cpp @@ -1,12 +1,11 @@ #include "tiled_bg.h" -#include // para SDL_PIXELFORMAT_RGBA8888 -#include // para rand -#include // para unique_ptr, make_shared, make_unique -#include // para sinf -#include "resource.h" // para Resource -#include "screen.h" // para Screen -#include "sprite.h" // para Sprite -#include "texture.h" // para Texture +#include // Para SDL_PIXELFORMAT_RGBA8888 +#include // Para rand +#include // Para sin +#include // Para unique_ptr, make_unique +#include "resource.h" // Para Resource +#include "screen.h" // Para Screen +#include "sprite.h" // Para Sprite // Constructor TiledBG::TiledBG(SDL_Rect pos, TiledBGMode mode) diff --git a/source/tiled_bg.h b/source/tiled_bg.h index 39ceb4a..6536093 100644 --- a/source/tiled_bg.h +++ b/source/tiled_bg.h @@ -1,8 +1,7 @@ #pragma once -#include // para SDL_Rect -#include // para SDL_Renderer, SDL_Texture -#include // para string, basic_string +#include // Para SDL_Rect +#include // Para SDL_Renderer, SDL_Texture // Modos de funcionamiento para el tileado de fondo enum class TiledBGMode : int diff --git a/source/title.cpp b/source/title.cpp index 4e22afb..a4d6836 100644 --- a/source/title.cpp +++ b/source/title.cpp @@ -1,26 +1,29 @@ #include "title.h" -#include // para SDL_PollEvent, SDL_Event, SDL_KEYDOWN -#include // para SDLK_1, SDLK_2, SDLK_3 -#include // para SDL_Rect -#include // para SDL_Renderer -#include // para SDL_GetTicks -#include // para char_traits, operator+, to_string, bas... -#include // para move -#include // para vector -#include "asset.h" // para Asset -#include "global_inputs.h" // para check -#include "input.h" // para Input, InputType, INPUT_DO_NOT_ALLOW_R... -#include "jail_audio.h" // para JA_GetMusicState, JA_Music_state, JA_P... -#include "lang.h" // para getText -#include "notifier.h" // para Notifier -#include "options.h" // para options -#include "param.h" // para param -#include "resource.h" // para Resource -#include "screen.h" // para Screen -#include "section.h" // para Options, options, Name, name -#include "texture.h" // para Texture -#include "utils.h" // para Param, OptionsController, Color, Param... -struct JA_Music_t; // lines 17-17 +#include // Para SDL_PollEvent, SDL_Event, SDL_KEYDOWN +#include // Para SDLK_1, SDLK_2, SDLK_3 +#include // Para SDL_Rect +#include // Para SDL_GetTicks +#include // Para char_traits, operator+, to_string, bas... +#include // Para move +#include // Para vector +#include "define_buttons.h" // Para DefineButtons +#include "fade.h" // Para Fade, FadeType +#include "game_logo.h" // Para GameLogo +#include "global_inputs.h" // Para check +#include "input.h" // Para Input, InputType, INPUT_DO_NOT_ALLOW_R... +#include "jail_audio.h" // Para JA_GetMusicState, JA_Music_state, JA_P... +#include "lang.h" // Para getText +#include "notifier.h" // Para Notifier +#include "options.h" // Para OptionsController, Options, options +#include "param.h" // Para Param, param, ParamGame, ParamTitle +#include "resource.h" // Para Resource +#include "screen.h" // Para Screen +#include "section.h" // Para Options, options, name, Name +#include "sprite.h" // Para Sprite +#include "text.h" // Para Text, TEXT_CENTER, TEXT_SHADOW +#include "texture.h" // Para Texture +#include "tiled_bg.h" // Para TiledBG, TiledBGMode +#include "utils.h" // Para Color, Zone, fade_color, no_color, BLOCK // Constructor Title::Title() diff --git a/source/title.h b/source/title.h index 93155c3..6122a2f 100644 --- a/source/title.h +++ b/source/title.h @@ -1,22 +1,15 @@ #pragma once -#include // para Uint32 -#include // para unique_ptr, shared_ptr -#include "define_buttons.h" // para DefineButtons -#include "fade.h" // para Fade -#include "game_logo.h" // para GameLogo -#include "sprite.h" // para Sprite -#include "text.h" // para Text -#include "tiled_bg.h" // para TiledBG -class Input; // lines 17-17 -#include "section.h" // para Options, options, Name, name -class Screen; // lines 18-18 -class Texture; // lines 20-20 -namespace section -{ - enum class Name; -} -struct JA_Music_t; // lines 21-21 +#include // Para Uint32 +#include // Para unique_ptr, shared_ptr +#include "section.h" // Para Name +class DefineButtons; +class Fade; +class GameLogo; +class Sprite; +class Text; +class Texture; // lines 14-14 +class TiledBG; // Textos constexpr const char TEXT_COPYRIGHT[] = "@2020,2024 JailDesigner"; diff --git a/source/utils.cpp b/source/utils.cpp index c808cb5..23d750f 100644 --- a/source/utils.cpp +++ b/source/utils.cpp @@ -1,13 +1,13 @@ #include "utils.h" -#include -#include -#include -#include // para min, clamp, find_if_not, transform -#include // para tolower, isspace -#include // para cos, pow, M_PI -#include // para operator< -struct JA_Music_t; // lines 7-7 -struct JA_Sound_t; // lines 8-8 +#include // Para SDL_RWFromFile, SDL_RWclose, SDL_RWread +#include // Para min, clamp, find_if_not, find, transform +#include // Para tolower, isspace +#include // Para cos, pow, M_PI +#include // Para operator< +#include // Para path +#include // Para basic_ostream, cout, basic_ios, endl, ios +#include // Para runtime_error +#include // Para basic_string, string, char_traits, opera... // Variables Overrides overrides = Overrides(); @@ -182,6 +182,30 @@ double easeOutQuint(double t) return 1 - std::pow(1 - t, 5); } +// Función de suavizado +double easeInQuint(double t) +{ + return pow(t, 5); +} + +// Función de suavizado +double easeInOutQuint(double t) +{ + return t < 0.5 ? 16 * pow(t, 5) : 1 - pow(-2 * t + 2, 5) / 2; +} + +// Función de suavizado +double easeInQuad(double t) +{ + return t * t; +} + +// Función de suavizado +double easeOutQuad(double t) +{ + return 1 - (1 - t) * (1 - t); +} + // Función de suavizado double easeInOutSine(double t) { diff --git a/source/utils.h b/source/utils.h index e86612d..05a8515 100644 --- a/source/utils.h +++ b/source/utils.h @@ -1,34 +1,16 @@ #pragma once -#include // para SDL_GameControllerButton -#include // para SDL_Rect, SDL_Point -#include // para SDL_Renderer -#include // para Uint8 -#include // para int32_t -#include // para string -#include // para vector -enum class InputType : int; -enum class ScreenFilter; // lines 14-14 -enum class ScreenVideoMode; // lines 15-15 -namespace lang -{ - enum class Code : int; -} -struct JA_Music_t; // lines 12-12 -struct JA_Sound_t; // lines 13-13 +#include // Para SDL_Rect, SDL_Point +#include // Para SDL_Renderer +#include // Para Uint8 +#include // Para int32_t +#include // Para string +#include // Para vector // Constantes constexpr int BLOCK = 8; constexpr int TOTAL_DEMO_DATA = 2000; -// Dificultad del juego -enum class GameDifficulty -{ - EASY = 0, - NORMAL = 1, - HARD = 2, -}; - // Variables para que los argumentos del programa tengan mas peso que los definidos en otros lugares struct Overrides { @@ -74,17 +56,6 @@ enum class NotifyPosition RIGHT, }; -// Estructura para las entradas de la tabla de recirds -struct HiScoreEntry -{ - std::string name; // Nombre - int score; // Puntuación - - // Constructor - explicit HiScoreEntry(const std::string &n = "", int s = 0) - : name(n), score(s) {} -}; - struct DemoKeys { Uint8 left; @@ -117,74 +88,6 @@ struct Demo : enabled(e), recording(r), counter(c), keys(k), data(d) {} }; -// Estructura para las opciones de la ventana -struct OptionsWindow -{ - int size; // Contiene el valor por el que se multiplica el tamaño de la ventana -}; - -// Estructura con opciones para el video -struct OptionsVideo -{ - OptionsWindow window; // Opciones para la ventana del programa - ScreenVideoMode mode; // Contiene el valor del modo de pantalla completa - ScreenFilter filter; // Filtro usado para el escalado de la imagen - bool v_sync; // Indica si se quiere usar vsync o no - bool integer_scale; // Indica si se va a usar el escalado entero - bool shaders; // Indica si se van a usar shaders para los filtros de video -}; - -// Estructura para las opciones de musica -struct OptionsMusic -{ - bool enabled; // Indica si la musica suena o no - int volume; // Volumen al que suena la música -}; - -// Estructura para las opciones de sonido -struct OptionsSound -{ - bool enabled; // Indica si los sonidos suenan o no - int volume; // Volumen al que suenan los sonidos -}; - -// Estructura para las opciones de audio -struct OptionsAudio -{ - OptionsMusic music; // Opciones para la música - OptionsSound sound; // Opciones para los efectos de sonido -}; - -// Estructura para las opciones del juego -struct OptionsGame -{ - GameDifficulty difficulty; // Dificultad del juego - lang::Code language; // Idioma usado en el juego - bool autofire; // Indica si el jugador ha de pulsar repetidamente para disparar o basta con mantener pulsado - std::vector hi_score_table; // Tabla con las mejores puntuaciones -}; - -// Estructura para los controles del juego -struct OptionsController -{ - int index; // Indice en el vector de mandos - int player_id; // Jugador asociado al mando - Uint8 device_type; // Indica si se utilizará teclado o mando o ambos - std::string name; // Nombre del dispositivo - bool plugged; // Indica si el mando se encuentra conectado - std::vector inputs; // Listado de inputs - std::vector buttons; // Listado de botones asignados a cada input -}; - -// Estructura con todas las opciones de configuración del programa -struct Options -{ - OptionsGame game; // Opciones para el propio juego - OptionsVideo video; // Opciones relativas a la clase screen - OptionsAudio audio; // Opciones para el audio - std::vector controller; // Opciones con las asignaciones del mando para cada jugador -}; - // Posiciones dentro de un rectangulo struct Zone { @@ -197,80 +100,6 @@ struct Zone int third_quarter_y; // Anclaje al 75% del eje X }; -// param.game -struct ParamGame -{ - int width; // Ancho de la resolucion nativa del juego - int height; // Alto de la resolucion nativa del juego - int item_size; // Tamaño de los items del juego - Zone play_area; // Rectangulo con la posición de la zona de juego - Zone game_area; // Rectangulo con las dimensiones del juego - int enter_name_seconds; // Duración en segundos para introducir el nombre al finalizar la partida -}; - -// param.fade -struct ParamFade -{ - int num_squares_width; // Cantidad total de cuadraditos en horizontal para el FadeType::RANDOM_SQUARE - int num_squares_height; // Cantidad total de cuadraditos en vertical para el FadeType::RANDOM_SQUARE - int random_squares_delay; // Duración entre cada pintado de cuadrados - int random_squares_mult; // Cantidad de cuadrados que se pintaran cada vez - int post_duration; // Duración final del fade - int venetian_size; // Altura de los rectangulos para FadeType::VENETIAN -}; - -// param.title -struct ParamTitle -{ - int press_start_position; // Posición del texto para empezar a jugar - int title_duration; // Tiempo de inactividad del titulo - int arcade_edition_position; // Posición del bitmap - int title_c_c_position; // Posición del bitmap -}; - -// param.background -struct ParamBackground -{ - Color attenuate_color; - int attenuate_alpha; -}; - -struct ParamBalloon -{ - float grav; // Aceleración en el eje Y. Modifica la velocidad - float vel; // Velocidad inicial que tienen al rebotar contra el suelo - - // Constructor - explicit ParamBalloon(float grav_val = 0.0f, float vel_val = 0.0f) - : grav(grav_val), vel(vel_val) {} -}; - -// Estructura para las opciones de las notificaciones -struct ParamNotification -{ - NotifyPosition pos_h; // Ubicación de las notificaciones en pantalla - NotifyPosition pos_v; // Ubicación de las notificaciones en pantalla - bool sound; // Indica si las notificaciones suenan - Color color; // Color de las notificaciones -}; - -// Estructura para almacenar todos los parámetros del juego -struct Param -{ - ParamGame game; // Parametros relacionados con el juego - ParamFade fade; // Parametros para ajustar el fade - SDL_Rect scoreboard; // Posición y tamaño del marcador - ParamTitle title; // Parametros con ajustes para la sección Title - ParamBackground background; // Parametros que afectan a la clase Background - std::vector balloon; // Parametros de velocidad y gravedad de cada tipo de globo - ParamNotification notification; // Opciones para las notificaciones - - Param() - { - balloon.reserve(4); // Reservar espacio para 4 elementos - } -}; - // Calcula el cuadrado de la distancia entre dos puntos double distanceSquared(int x1, int y1, int x2, int y2); @@ -312,8 +141,10 @@ std::string trim(const std::string &str); // Función de suavizado double easeOutQuint(double t); - -// Función de suavizado +double easeInQuint(double t); +double easeInOutQuint(double t); +double easeInQuad(double t); +double easeOutQuad(double t); double easeInOutSine(double t); // Comprueba si una vector contiene una cadena