#pragma once

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

#include <string>
#include "text.h"

#ifndef INTRO_H
#define INTRO_H

// Clase Intro
class Intro
{
private:
	SDL_Renderer *renderer;	 // El renderizador de la ventana
	Screen *screen;			 // Objeto encargado de dibujar en pantalla
	Asset *asset;			 // Objeto con los ficheros de recursos
	LTexture *texture;		 // Textura con los graficos "JAILGAMES"
	LTexture *texture2;		 // Textura con los graficos "Since 1998"
	SDL_Event *eventHandler; // Manejador de eventos
	Sprite *sprite;			 // Sprite para manejar la textura
	Sprite *sprite2;		 // Sprite para manejar la textura2
	int preCounter;			 // Contador previo para realizar una pausa inicial
	int counter;			 // Contador
	section_t section;		 // Estado del bucle principal para saber si continua o se sale
	int ticks;				 // Contador de ticks para ajustar la velocidad del programa
	int ticksSpeed;			 // Velocidad a la que se repiten los bucles del programa
	int loadCounter;		 // Contador para controlar las cargas
	bool load1, load2;
	JA_Music loadingSound1, loadingSound2, loadingSound3;

	// Text *text;

	// Actualiza las variables
	void update();

	// Dibuja en pantalla
	void render();

	// Comprueba el manejador de eventos
	void checkEventHandler();

	// Gestiona el contador interno
	void updateCounter();

	// Gestiona el contador de carga
	void updateLoad();

	// Dibuja la pantalla de carga
	void renderLoad();

public:
	// Constructor
	Intro(SDL_Renderer *renderer, Screen *screen, Asset *asset);

	// Destructor
	~Intro();

	// Bucle principal
	section_t run();
};

#endif
