#pragma once

#include <SDL2/SDL.h>
#include "common/asset.h"
#include "common/input.h"
#include "common/jail_audio.h"
#include "common/screen.h"
#include "common/sprite.h"
#include "common/utils.h"
#include "const.h"

#ifndef LOGO_H
#define LOGO_H

// Clase Logo
class Logo
{
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
	Input *input;			 // Objeto pata gestionar la entrada
	Texture *texture;		 // Textura con los graficos
	SDL_Event *eventHandler; // Manejador de eventos
	Sprite *sprite;			 // Sprite con la textura del logo
	section_t *section;		 // Estado del bucle principal para saber si continua o se sale

	// Variables
	Uint32 ticks;	   // Contador de ticks para ajustar la velocidad del programa
	Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa
	int counter;	   // Contador

	// Actualiza las variables del objeto
	void update();

	// Dibuja el objeto en pantalla
	void render();

	// Comprueba si ha terminado el logo
	void checkLogoEnd();

	// Comprueba los eventos
	void checkEvents();

	// Comprueba las entradas
	void checkInput();

	// Dibuja el fade
	void renderFade();

public:
	// Constructor
	Logo(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, section_t *section);

	// Destructor
	~Logo();

	// Bucle principal
	void run();
};

#endif
