Tocant coses d'Screen, pero no acaba de funcionar be res
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
#include <string> // Para string
|
||||
#include "param.h" // Para Param, ParamGame, param
|
||||
#include "utils.h" // Para Color
|
||||
#include "options.h"
|
||||
|
||||
enum class ScreenFilter : int
|
||||
{
|
||||
@@ -15,15 +16,18 @@ enum class ScreenFilter : int
|
||||
LINEAL = 1,
|
||||
};
|
||||
|
||||
enum class ScreenVideoMode : int
|
||||
enum class ScreenVideoMode : Uint32
|
||||
{
|
||||
WINDOW = 0,
|
||||
FULLSCREEN = 1,
|
||||
FULLSCREEN = SDL_WINDOW_FULLSCREEN_DESKTOP,
|
||||
};
|
||||
|
||||
class Screen
|
||||
{
|
||||
private:
|
||||
// Constantes
|
||||
static constexpr int WINDOWS_DECORATIONS_ = 35;
|
||||
|
||||
// [SINGLETON] Objeto privado
|
||||
static Screen *screen_;
|
||||
|
||||
@@ -35,7 +39,6 @@ private:
|
||||
// Variables
|
||||
SDL_Rect src_rect_; // Coordenadas de donde va a pillar la textura del juego para dibujarla
|
||||
SDL_Rect dst_rect_; // Coordenadas donde se va a dibujar la textura del juego sobre la pantalla o ventana
|
||||
Color border_color_ = Color(); // Color del borde añadido a la textura de juego para rellenar la pantalla
|
||||
bool attenuate_effect_ = false; // Indica si la pantalla ha de estar atenuada
|
||||
Uint32 fps_ticks_ = 0; // Ticks para contar los frames por segundo
|
||||
int fps_counter_ = 0; // Contador de frames por segundo
|
||||
@@ -44,7 +47,7 @@ private:
|
||||
#ifdef DEBUG
|
||||
bool show_info_ = false; // Indica si ha de mostrar/ocultar la información de la pantalla
|
||||
#else
|
||||
bool show_info_ = false; // Indica si ha de mostrar/ocultar la información de la pantalla
|
||||
bool show_debug_info_ = false; // Indica si ha de mostrar/ocultar la información de la pantalla
|
||||
#endif
|
||||
|
||||
struct FlashEffect
|
||||
@@ -107,12 +110,24 @@ private:
|
||||
// Muestra información por pantalla
|
||||
void renderInfo();
|
||||
|
||||
// Calcula la nueva posición de la ventana a partir de la antigua al cambiarla de tamaño
|
||||
SDL_Point getNewPosition();
|
||||
|
||||
// Selecciona y ejecuta el método de renderizado adecuado basado en la configuración de shaders
|
||||
void renderScreen();
|
||||
|
||||
// Reinicia los shaders
|
||||
void initShaders();
|
||||
|
||||
// Calcula el tamaño de la ventana
|
||||
void adjustWindowSize();
|
||||
|
||||
// Ajusta el tamaño lógico del renderizador
|
||||
void adjustRenderLogicalSize();
|
||||
|
||||
// Obtiene el tamaño máximo de zoom posible para la ventana
|
||||
int getMaxZoom();
|
||||
|
||||
// Renderiza todos los overlays y efectos
|
||||
void renderOverlays();
|
||||
|
||||
// Constructor
|
||||
Screen(SDL_Window *window, SDL_Renderer *renderer);
|
||||
|
||||
@@ -142,22 +157,19 @@ public:
|
||||
void render();
|
||||
|
||||
// Establece el modo de video
|
||||
void setVideoMode(ScreenVideoMode video_mode);
|
||||
void setVideoMode(ScreenVideoMode video_mode = options.video.mode);
|
||||
|
||||
// Cambia entre pantalla completa y ventana
|
||||
void toggleVideoMode();
|
||||
|
||||
// Cambia el tamaño de la ventana
|
||||
void setWindowSize(int size);
|
||||
void setWindowZoom(int size);
|
||||
|
||||
// Reduce el tamaño de la ventana
|
||||
void decWindowSize();
|
||||
bool decWindowZoom();
|
||||
|
||||
// Aumenta el tamaño de la ventana
|
||||
void incWindowSize();
|
||||
|
||||
// Cambia el color del borde
|
||||
void setBorderColor(Color color);
|
||||
bool incWindowZoom();
|
||||
|
||||
// Cambia el tipo de mezcla
|
||||
void setBlendMode(SDL_BlendMode blend_mode);
|
||||
@@ -179,4 +191,10 @@ public:
|
||||
|
||||
// Getters
|
||||
SDL_Renderer *getRenderer() { return renderer_; }
|
||||
|
||||
// Muestra la ventana
|
||||
void show() { SDL_ShowWindow(window_); }
|
||||
|
||||
// Oculta la ventana
|
||||
void hide() { SDL_HideWindow(window_); }
|
||||
};
|
||||
Reference in New Issue
Block a user