#pragma once #include #include "common/screen.h" #include "common/asset.h" #include "common/movingsprite.h" #ifndef BACKGROUND_H #define BACKGROUND_H // Clase Background 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 // 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 SDL_Texture *canvas; // Textura para componer el fondo int base; // Linea de fondo coincidente con el area inferior de la zona de juego param_t *param; // Puntero con todos los parametros del programa Texture *buildingsTexture; // Textura con los edificios de fondo Texture *cloudsTexture; // 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 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 // Compone todos los elementos del fondo en la textura void fillCanvas(); public: // Constructor Background(SDL_Renderer *renderer, Screen *screen, Asset *asset, param_t *param); // Destructor ~Background(); // Actualiza la lógica del objeto void update(); // Dibuja el objeto void render(); // Establece la posición del objeto void setPos(SDL_Rect); // Vuelve a cargar las texturas void reloadTextures(); // 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 setTransition(float value); // Ajusta el valor de la variable void setSrcDest(SDL_Rect value); // Ajusta el valor de la variable void setDstDest(SDL_Rect value); }; #endif