#pragma once #include #include "notify.h" #include "utils.h" #include #ifndef SCREEN_H #define SCREEN_H using namespace std; #define FILTER_NEAREST 0 #define FILTER_LINEAL 1 class Screen { private: // Objetos y punteros 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 Notify *notify; // Dibuja notificaciones por pantalla // Variables int borderWidth; // Anchura del borde que se añade a la resolución nativa del juego int borderHeight; // Anltura del borde que se añade a la resolución nativa del juego int gameWidth; // Resultado de multiplicar la resolución nativa (mas el borde) por el zoom nativo int gameHeight; // Resultado de multiplicar la resolución nativa (mas el borde) por el zoom nativo int windowWidth; // Resultado de multiplicar gameWidth por el zoom de la ventana int windowHeight; // Resultado de multiplicar gameWidth por el zoom de la ventana SDL_Rect dest; // Coordenadas donde se va a dibujar la textura del juego sobre la pantalla o ventana color_t borderColor; // Color del borde añadido a la textura de juego para rellenar la pantalla // Variables - Efectos bool fade; // Indica si esta activo el efecto de fade int fadeCounter; // Temporizador para el efecto de fade int fadeLenght; // Duración del fade bool spectrumFade; // Indica si esta activo el efecto de fade spectrum int spectrumFadeCounter; // Temporizador para el efecto de fade spectrum int spectrumFadeLenght; // Duración del fade spectrum vector spectrumColor; // Colores para el fade spectrum // Inicializa las variables para el fade void iniFade(); // Actualiza el fade void updateFade(); // Dibuja el fade void renderFade(); // Inicializa las variables para el fade spectrum void iniSpectrumFade(); // Actualiza el spectrum fade void updateSpectrumFade(); // Dibuja el spectrum fade void renderSpectrumFade(); // Dibuja las notificaciones void renderNotifications(); 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 videoMode); // Camibia entre pantalla completa y ventana void switchVideoMode(); // Cambia el tamaño de la ventana void setWindowSize(int size); // Reduce el tamaño de la ventana void decWindowSize(); // Aumenta el tamaño de la ventana void incWindowSize(); // Cambia el color del borde void setBorderColor(color_t color); // Cambia el tipo de mezcla void setBlendMode(SDL_BlendMode blendMode); // Establece el tamaño del borde void setBorderWidth(int s); void setBorderHeight(int s); // Establece si se ha de ver el borde en el modo ventana void setBorderEnabled(bool value); // Cambia entre borde visible y no visible void switchBorder(); // Activa el fade void setFade(); // Comprueba si ha terminado el fade bool fadeEnded(); // Activa el spectrum fade void setspectrumFade(); // Comprueba si ha terminado el spectrum fade bool spectrumFadeEnded(); // Actualiza los efectos void updateFX(); // Dibuja los efectos void renderFX(); // Añade un notificador a la pantalla void addNotifier(string iconsFile, string bitmapFontFile, string offsetFontFile, string soundFile); // Actualiza el notificador void updateNotifier(); // Muestra una notificación de texto por pantalla; void showNotification(string text1 = "", string text2 = "", int icon = -1); // Actualiza la lógica del objeto void update(); }; #endif