Files
coffee_crisis_arcade_edition/source/background.h

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