eliminat el vector precalculat en tiled_bg per al moviment circular

This commit is contained in:
2025-09-25 08:08:29 +02:00
parent 308f5c20fb
commit 3897553704
3 changed files with 5 additions and 11 deletions

View File

@@ -27,7 +27,7 @@ class Background {
using ProgressCallback = std::function<void(float)>; // Callback para sincronización using ProgressCallback = std::function<void(float)>; // Callback para sincronización
// --- Constructor y destructor --- // --- Constructor y destructor ---
Background(float total_progress_to_complete); // Constructor principal Background(float total_progress_to_complete = 6100.0F); // Constructor principal
~Background(); // Destructor ~Background(); // Destructor
// --- Métodos principales --- // --- Métodos principales ---

View File

@@ -40,10 +40,6 @@ TiledBG::TiledBG(SDL_FRect pos, TiledBGMode mode)
break; break;
} }
// Inicializa los valores del vector con los valores del seno
for (int i = 0; i < 360; ++i) {
sin_[i] = std::sin(i * std::numbers::pi / 180.0); // Convierte grados a radianes y calcula el seno
}
} }
// Destructor // Destructor
@@ -97,10 +93,10 @@ void TiledBG::update(float delta_time) {
} }
case TiledBGMode::CIRCLE: { case TiledBGMode::CIRCLE: {
// El tileado de fondo se desplaza en circulo // El tileado de fondo se desplaza en circulo
const int INDEX = static_cast<int>(desp_) % 360; const float angle_rad = (desp_ * std::numbers::pi / 180.0F);
window_.x = 128 + (static_cast<int>(sin_[(INDEX + 270) % 360] * 128)); window_.x = 128 + static_cast<int>(std::cos(angle_rad) * 128);
window_.y = 128 + (static_cast<int>(sin_[(360 - INDEX) % 360] * 96)); window_.y = 128 + static_cast<int>(std::sin(-angle_rad) * 96);
break; break;
} }
default: default:

View File

@@ -2,7 +2,6 @@
#include <SDL3/SDL.h> // Para SDL_FRect, SDL_SetTextureColorMod, SDL_Renderer, SDL_Texture #include <SDL3/SDL.h> // Para SDL_FRect, SDL_SetTextureColorMod, SDL_Renderer, SDL_Texture
#include <array> // Para array
#include "color.h" // Para Color #include "color.h" // Para Color
@@ -53,7 +52,6 @@ class TiledBG {
SDL_FRect pos_; // Posición y tamaño del mosaico SDL_FRect pos_; // Posición y tamaño del mosaico
SDL_FRect window_; // Ventana visible para la textura de fondo del título SDL_FRect window_; // Ventana visible para la textura de fondo del título
TiledBGMode mode_; // Tipo de movimiento del mosaico TiledBGMode mode_; // Tipo de movimiento del mosaico
std::array<double, 360> sin_; // Vector con los valores del seno precalculados
float desp_ = 0.0F; // Desplazamiento aplicado float desp_ = 0.0F; // Desplazamiento aplicado
float speed_ = 1.0F; // Incremento que se añade al desplazamiento a cada bucle float speed_ = 1.0F; // Incremento que se añade al desplazamiento a cada bucle
bool stopping_ = false; // Indica si se está deteniendo bool stopping_ = false; // Indica si se está deteniendo