Añadido cambio de color en las nubes

This commit is contained in:
2024-08-30 13:12:04 +02:00
parent 1d847eae9f
commit 4f6c92c8d1
7 changed files with 189 additions and 125 deletions

View File

@@ -14,7 +14,7 @@
El objeto tiene un tamaño total definido en la variable "rect". En principio este
tamaño coincide con el tamaño de la ventana o resolución del juego, pero se pinta
solo el rectangulo definido en srcRect en la posición de la pantalla definida en
solo el rectangulo definido en srcRect en la posición de la pantalla definida en
dstRect.
Utiliza varios métodos para definir su comportamiento:
@@ -44,92 +44,102 @@
class Background
{
private:
// Objetos y punteros
SDL_Renderer *renderer; // El renderizador de la ventana
Screen *screen; // Objeto encargado de dibujar en pantalla
Asset *asset; // Objeto que gestiona todos los ficheros de recursos
// Objetos y punteros
SDL_Renderer *renderer; // El renderizador de la ventana
Asset *asset; // Objeto que gestiona todos los ficheros de recursos
Texture *buildingsTexture; // Textura con los edificios de fondo
Texture *clouds1Texture; // Textura con las nubes de fondo
Texture *clouds2Texture; // Textura con las nubes de fondo
Texture *grassTexture; // Textura con la hierba del suelo
Texture *gradientsTexture; // Textura con los diferentes colores de fondo del juego
Texture *buildingsTexture; // Textura con los edificios de fondo
Texture *topCloudsTexture; // Textura con las nubes de fondo
Texture *bottomCloudsTexture; // Textura con las nubes de fondo
Texture *grassTexture; // Textura con la hierba del suelo
Texture *gradientsTexture; // Textura con los diferentes colores de fondo del juego
MovingSprite *clouds1A; // Sprite para las nubes superiores
MovingSprite *clouds1B; // Sprite para las nubes superiores
MovingSprite *clouds2A; // Sprite para las nubes inferiores
MovingSprite *clouds2B; // Sprite para las nubes inferiores
MovingSprite *topCloudsSprite_A; // Sprite para las nubes superiores
MovingSprite *topCloudsSprite_B; // Sprite para las nubes superiores
MovingSprite *bottomCloudsSprite_A; // Sprite para las nubes inferiores
MovingSprite *bottomCloudsSprite_B; // Sprite para las nubes inferiores
Sprite *buildingsSprite; // Sprite con los edificios de fondo
Sprite *gradientSprite; // Sprite con los graficos del degradado de color de fondo
Sprite *grassSprite; // Sprite para la hierba
Sprite *buildingsSprite; // Sprite con los edificios de fondo
Sprite *gradientSprite; // Sprite con los graficos del degradado de color de fondo
Sprite *grassSprite; // Sprite para la hierba
SDL_Texture *canvas; // Textura para componer el fondo
SDL_Texture *colorTexture; // Textura para atenuar el fondo
SDL_Texture *canvas; // Textura para componer el fondo
SDL_Texture *colorTexture; // Textura para atenuar el fondo
param_t *param; // Puntero con todos los parametros del programa
param_t *param; // Puntero con todos los parametros del programa
// Variables
SDL_Rect gradientRect[4]; // Vector con las coordenadas de los 4 degradados para el cielo
int gradientNumber; // Indica el número de degradado de fondo que se va a dibujar
int alpha; // Transparencia entre los dos degradados
float cloudsSpeed; // Velocidad a la que se desplazan las nubes
float transition; // Nivel de transición del fondo 0..1
int counter; // Contador interno
SDL_Rect rect; // Tamaño del objeto fondo
SDL_Rect srcRect; // Parte del objeto fondo que se va a dibujará en pantalla
SDL_Rect dstRect; // Posición donde dibujar la parte del objeto fondo que se dibujará en pantalla
int base; // Linea de fondo coincidente con el area inferior de la zona de juego
color_t color; // Color para atenuar el fondo
int alphaColorText; // Alpha para atenuar el fondo
int alphaColorTextTemp; // Valor temporal para hacer la transición de alpha
// Variables
SDL_Rect gradientRect[4]; // Vector con las coordenadas de los 4 degradados para el cielo
SDL_Rect topCloudsRect[4]; // Vector con las coordenadas de los 4 nubes de arriba
SDL_Rect bottomCloudsRect[4]; // Vector con las coordenadas de los 4 nubes de abajo
int gradientNumber; // Indica el número de degradado de fondo que se va a dibujar
int alpha; // Transparencia entre los dos degradados
float cloudsSpeed; // Velocidad a la que se desplazan las nubes
float transition; // Nivel de transición del fondo 0..1
int counter; // Contador interno
SDL_Rect rect; // Tamaño del objeto fondo
SDL_Rect srcRect; // Parte del objeto fondo que se va a dibujará en pantalla
SDL_Rect dstRect; // Posición donde dibujar la parte del objeto fondo que se dibujará en pantalla
int base; // Linea de fondo coincidente con el area inferior de la zona de juego
color_t color; // Color para atenuar el fondo
int alphaColorText; // Alpha para atenuar el fondo
int alphaColorTextTemp; // Valor temporal para hacer la transición de alpha
// Compone todos los elementos del fondo en la textura
void fillCanvas();
// Dibuja el gradiente de fondo
void renderGradient();
// Actualiza el valor de alpha
void updateAlphaColorText();
// Dibuja las nubes de arriba
void renderTopClouds();
// Actualiza las nubes
void updateCLouds();
// Dibuja las nubes de abajo
void renderBottomClouds();
// Compone todos los elementos del fondo en la textura
void fillCanvas();
// Actualiza el valor de alpha
void updateAlphaColorText();
// Actualiza las nubes
void updateClouds();
public:
// Constructor
Background(SDL_Renderer *renderer, Screen *screen, Asset *asset, param_t *param);
// Constructor
Background(SDL_Renderer *renderer, Asset *asset, param_t *param);
// Destructor
~Background();
// Destructor
~Background();
// Actualiza la lógica del objeto
void update();
// Actualiza la lógica del objeto
void update();
// Dibuja el objeto
void render();
// Dibuja el objeto
void render();
// Establece la posición del objeto
void setPos(SDL_Rect);
// Establece la posición del objeto
void setPos(SDL_Rect);
// Vuelve a cargar las texturas
void reloadTextures();
// Vuelve a cargar las texturas
void reloadTextures();
// Ajusta el valor de la variable
void setCloudsSpeed(float value);
// Ajusta el valor de la variable
void setCloudsSpeed(float value);
// Ajusta el valor de la variable
void setGradientNumber(int value);
// Ajusta el valor de la variable
void setGradientNumber(int value);
// Ajusta el valor de la variable
void setTransition(float value);
// Ajusta el valor de la variable
void setTransition(float value);
// Ajusta el valor de la variable
void setSrcRect(SDL_Rect value);
// Ajusta el valor de la variable
void setSrcRect(SDL_Rect value);
// Ajusta el valor de la variable
void setDstRect(SDL_Rect value);
// Ajusta el valor de la variable
void setDstRect(SDL_Rect value);
// Establece el color de atenuación
void setColor(color_t color);
// Establece el color de atenuación
void setColor(color_t color);
// Establece la transparencia de la atenuación
void setAlpha(int alpha);
// Establece la transparencia de la atenuación
void setAlpha(int alpha);
};