Abans de renombrar player.cpp

This commit is contained in:
2024-10-11 21:58:59 +02:00
parent 3a6950f3a4
commit d50cf23721
4 changed files with 332 additions and 339 deletions

View File

@@ -8,17 +8,15 @@
#include <string> // for basic_string, string
#include "utils.h" // for Color
#include <memory>
class Asset;
class Input;
class Notify;
enum class ScreenFilter
enum class ScreenFilter : int
{
NEAREST = 0,
LINEAL = 1,
};
enum class ScreenVideoMode
enum class ScreenVideoMode : int
{
WINDOW = 0,
FULLSCREEN = 1,
@@ -28,29 +26,27 @@ class Screen
{
private:
// [SINGLETON] Objeto screen privado para Don Melitón
static Screen *screen;
static Screen *screen_;
// Objetos y punteros
SDL_Window *window; // Ventana de la aplicación
SDL_Renderer *renderer; // El renderizador de la ventana
Asset *asset; // Objeto con el listado de recursos
Input *input; // Objeto para leer las entradas de teclado o mando
std::unique_ptr<Notify> notify; // Pinta notificaciones en pantalla
SDL_Texture *gameCanvas; // Textura donde se dibuja todo antes de volcarse al renderizador
SDL_Texture *shaderCanvas; // Textura para pasarle al shader desde gameCanvas
SDL_Window *window_; // Ventana de la aplicación
SDL_Renderer *renderer_; // El renderizador de la ventana
std::unique_ptr<Notify> notify_; // Pinta notificaciones en pantalla
SDL_Texture *game_canvas_; // Textura donde se dibuja todo antes de volcarse al renderizador
SDL_Texture *shader_canvas_; // Textura para pasarle al shader desde gameCanvas
// Variables
SDL_Rect srcrect; // Coordenadas de donde va a pillar la textura del juego para dibujarla
SDL_Rect dstrect; // Coordenadas donde se va a dibujar la textura del juego sobre la pantalla o ventana
Color borderColor; // Color del borde añadido a la textura de juego para rellenar la pantalla
bool attenuateEffect; // Indica si la pantalla ha de estar atenuada
Uint32 fpsTicks; // Ticks para contar los frames por segundo
int fpsCounter; // Contador de frames por segundo
int fps; // Frames calculados en el último segundo
bool showInfo; // Indica si ha de mostrar/ocultar la información de la pantalla
std::string infoResolution; // Texto con la informacion de la pantalla
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 del borde añadido a la textura de juego para rellenar la pantalla
bool attenuate_effect_; // Indica si la pantalla ha de estar atenuada
Uint32 fps_ticks_; // Ticks para contar los frames por segundo
int fps_counter_; // Contador de frames por segundo
int fps_; // Frames calculados en el último segundo
bool show_info_; // Indica si ha de mostrar/ocultar la información de la pantalla
std::string info_resolution_; // Texto con la informacion de la pantalla
struct effect_t
struct FlashEffect
{
bool enabled; // Indica si el efecto está activo
int counter; // Contador para el efecto
@@ -58,10 +54,7 @@ private:
Color color; // Color del efecto
};
// Variables - Efectos
effect_t flashEffect; // Variable para gestionar el efecto de flash
struct shake_t
struct ShakeEffect
{
int desp; // Pixels de desplazamiento para agitar la pantalla en el eje x
int delay; // Retraso entre cada desplazamiento de la pantalla al agitarse
@@ -71,10 +64,14 @@ private:
int originalPos; // Posición inicial de la pantalla para dejarla igual tras el desplazamiento
int originalWidth; // Anchura inicial de la pantalla para dejarla igual tras el desplazamiento
bool enabled; // Indica si el efecto está activo
} shakeEffect;
};
// Variables - Efectos
FlashEffect flash_effect_; // Variable para gestionar el efecto de flash
ShakeEffect shake_effect_; // Variable para gestionar el efecto de agitar la pantalla
// Actualiza la logica para agitar la pantalla
void updateShake();
void updateShakeEffect();
// Actualiza y dibuja el efecto de flash en la pantalla
void doFlash();
@@ -122,7 +119,7 @@ public:
void blit();
// Establece el modo de video
void setVideoMode(ScreenVideoMode videoMode);
void setVideoMode(ScreenVideoMode video_mode);
// Camibia entre pantalla completa y ventana
void switchVideoMode();
@@ -140,7 +137,7 @@ public:
void setBorderColor(Color color);
// Cambia el tipo de mezcla
void setBlendMode(SDL_BlendMode blendMode);
void setBlendMode(SDL_BlendMode blend_mode);
// Agita la pantalla
void shake();
@@ -158,7 +155,7 @@ public:
void showNotification(std::string text1 = "", std::string text2 = "", int icon = -1);
// Indica si hay alguna notificación activa en pantalla
bool notificationsAreActive();
bool notificationsAreActive() const;
// Obtiene el puntero al renderizador
SDL_Renderer *getRenderer();