diff --git a/source/core/resources/resource.cpp b/source/core/resources/resource.cpp index f1671431..c3aa7731 100644 --- a/source/core/resources/resource.cpp +++ b/source/core/resources/resource.cpp @@ -8,19 +8,19 @@ #include // Para runtime_error #include -#include "core/rendering/screen.hpp" // Para Screen -#include "core/rendering/text.hpp" // Para Text, loadTextFile -#include "core/resources/asset.hpp" // Para AssetType, Asset +#include "core/rendering/screen.hpp" // Para Screen +#include "core/rendering/text.hpp" // Para Text, loadTextFile +#include "core/resources/asset.hpp" // Para AssetType, Asset #include "core/resources/resource_helper.hpp" // Para ResourceHelper -#include "external/jail_audio.h" // Para JA_DeleteMusic, JA_DeleteSound, JA_Loa... -#include "game/gameplay/room.hpp" // Para RoomData, loadRoomFile, loadRoomTileFile -#include "game/options.hpp" // Para Options, OptionsGame, options -#include "game/defaults.hpp" // Para GameDefaults::VERSION -#include "utils/defines.hpp" // Para WINDOW_CAPTION -#include "utils/utils.hpp" // Para getFileName, printWithDots, PaletteColor -#include "version.h" // Para Version::GIT_HASH -struct JA_Music_t; // lines 17-17 -struct JA_Sound_t; // lines 18-18 +#include "external/jail_audio.h" // Para JA_DeleteMusic, JA_DeleteSound, JA_Loa... +#include "game/defaults.hpp" // Para GameDefaults::VERSION +#include "game/gameplay/room.hpp" // Para RoomData, loadRoomFile, loadRoomTileFile +#include "game/options.hpp" // Para Options, OptionsGame, options +#include "utils/defines.hpp" // Para WINDOW_CAPTION +#include "utils/utils.hpp" // Para getFileName, printWithDots, PaletteColor +#include "version.h" // Para Version::GIT_HASH +struct JA_Music_t; // lines 17-17 +struct JA_Sound_t; // lines 18-18 // [SINGLETON] Hay que definir las variables estáticas, desde el .h sólo la hemos declarado Resource* Resource::resource = nullptr; @@ -406,21 +406,23 @@ void Resource::calculateTotal() { // Muestra el progreso de carga void Resource::renderProgress() { - constexpr float X_PADDING = 10; - constexpr float Y_PADDING = 10; - constexpr float BAR_HEIGHT = 10; + constexpr float X_PADDING = 60.0F; + constexpr float Y_PADDING = 10.0F; + constexpr float BAR_HEIGHT = 5.0F; + const float BAR_POSITION = Options::game.height - BAR_HEIGHT - Y_PADDING; Screen::get()->start(); Screen::get()->clearSurface(static_cast(PaletteColor::BLACK)); auto surface = Screen::get()->getRendererSurface(); - const Uint8 TEXT_COLOR = static_cast(PaletteColor::WHITE); + const Uint8 TEXT_COLOR = static_cast(PaletteColor::BRIGHT_WHITE); + const Uint8 BAR_COLOR = static_cast(PaletteColor::WHITE); const int TEXT_HEIGHT = loading_text_->getCharacterSize(); const int CENTER_X = Options::game.width / 2; const int CENTER_Y = Options::game.height / 2; // Draw APP_NAME centered above center - const std::string APP_NAME = WINDOW_CAPTION; + const std::string APP_NAME = spaceBetweenLetters(Version::APP_NAME); loading_text_->writeColored( CENTER_X - (loading_text_->lenght(APP_NAME) / 2), CENTER_Y - TEXT_HEIGHT, @@ -437,13 +439,13 @@ void Resource::renderProgress() { // Draw progress bar border const float WIRED_BAR_WIDTH = Options::game.width - (X_PADDING * 2); - SDL_FRect rect_wired = {X_PADDING, BAR_POSITION, WIRED_BAR_WIDTH, X_PADDING}; - surface->drawRectBorder(&rect_wired, TEXT_COLOR); + SDL_FRect rect_wired = {X_PADDING, BAR_POSITION, WIRED_BAR_WIDTH, BAR_HEIGHT}; + surface->drawRectBorder(&rect_wired, BAR_COLOR); // Draw progress bar fill const float FULL_BAR_WIDTH = WIRED_BAR_WIDTH * count_.getPercentage(); - SDL_FRect rect_full = {X_PADDING, BAR_POSITION, FULL_BAR_WIDTH, X_PADDING}; - surface->fillRect(&rect_full, TEXT_COLOR); + SDL_FRect rect_full = {X_PADDING, BAR_POSITION, FULL_BAR_WIDTH, BAR_HEIGHT}; + surface->fillRect(&rect_full, BAR_COLOR); Screen::get()->render(); } diff --git a/source/game/defaults.hpp b/source/game/defaults.hpp index 89cb8402..79807830 100644 --- a/source/game/defaults.hpp +++ b/source/game/defaults.hpp @@ -62,11 +62,6 @@ constexpr bool SOUND_ENABLED = true; // Sonido habilitado por defecto constexpr bool NOTIFICATION_SOUND = true; // Sonido de las notificaciones por defecto const Uint8 NOTIFICATION_COLOR = static_cast(PaletteColor::BLUE); // Color de las notificaciones por defecto -// ============================================================================= -// CONTROL -// ============================================================================= -constexpr Options::ControlScheme CONTROL_SCHEME = Options::ControlScheme::CURSOR; // Control por defecto - // ============================================================================= // OTHER // ============================================================================= diff --git a/source/game/options.cpp b/source/game/options.cpp index 9fd674e3..7e6e092e 100644 --- a/source/game/options.cpp +++ b/source/game/options.cpp @@ -183,14 +183,6 @@ auto saveToFile(const std::string& file_path) -> bool { auto setOptions(const std::string& var, const std::string& value) -> bool { static const std::unordered_map> OPTION_HANDLERS = { {"version", [](const std::string& v) { version = v; }}, - {"keys", [](const std::string& v) { - int val = safeStoi(v, static_cast(GameDefaults::CONTROL_SCHEME)); - if (val == static_cast(ControlScheme::CURSOR) || val == static_cast(ControlScheme::OPQA) || val == static_cast(ControlScheme::WASD)) { - keys = static_cast(val); - } else { - keys = GameDefaults::CONTROL_SCHEME; - } - }}, {"window.zoom", [](const std::string& v) { int val = safeStoi(v, GameDefaults::WINDOW_ZOOM); if (val > 0) { diff --git a/source/game/options.hpp b/source/game/options.hpp index da133438..08503924 100644 --- a/source/game/options.hpp +++ b/source/game/options.hpp @@ -88,9 +88,9 @@ struct Stats { // Estructura con opciones de la ventana struct Window { - std::string caption{WINDOW_CAPTION}; // Texto que aparece en la barra de título de la ventana - int zoom{GameDefaults::WINDOW_ZOOM}; // Zoom de la ventana - int max_zoom{GameDefaults::WINDOW_ZOOM}; // Máximo tamaño de zoom para la ventana + std::string caption{WINDOW_CAPTION}; // Texto que aparece en la barra de título de la ventana + int zoom{GameDefaults::WINDOW_ZOOM}; // Zoom de la ventana + int max_zoom{GameDefaults::WINDOW_ZOOM}; // Máximo tamaño de zoom para la ventana // Constructor por defecto Window() = default; @@ -206,16 +206,16 @@ struct Game { }; // --- Variables globales (inline C++17+) --- -inline std::string version{}; // Versión del fichero de configuración. Sirve para saber si las opciones son compatibles -inline bool console{false}; // Indica si ha de mostrar información por la consola de texto -inline Cheat cheats{}; // Contiene trucos y ventajas para el juego -inline Game game{}; // Opciones de juego -inline Video video{}; // Opciones de video -inline Stats stats{}; // Datos con las estadisticas de juego -inline Notification notifications{}; // Opciones relativas a las notificaciones; -inline Window window{}; // Opciones relativas a la ventana -inline Audio audio{}; // Opciones relativas al audio -inline ControlScheme keys{GameDefaults::CONTROL_SCHEME}; // Teclas usadas para jugar +inline std::string version{}; // Versión del fichero de configuración. Sirve para saber si las opciones son compatibles +inline bool console{false}; // Indica si ha de mostrar información por la consola de texto +inline Cheat cheats{}; // Contiene trucos y ventajas para el juego +inline Game game{}; // Opciones de juego +inline Video video{}; // Opciones de video +inline Stats stats{}; // Datos con las estadisticas de juego +inline Notification notifications{}; // Opciones relativas a las notificaciones; +inline Window window{}; // Opciones relativas a la ventana +inline Audio audio{}; // Opciones relativas al audio +inline ControlScheme keys{ControlScheme::CURSOR}; // Teclas usadas para jugar // --- Funciones --- void init(); // Crea e inicializa las opciones del programa diff --git a/source/utils/utils.cpp b/source/utils/utils.cpp index 58736e09..5e44b8e9 100644 --- a/source/utils/utils.cpp +++ b/source/utils/utils.cpp @@ -449,4 +449,16 @@ void fillTextureWithColor(SDL_Renderer* renderer, SDL_Texture* texture, Uint8 r, // Restaurar el render target previo SDL_SetRenderTarget(renderer, previous_target); +} + +// Añade espacios entre las letras de un string +auto spaceBetweenLetters(const std::string& input) -> std::string { + std::string result; + for (size_t i = 0; i < input.size(); ++i) { + result += input[i]; + if (i != input.size() - 1) { + result += ' '; + } + } + return result; } \ No newline at end of file diff --git a/source/utils/utils.hpp b/source/utils/utils.hpp index 1daccf0a..498ffc38 100644 --- a/source/utils/utils.hpp +++ b/source/utils/utils.hpp @@ -168,4 +168,7 @@ inline auto toSDLPoint(const SDL_FPoint& fpoint) -> SDL_Point { .x = static_cast(fpoint.x), .y = static_cast(fpoint.y)}; return point; -} \ No newline at end of file +} + +// Añade espacios entre las letras de un string +auto spaceBetweenLetters(const std::string& input) -> std::string; \ No newline at end of file