Sprite: Se peude establecer el nivel de zoom en ancho y alto

This commit is contained in:
2023-05-07 12:55:32 +02:00
parent 3ba5f6cce0
commit 7725f8ab3e
6 changed files with 73 additions and 12 deletions

View File

@@ -414,16 +414,16 @@ void Screen::showNotification(std::string text1, std::string text2, int icon)
// Dibuja las notificaciones
void Screen::renderNotifications()
{
if (notifyAdded)
//if (notifyAdded)
{
if (!notifyActive)
{
return;
}
SDL_RenderSetLogicalSize(renderer, notificationLogicalWidth, notificationLogicalHeight);
//SDL_RenderSetLogicalSize(renderer, notificationLogicalWidth, notificationLogicalHeight);
notify->render();
SDL_RenderSetLogicalSize(renderer, windowWidth, windowHeight);
//SDL_RenderSetLogicalSize(renderer, windowWidth, windowHeight);
}
}

View File

@@ -22,6 +22,8 @@ Sprite::Sprite(int x, int y, int w, int h, Texture *texture, SDL_Renderer *rende
// Inicializa variables
enabled = true;
zoomW = 1.0f;
zoomH = 1.0f;
}
Sprite::Sprite(SDL_Rect rect, Texture *texture, SDL_Renderer *renderer)
@@ -45,6 +47,8 @@ Sprite::Sprite(SDL_Rect rect, Texture *texture, SDL_Renderer *renderer)
// Inicializa variables
enabled = true;
zoomW = 1.0f;
zoomH = 1.0f;
}
// Muestra el sprite por pantalla
@@ -52,7 +56,7 @@ void Sprite::render()
{
if (enabled)
{
texture->render(renderer, x, y, &spriteClip);
texture->render(renderer, x, y, &spriteClip, zoomW, zoomH);
}
}
@@ -198,4 +202,16 @@ void Sprite::setRect(SDL_Rect rect)
y = rect.y;
w = rect.w;
h = rect.h;
}
// Establece el nivel de zoom en horizontal
void Sprite::setZoomW(float value)
{
zoomW = value;
}
// Establece el nivel de zoom en vertical
void Sprite::setZoomH(float value)
{
zoomH = value;
}

View File

@@ -21,6 +21,8 @@ protected:
int h; // Alto del sprite
SDL_Rect spriteClip; // Rectangulo de origen de la textura que se dibujará en pantalla
bool enabled; // Indica si el sprite esta habilitado
float zoomW; // Cantidad de zoom en horizontal a aplicar al sprite
float zoomH; // Cantidad de zoom en verical a aplicar al sprite
public:
// Constructor
@@ -95,6 +97,12 @@ public:
// Establece los valores de posición y tamaño del sprite
void setRect(SDL_Rect rect);
// Establece el nivel de zoom en horizontal
void setZoomW(float value);
// Establece el nivel de zoom en vertical
void setZoomH(float value);
};
#endif

View File

@@ -98,6 +98,7 @@ Text::Text(string textFile, string bitmapFile, SDL_Renderer *renderer)
// Inicializa variables
fixedWidth = false;
zoom = 1;
}
// Constructor
@@ -121,6 +122,7 @@ Text::Text(string textFile, Texture *texture, SDL_Renderer *renderer)
// Inicializa variables
fixedWidth = false;
zoom = 1;
}
// Constructor
@@ -141,6 +143,7 @@ Text::Text(textFile_t *textFile, Texture *texture, SDL_Renderer *renderer)
// Inicializa variables
fixedWidth = false;
zoom = 1;
}
// Destructor
@@ -168,7 +171,7 @@ void Text::write(int x, int y, string text, int kerning, int lenght)
sprite->setPosY(y);
sprite->render();
// shift += (offset[int(text[i])].w + kerning);
shift += fixedWidth ? boxWidth : (offset[int(text[i])].w + kerning);
shift += fixedWidth ? boxWidth * zoom : (offset[int(text[i])].w + kerning) * zoom;
}
}
@@ -266,4 +269,24 @@ void Text::reLoadTexture()
void Text::setFixedWidth(bool value)
{
fixedWidth = value;
}
// Establece el tamaño del zoom
void Text::setZoom(int value)
{
if (value < 1)
{
value = 1;
}
zoom = value;
sprite->setZoomW(zoom);
sprite->setZoomH(zoom);
}
// Quita el zoom
void Text::disableZoom()
{
zoom = 1;
sprite->setZoomW(zoom);
sprite->setZoomH(zoom);
}

View File

@@ -34,9 +34,10 @@ class Text
private:
// Objetos y punteros
Texture *texture; // Textura con los gráficos para el texto
Sprite *sprite; // Objeto para dibujar el texto
Sprite *sprite; // Objeto para dibujar el texto
// Variables
int zoom; // Tamaño del texto
int boxWidth; // Anchura de la caja de cada caracter en el png
int boxHeight; // Altura de la caja de cada caracter en el png
bool fixedWidth; // Indica si el texto se ha de escribir con longitud fija en todas las letras
@@ -77,6 +78,12 @@ public:
// Establece si se usa un tamaño fijo de letra
void setFixedWidth(bool value);
// Establece el tamaño del zoom
void setZoom(int value);
// Quita el zoom
void disableZoom();
};
#endif