Sprite: Se peude establecer el nivel de zoom en ancho y alto
This commit is contained in:
19
main.cpp
19
main.cpp
@@ -90,8 +90,8 @@ int main(int argc, char *argv[])
|
||||
MovingSprite *sprite = new MovingSprite();
|
||||
sprite->setRenderer(renderer);
|
||||
sprite->setTexture(texture);
|
||||
sprite->setPosX(0);
|
||||
sprite->setPosY(0);
|
||||
sprite->setPosX(140);
|
||||
sprite->setPosY(100);
|
||||
sprite->setWidth(16);
|
||||
sprite->setHeight(32);
|
||||
sprite->setSpriteClip({0, 0, 16, 32});
|
||||
@@ -116,6 +116,9 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
switch (event->key.keysym.scancode)
|
||||
{
|
||||
case SDL_SCANCODE_N:
|
||||
screen->showNotification("Ejemplo de", "notificacion", 1);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
@@ -168,7 +171,7 @@ int main(int argc, char *argv[])
|
||||
sprite->update();
|
||||
|
||||
// Actualiza el degradado
|
||||
// if (counter % 4 == 0)
|
||||
if (counter % 1 == 0)
|
||||
{
|
||||
gradBreathDirection == 0 ? gradCurrentColor-- : gradCurrentColor++;
|
||||
if (gradCurrentColor == gradColorMin)
|
||||
@@ -183,10 +186,9 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
// Dibuja en pantalla
|
||||
//SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0xFF);
|
||||
//SDL_RenderClear(renderer);
|
||||
screen->start();
|
||||
screen->clean();
|
||||
|
||||
// Dibuja un degradado de fondo
|
||||
const int gradFirstLine = options->gameHeight / 3;
|
||||
const int gradLastLine = options->gameHeight;
|
||||
@@ -200,12 +202,17 @@ int main(int argc, char *argv[])
|
||||
SDL_SetRenderDrawColor(renderer, color, 0x00, 0x00, 0xFF);
|
||||
SDL_RenderDrawLine(renderer, 0, i, options->gameWidth, i);
|
||||
}
|
||||
|
||||
// Escribe el texto
|
||||
text->setZoom(2);
|
||||
text->writeCentered(options->gameWidth / 2, text->getCharacterSize(), "Jail Engine DEMO");
|
||||
text->disableZoom();
|
||||
text->writeCentered(options->gameWidth / 2, text->getCharacterSize() * 6, "Pulsa 'N' para mostrar una notificacion");
|
||||
|
||||
// Dibuja el sprite
|
||||
sprite->render();
|
||||
|
||||
// Vuelca el buffer en pantalla
|
||||
//SDL_RenderPresent(renderer);
|
||||
screen->blit();
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,3 +203,15 @@ void Sprite::setRect(SDL_Rect rect)
|
||||
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;
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -267,3 +270,23 @@ 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);
|
||||
}
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user