#pragma once

#include <SDL2/SDL.h>
#include "utils.h"

#ifndef SCREEN_H
#define SCREEN_H

// Clase Screen
class Screen
{
private:
	SDL_Window *window;		 // Ventana de la aplicación
	SDL_Renderer *renderer;	 // El renderizador de la ventana
	SDL_Texture *gameCanvas; // Textura para completar la ventana de juego hasta la pantalla completa
	options_t *options;		 // Variable con todas las opciones del programa

	int screenWidth;	  // Ancho de la pantalla
	int screenHeight;	  // Alto de la pantalla
	int gameCanvasWidth;  // Ancho de la textura donde se dibuja el juego
	int gameCanvasHeight; // Alto de la textura donde se dibuja el juego
	SDL_Rect dest;		  // Coordenadas donde se va a dibujar la textura del juego
	color_t borderColor;  // Color del borde añadido a la textura de juego para rellenar la pantalla

public:
	// Constructor
	Screen(SDL_Window *window, SDL_Renderer *renderer, options_t *options);

	// Destructor
	~Screen();

	// Limpia la pantalla
	void clean(color_t color = {0x00, 0x00, 0x00});

	// Prepara para empezar a dibujar en la textura de juego
	void start();

	// Vuelca el contenido del renderizador en pantalla
	void blit();

	// Establece el modo de video
	void setVideoMode(int fullScreenMode);
};

#endif
