#pragma once

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

#ifndef TITLE_H
#define TITLE_H

#define TEXT_COPYRIGHT "2016,2022 JAILDESIGNER & JAILBROTHER"
#define VERSION "0.6"

// Clase Intro
class Title
{
private:
	SDL_Renderer *renderer;	 // El renderizador de la ventana
	Screen *screen;			 // Objeto encargado de dibujar en pantalla
	LTexture *texture;		 // Textura con los graficos
	SDL_Event *eventHandler; // Manejador de eventos
	Asset *asset;			 // Objeto con los ficheros de recurso
	Input *input;			 // Objeto para gestionar las entradas
	Text *text;				 // Objeto para escribir texto en pantalla
	Menu *menu;				 // Objeto para gestionar el menu del titulo
	AnimatedSprite *sprite;	 // Sprite para dibujar los graficos de la intro
	JA_Music music;			 // Musica del titulo del juego
	section_t section;		 // Estado del bucle principal para saber si continua o se sale
	Uint32 ticks;				 // Contador de ticks para ajustar la velocidad del programa
	Uint32 ticksSpeed;			 // Velocidad a la que se repiten los bucles del programa

	// Actualiza las variables
	void update();

	// Dibuja en pantalla
	void render();

	// Comprueba el menu
	void checkMenu();

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

	// Destructor
	~Title();

	// Bucle principal
	section_t run();
};

#endif
