arreglos varios pa que JailDoc puga tastar com va açò
This commit is contained in:
@@ -18,7 +18,7 @@ namespace Defaults::Canvas {
|
||||
} // namespace Defaults::Canvas
|
||||
|
||||
namespace Defaults::Window {
|
||||
constexpr int ZOOM = 2; // Zoom de la ventana por defecto
|
||||
constexpr int ZOOM = 3; // Zoom de la ventana por defecto
|
||||
} // namespace Defaults::Window
|
||||
|
||||
namespace Defaults::Video {
|
||||
@@ -114,6 +114,10 @@ namespace Defaults::Console {
|
||||
constexpr Uint8 COMMAND_COLOR = 9; // Color del texto que escribe el usuario
|
||||
} // namespace Defaults::Console
|
||||
|
||||
namespace Defaults::Loading {
|
||||
constexpr bool SHOW_PROGRESS = false; // Por defecto no mostrar la barra de carga de recursos
|
||||
} // namespace Defaults::Loading
|
||||
|
||||
namespace Defaults::Localization {
|
||||
constexpr const char* LANGUAGE = "ca"; // Idioma por defecto (en = inglés, ca = catalán)
|
||||
} // namespace Defaults::Localization
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
#include "game/entities/key.hpp"
|
||||
|
||||
#include <cmath> // Para std::sin
|
||||
|
||||
#include "core/rendering/sprite/animated_sprite.hpp" // Para AnimatedSprite
|
||||
#include "core/resources/resource_cache.hpp" // Para Resource
|
||||
|
||||
// Constructor: carga la animación, posiciona el sprite y crea el collider
|
||||
Key::Key(const Data& data)
|
||||
: sprite_(std::make_shared<AnimatedSprite>(Resource::Cache::get()->getAnimationData(data.animation_path))),
|
||||
id_(data.id) {
|
||||
id_(data.id),
|
||||
base_y_(data.y) {
|
||||
sprite_->setPosX(data.x);
|
||||
sprite_->setPosY(data.y);
|
||||
sprite_->setCurrentAnimation("default");
|
||||
@@ -18,17 +21,22 @@ void Key::render() {
|
||||
sprite_->render();
|
||||
}
|
||||
|
||||
// Avanza la animación de la llave
|
||||
// Avanza la animación de la llave y aplica el movimiento flotante sinusoidal
|
||||
void Key::update(float delta_time) {
|
||||
if (is_paused_) {
|
||||
return;
|
||||
}
|
||||
sprite_->animate(delta_time);
|
||||
|
||||
// Oscilacion sinusoidal sincronizada (mismo tiempo global para todas las llaves)
|
||||
const float t = static_cast<float>(SDL_GetTicks()) / 1000.0F;
|
||||
const float offset = std::sin(t * 2.0F * SDL_PI_F / FLOAT_PERIOD_S) * FLOAT_AMPLITUDE;
|
||||
sprite_->setPosY(base_y_ + offset);
|
||||
}
|
||||
|
||||
// Posición actual (para registrar pickup en KeyTracker)
|
||||
// Posición base (el collider y el tracker usan la posición sin oscilación)
|
||||
auto Key::getPos() const -> SDL_FPoint {
|
||||
return SDL_FPoint{.x = sprite_->getX(), .y = sprite_->getY()};
|
||||
return SDL_FPoint{.x = sprite_->getX(), .y = base_y_};
|
||||
}
|
||||
|
||||
#ifdef _DEBUG
|
||||
@@ -36,6 +44,7 @@ auto Key::getPos() const -> SDL_FPoint {
|
||||
void Key::setPosition(float x, float y) {
|
||||
sprite_->setPosX(x);
|
||||
sprite_->setPosY(y);
|
||||
base_y_ = y;
|
||||
collider_ = sprite_->getRect();
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -24,6 +24,9 @@ class Key {
|
||||
float y{0.0F}; // Posición Y en píxeles
|
||||
};
|
||||
|
||||
static constexpr float FLOAT_PERIOD_S = 2.0F; // Segundos por ciclo sinusoidal (todas las llaves sincronizadas)
|
||||
static constexpr float FLOAT_AMPLITUDE = 2.0F; // Amplitud en píxeles
|
||||
|
||||
explicit Key(const Data& data);
|
||||
~Key() = default;
|
||||
|
||||
@@ -44,5 +47,6 @@ class Key {
|
||||
std::shared_ptr<AnimatedSprite> sprite_; // Sprite animado de la llave
|
||||
SDL_FRect collider_{}; // Rectángulo de colisión
|
||||
std::string id_; // Identificador
|
||||
float base_y_{0.0F}; // Posición Y base (el sprite oscila alrededor)
|
||||
bool is_paused_{false}; // Indica si la llave está pausada
|
||||
};
|
||||
|
||||
@@ -631,6 +631,19 @@ namespace Options {
|
||||
}
|
||||
}
|
||||
|
||||
// Carga configuración de la pantalla de carga de recursos desde YAML
|
||||
void loadLoadingConfigFromYaml(const fkyaml::node& yaml) {
|
||||
if (!yaml.contains("loading")) { return; }
|
||||
const auto& l = yaml["loading"];
|
||||
|
||||
if (l.contains("show_progress")) {
|
||||
try {
|
||||
loading.show_progress = l["show_progress"].get_value<bool>();
|
||||
} catch (...) { /* @INTENTIONAL: campo yaml ausente o malformado → dejar default */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Carga configuración de idioma desde YAML
|
||||
void loadLocalizationFromYaml(const fkyaml::node& yaml) {
|
||||
if (yaml.contains("localization")) {
|
||||
@@ -696,6 +709,7 @@ namespace Options {
|
||||
loadKioskConfigFromYaml(yaml);
|
||||
loadLocalizationFromYaml(yaml);
|
||||
loadConsoleConfigFromYaml(yaml);
|
||||
loadLoadingConfigFromYaml(yaml);
|
||||
|
||||
std::cout << "Config file loaded successfully\n\n";
|
||||
|
||||
@@ -832,6 +846,12 @@ namespace Options {
|
||||
file << " text: \"" << kiosk.text << "\"\n";
|
||||
file << " infinite_lives: " << (kiosk.infinite_lives ? "true" : "false") << "\n";
|
||||
|
||||
// LOADING
|
||||
file << "\n";
|
||||
file << "# LOADING (pantalla de carga de recursos)\n";
|
||||
file << "loading:\n";
|
||||
file << " show_progress: " << (loading.show_progress ? "true" : "false") << " # mostrar barra de progreso al cargar recursos\n";
|
||||
|
||||
// LOCALIZATION
|
||||
file << "\n";
|
||||
file << "# LOCALIZATION (en = English, ca = Catalan)\n";
|
||||
|
||||
@@ -138,6 +138,11 @@ namespace Options {
|
||||
float height{Defaults::Canvas::HEIGHT}; // Alto de la resolucion del juego
|
||||
};
|
||||
|
||||
// Estructura para las opciones de la pantalla de carga de recursos
|
||||
struct Loading {
|
||||
bool show_progress{Defaults::Loading::SHOW_PROGRESS}; // Mostrar barra de progreso al cargar recursos
|
||||
};
|
||||
|
||||
// Estructura para las opciones visuales de la consola en pantalla
|
||||
struct Console {
|
||||
bool transparent{Defaults::Console::TRANSPARENT}; // true = sin fondo, false = sólida
|
||||
@@ -191,6 +196,7 @@ namespace Options {
|
||||
inline GamepadControls gamepad_controls{}; // Botones del gamepad usados para jugar
|
||||
inline Kiosk kiosk{}; // Opciones del modo kiosko
|
||||
inline Console console{}; // Opciones visuales de la consola en pantalla
|
||||
inline Loading loading{}; // Opciones de la pantalla de carga de recursos
|
||||
|
||||
// Idioma del juego (establecido al inicio, sin cambio en caliente)
|
||||
inline std::string language{Defaults::Localization::LANGUAGE};
|
||||
|
||||
Reference in New Issue
Block a user