arreglos cosmetics en la pantalla de carrega de recursos

This commit is contained in:
2026-04-14 17:31:24 +02:00
parent c694781f38
commit 3e795998d1
5 changed files with 57 additions and 34 deletions

View File

@@ -18,6 +18,7 @@
#include "core/rendering/text.hpp" // Para Text
#include "core/resources/asset.hpp" // Para Asset
#include "core/resources/resource_helper.hpp" // Para loadFile
#include "game/options.hpp" // Para Options::loading
#include "utils/color.hpp" // Para Color, NO_COLOR_MOD
#include "utils/param.hpp" // Para Param, param, ParamPlayer, ParamResource, ParamGame
#include "utils/utils.hpp" // Para getFileName
@@ -754,6 +755,12 @@ void Resource::renderProgress() {
screen->start();
screen->clean();
// Si la pantalla de carga está desactivada, dejamos todo en negro
if (!Options::loading.show) {
screen->coreRender();
return;
}
auto text_color = param.resource.color;
auto bar_color = param.resource.color.DARKEN(100);
const auto TEXT_HEIGHT = loading_text_->getCharacterSize();
@@ -766,14 +773,16 @@ void Resource::renderProgress() {
SDL_SetRenderDrawColor(renderer, bar_color.r, bar_color.g, bar_color.b, bar_color.a);
SDL_RenderRect(renderer, &loading_wired_rect_);
// Escribe el texto de carga encima de la barra
/*
loading_text_->writeColored(
loading_wired_rect_.x,
loading_wired_rect_.y - 9,
Lang::getText("[RESOURCE] LOADING") + " : " + loading_resource_name_,
text_color);
*/
// Escribe el nombre del recurso que se está cargando, centrado sobre la barra
if (Options::loading.show_resource_name && !loading_resource_name_.empty()) {
loading_text_->writeDX(
Text::CENTER | Text::COLOR,
loading_wired_rect_.x + (loading_wired_rect_.w / 2),
loading_wired_rect_.y - TEXT_HEIGHT - 2,
loading_resource_name_,
1,
text_color);
}
// Muestra nombre de la aplicación
loading_text_->writeDX(
@@ -793,23 +802,6 @@ void Resource::renderProgress() {
1,
text_color);
// Muestra información del monitor desplazada hacia abajo
/*loading_text_->writeColored(
X_PADDING,
Y_PADDING + 18,
screen->getDisplayMonitorName(),
text_color);
loading_text_->writeColored(
X_PADDING,
Y_PADDING + 27,
std::to_string(screen->getDisplayMonitorWidth()) + "x" + std::to_string(screen->getDisplayMonitorHeight()),
text_color);
loading_text_->writeColored(
X_PADDING,
Y_PADDING + 36,
std::to_string(screen->getDisplayMonitorRefreshRate()) + "Hz",
text_color);*/
// Renderiza el frame en pantalla
screen->coreRender();
}
@@ -826,13 +818,14 @@ void Resource::loadDemoDataQuiet() {
// Inicializa los rectangulos que definen la barra de progreso
void Resource::initProgressBar() {
const float BAR_Y_POSITION = param.game.height - BAR_HEIGHT - Y_PADDING;
const float WIRED_BAR_WIDTH = param.game.width * BAR_WIDTH_RATIO;
const float BAR_X_POSITION = (param.game.width - WIRED_BAR_WIDTH) / 2.0F;
const float BAR_Y_POSITION = (param.game.height * BAR_Y_RATIO) - (BAR_HEIGHT / 2.0F);
const float WIRED_BAR_WIDTH = param.game.width - (X_PADDING * 2);
loading_wired_rect_ = {.x = X_PADDING, .y = BAR_Y_POSITION, .w = WIRED_BAR_WIDTH, .h = BAR_HEIGHT};
loading_wired_rect_ = {.x = BAR_X_POSITION, .y = BAR_Y_POSITION, .w = WIRED_BAR_WIDTH, .h = BAR_HEIGHT};
const float FULL_BAR_WIDTH = WIRED_BAR_WIDTH * loading_count_.getPercentage();
loading_full_rect_ = {.x = X_PADDING, .y = BAR_Y_POSITION, .w = FULL_BAR_WIDTH, .h = BAR_HEIGHT};
loading_full_rect_ = {.x = BAR_X_POSITION, .y = BAR_Y_POSITION, .w = FULL_BAR_WIDTH, .h = BAR_HEIGHT};
}
// Actualiza el progreso de carga y muestra la barra

View File

@@ -117,12 +117,15 @@ class Resource {
}
};
// --- Constantes para la pantalla de carga ---
static constexpr float X_PADDING = 60.0F;
static constexpr float Y_PADDING = 20.0F;
// --- Constantes para la barra de progreso de la pantalla de carga ---
// BAR_WIDTH_RATIO: fracción del ancho de la pantalla ocupada por la barra (centrada)
// 1.0 = ancho completo, 0.5 = la mitad del ancho
// BAR_Y_RATIO: posición vertical del CENTRO de la barra en fracción de la altura
// 0.0 = centro en el borde superior, 1.0 = centro en el borde inferior
// BAR_HEIGHT: grosor de la barra en píxeles
static constexpr float BAR_WIDTH_RATIO = 0.5F;
static constexpr float BAR_Y_RATIO = 0.85F;
static constexpr float BAR_HEIGHT = 5.0F;
static constexpr Color BAR_COLOR = Color(128, 128, 128);
static constexpr Color TEXT_COLOR = Color(255, 255, 255);
// --- Modo de carga ---
LoadingMode loading_mode_;

View File

@@ -213,3 +213,8 @@ namespace Defaults::Settings {
constexpr bool SHUTDOWN_ENABLED = false;
constexpr const char* PARAMS_FILE = "param_320x256.txt";
} // namespace Defaults::Settings
namespace Defaults::Loading {
constexpr bool SHOW = false;
constexpr bool SHOW_RESOURCE_NAME = true;
} // namespace Defaults::Loading

View File

@@ -21,6 +21,7 @@ namespace Options {
Settings settings; // Opciones del juego
Video video; // Opciones de vídeo
Audio audio; // Opciones de audio
Loading loading; // Opciones de la pantalla de carga
GamepadManager gamepad_manager; // Opciones de mando para cada jugador
Keyboard keyboard; // Opciones para el teclado
PendingChanges pending_changes; // Opciones que se aplican al cerrar
@@ -489,6 +490,13 @@ namespace Options {
}
}
void loadLoadingFromYaml(const fkyaml::node& yaml) {
if (!yaml.contains("loading")) { return; }
const auto& ld = yaml["loading"];
parseBoolField(ld, "show", loading.show);
parseBoolField(ld, "show_resource_name", loading.show_resource_name);
}
void loadGameFromYaml(const fkyaml::node& yaml) {
if (!yaml.contains("game")) { return; }
const auto& game = yaml["game"];
@@ -601,6 +609,7 @@ namespace Options {
loadWindowFromYaml(yaml);
loadVideoFromYaml(yaml);
loadAudioFromYaml(yaml);
loadLoadingFromYaml(yaml);
loadGameFromYaml(yaml);
loadControllersFromYaml(yaml);
loadKeyboardFromYaml(yaml);
@@ -682,6 +691,13 @@ namespace Options {
file << " volume: " << audio.sound.volume << "\n";
file << "\n";
// LOADING
file << "# LOADING SCREEN\n";
file << "loading:\n";
file << " show: " << boolToString(loading.show) << "\n";
file << " show_resource_name: " << boolToString(loading.show_resource_name) << "\n";
file << "\n";
// GAME
file << "# GAME\n";
file << "game:\n";

View File

@@ -109,6 +109,11 @@ namespace Options {
int volume = Defaults::Audio::VOLUME; // Volumen general del audio
};
struct Loading {
bool show = Defaults::Loading::SHOW; // Muestra la pantalla de carga (si no, pantalla en negro)
bool show_resource_name = Defaults::Loading::SHOW_RESOURCE_NAME; // Muestra el nombre del recurso en curso sobre la barra de progreso
};
struct Settings {
static constexpr int CURRENT_CONFIG_VERSION = 3; // Versión esperada del fichero
int config_version = CURRENT_CONFIG_VERSION; // Versión del archivo de configuración
@@ -333,6 +338,7 @@ namespace Options {
extern Settings settings; // Opciones del juego
extern Video video; // Opciones de vídeo
extern Audio audio; // Opciones de audio
extern Loading loading; // Opciones de la pantalla de carga
extern GamepadManager gamepad_manager; // Manager de mandos para cada jugador
extern Keyboard keyboard; // Opciones para el teclado
extern PendingChanges pending_changes; // Opciones que se aplican al cerrar