85 lines
2.9 KiB
C++
85 lines
2.9 KiB
C++
#pragma once
|
|
|
|
#include <SDL2/SDL.h>
|
|
#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
|
|
|
|
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);
|
|
|
|
// 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 |