Acabada de perfilar la classe PathSprite Menjeades declaracions de utils.h als fitxers que toca
79 lines
2.6 KiB
C++
79 lines
2.6 KiB
C++
#pragma once
|
|
|
|
#include <memory> // Para unique_ptr, shared_ptr
|
|
#include "animated_sprite.h" // Para AnimatedSprite
|
|
#include "smart_sprite.h" // Para SmartSprite
|
|
#include "sprite.h" // Para Sprite
|
|
class Texture; // lines 7-7
|
|
|
|
// Clase GameLogo
|
|
class GameLogo
|
|
{
|
|
private:
|
|
enum class Status
|
|
{
|
|
DISABLED,
|
|
MOVING,
|
|
SHAKING,
|
|
FINISHED,
|
|
};
|
|
|
|
struct Shake
|
|
{
|
|
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
|
|
};
|
|
|
|
// Objetos y punteros
|
|
std::shared_ptr<Texture> dust_texture_; // Textura con los graficos del polvo
|
|
std::shared_ptr<Texture> coffee_texture_; // Textura con los graficos de la palabra "COFFEE"
|
|
std::shared_ptr<Texture> crisis_texture_; // Textura con los graficos de la plabra "CRISIS"
|
|
std::shared_ptr<Texture> arcade_edition_texture_; // Textura con los graficos de "Arcade Edition"
|
|
|
|
std::unique_ptr<AnimatedSprite> dust_left_sprite_; // Sprite con la el polvo que aparece al colisionar el texto de la pantalla de titulo
|
|
std::unique_ptr<AnimatedSprite> dust_right_sprite_; // Sprite con la el polvo que aparece al colisionar el texto de la pantalla de titulo
|
|
|
|
std::unique_ptr<SmartSprite> coffee_sprite_; // Sprite con la palabra "COFFEE" para la pantalla de titulo
|
|
std::unique_ptr<SmartSprite> crisis_sprite_; // Sprite con la palabra "CRISIS" para la pantalla de titulo
|
|
|
|
std::unique_ptr<Sprite> arcade_edition_sprite_; // Sprite con los graficos de "Arcade Edition"
|
|
|
|
// Variables
|
|
int x_; // Posición donde dibujar el logo
|
|
int y_; // Posición donde dibujar el logo
|
|
|
|
Status status_; // Estado en el que se encuentra la clase
|
|
Shake shake_; // Estructura para generar el efecto de agitación
|
|
|
|
// Inicializa las variables
|
|
void init();
|
|
|
|
// Calcula el desplazamiento vertical inicial
|
|
int getInitialVerticalDesp();
|
|
|
|
public:
|
|
// Constructor
|
|
GameLogo(int x, int y);
|
|
|
|
// Destructor
|
|
~GameLogo() = default;
|
|
|
|
// 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() const;
|
|
|
|
// Recarga las texturas
|
|
void reLoad();
|
|
}; |