86 lines
2.6 KiB
C++
86 lines
2.6 KiB
C++
#pragma once
|
|
|
|
#include <SDL2/SDL.h>
|
|
#include "common/asset.h"
|
|
#include "common/screen.h"
|
|
#include "common/smartsprite.h"
|
|
#include "common/jail_audio.h"
|
|
#include "const.h"
|
|
|
|
#ifndef GAME_LOGO_H
|
|
#define GAME_LOGO_H
|
|
|
|
// Clase GameLogo
|
|
class GameLogo
|
|
{
|
|
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
|
|
|
|
Texture *dustTexture; // Textura con los graficos del polvo
|
|
Texture *coffeeTexture; // Textura con los graficos de la palabra coffee
|
|
Texture *crisisTexture; // Textura con los graficos de la plabra crisis
|
|
|
|
AnimatedSprite *dustBitmapL; // Sprite con la el polvo que aparece al colisionar el texto de la pantalla de titulo
|
|
AnimatedSprite *dustBitmapR; // Sprite con la el polvo que aparece al colisionar el texto de la pantalla de titulo
|
|
|
|
SmartSprite *coffeeBitmap; // Sprite con la palabra COFFEE para la pantalla de titulo
|
|
SmartSprite *crisisBitmap; // Sprite con la palabra CRISIS para la pantalla de titulo
|
|
|
|
JA_Sound_t *crashSound; // Sonido con el impacto del título
|
|
param_t *param; // Puntero con todos los parametros del programa
|
|
|
|
// Variables
|
|
int x; // Posición donde dibujar el logo
|
|
int y; // Posición donde dibujar el logo
|
|
|
|
enum status_e
|
|
{
|
|
disabled,
|
|
moving,
|
|
shaking,
|
|
finished
|
|
} status; // Estado en el que se encuentra la clase
|
|
|
|
struct shake_t
|
|
{
|
|
int desp; // Pixels de desplazamiento para agitar la pantalla en el eje x
|
|
int delay; // Retraso entre cada desplazamiento de la pantalla al agitarse
|
|
int counter; // Contador para el retraso
|
|
int lenght; // Cantidad de desplazamientos a realizar
|
|
int remaining; // Cantidad de desplazamientos pendientes a realizar
|
|
int origin; // Valor inicial de la pantalla para dejarla igual tras el desplazamiento
|
|
} shake; // Estructura para generar el efecto de agitación
|
|
|
|
// Inicializa las variables
|
|
void init();
|
|
|
|
// Calcula el desplazamiento vertical inicial
|
|
int getInitialVerticalDesp();
|
|
|
|
public:
|
|
// Constructor
|
|
GameLogo(SDL_Renderer *renderer, Screen *screen, Asset *asset, param_t *param, int x, int y);
|
|
|
|
// Destructor
|
|
~GameLogo();
|
|
|
|
// Pinta la clase en pantalla
|
|
void render();
|
|
|
|
// Actualiza la lógica de la clase
|
|
void update();
|
|
|
|
// Activa la clase
|
|
void enable();
|
|
|
|
// Indica si ha terminado la animación
|
|
bool hasFinished();
|
|
|
|
// Recarga las texturas
|
|
void reLoad();
|
|
};
|
|
|
|
#endif |