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();
|
MovingSprite *sprite = new MovingSprite();
|
||||||
sprite->setRenderer(renderer);
|
sprite->setRenderer(renderer);
|
||||||
sprite->setTexture(texture);
|
sprite->setTexture(texture);
|
||||||
sprite->setPosX(0);
|
sprite->setPosX(140);
|
||||||
sprite->setPosY(0);
|
sprite->setPosY(100);
|
||||||
sprite->setWidth(16);
|
sprite->setWidth(16);
|
||||||
sprite->setHeight(32);
|
sprite->setHeight(32);
|
||||||
sprite->setSpriteClip({0, 0, 16, 32});
|
sprite->setSpriteClip({0, 0, 16, 32});
|
||||||
@@ -116,6 +116,9 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
switch (event->key.keysym.scancode)
|
switch (event->key.keysym.scancode)
|
||||||
{
|
{
|
||||||
|
case SDL_SCANCODE_N:
|
||||||
|
screen->showNotification("Ejemplo de", "notificacion", 1);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -168,7 +171,7 @@ int main(int argc, char *argv[])
|
|||||||
sprite->update();
|
sprite->update();
|
||||||
|
|
||||||
// Actualiza el degradado
|
// Actualiza el degradado
|
||||||
// if (counter % 4 == 0)
|
if (counter % 1 == 0)
|
||||||
{
|
{
|
||||||
gradBreathDirection == 0 ? gradCurrentColor-- : gradCurrentColor++;
|
gradBreathDirection == 0 ? gradCurrentColor-- : gradCurrentColor++;
|
||||||
if (gradCurrentColor == gradColorMin)
|
if (gradCurrentColor == gradColorMin)
|
||||||
@@ -183,10 +186,9 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Dibuja en pantalla
|
// Dibuja en pantalla
|
||||||
//SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0xFF);
|
|
||||||
//SDL_RenderClear(renderer);
|
|
||||||
screen->start();
|
screen->start();
|
||||||
screen->clean();
|
screen->clean();
|
||||||
|
|
||||||
// Dibuja un degradado de fondo
|
// Dibuja un degradado de fondo
|
||||||
const int gradFirstLine = options->gameHeight / 3;
|
const int gradFirstLine = options->gameHeight / 3;
|
||||||
const int gradLastLine = options->gameHeight;
|
const int gradLastLine = options->gameHeight;
|
||||||
@@ -200,12 +202,17 @@ int main(int argc, char *argv[])
|
|||||||
SDL_SetRenderDrawColor(renderer, color, 0x00, 0x00, 0xFF);
|
SDL_SetRenderDrawColor(renderer, color, 0x00, 0x00, 0xFF);
|
||||||
SDL_RenderDrawLine(renderer, 0, i, options->gameWidth, i);
|
SDL_RenderDrawLine(renderer, 0, i, options->gameWidth, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Escribe el texto
|
// Escribe el texto
|
||||||
|
text->setZoom(2);
|
||||||
text->writeCentered(options->gameWidth / 2, text->getCharacterSize(), "Jail Engine DEMO");
|
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
|
// Dibuja el sprite
|
||||||
sprite->render();
|
sprite->render();
|
||||||
|
|
||||||
// Vuelca el buffer en pantalla
|
// Vuelca el buffer en pantalla
|
||||||
//SDL_RenderPresent(renderer);
|
|
||||||
screen->blit();
|
screen->blit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -414,16 +414,16 @@ void Screen::showNotification(std::string text1, std::string text2, int icon)
|
|||||||
// Dibuja las notificaciones
|
// Dibuja las notificaciones
|
||||||
void Screen::renderNotifications()
|
void Screen::renderNotifications()
|
||||||
{
|
{
|
||||||
if (notifyAdded)
|
//if (notifyAdded)
|
||||||
{
|
{
|
||||||
if (!notifyActive)
|
if (!notifyActive)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_RenderSetLogicalSize(renderer, notificationLogicalWidth, notificationLogicalHeight);
|
//SDL_RenderSetLogicalSize(renderer, notificationLogicalWidth, notificationLogicalHeight);
|
||||||
notify->render();
|
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
|
// Inicializa variables
|
||||||
enabled = true;
|
enabled = true;
|
||||||
|
zoomW = 1.0f;
|
||||||
|
zoomH = 1.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
Sprite::Sprite(SDL_Rect rect, Texture *texture, SDL_Renderer *renderer)
|
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
|
// Inicializa variables
|
||||||
enabled = true;
|
enabled = true;
|
||||||
|
zoomW = 1.0f;
|
||||||
|
zoomH = 1.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Muestra el sprite por pantalla
|
// Muestra el sprite por pantalla
|
||||||
@@ -52,7 +56,7 @@ void Sprite::render()
|
|||||||
{
|
{
|
||||||
if (enabled)
|
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;
|
w = rect.w;
|
||||||
h = rect.h;
|
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
|
int h; // Alto del sprite
|
||||||
SDL_Rect spriteClip; // Rectangulo de origen de la textura que se dibujará en pantalla
|
SDL_Rect spriteClip; // Rectangulo de origen de la textura que se dibujará en pantalla
|
||||||
bool enabled; // Indica si el sprite esta habilitado
|
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:
|
public:
|
||||||
// Constructor
|
// Constructor
|
||||||
@@ -95,6 +97,12 @@ public:
|
|||||||
|
|
||||||
// Establece los valores de posición y tamaño del sprite
|
// Establece los valores de posición y tamaño del sprite
|
||||||
void setRect(SDL_Rect rect);
|
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
|
#endif
|
||||||
|
|||||||
@@ -98,6 +98,7 @@ Text::Text(string textFile, string bitmapFile, SDL_Renderer *renderer)
|
|||||||
|
|
||||||
// Inicializa variables
|
// Inicializa variables
|
||||||
fixedWidth = false;
|
fixedWidth = false;
|
||||||
|
zoom = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
@@ -121,6 +122,7 @@ Text::Text(string textFile, Texture *texture, SDL_Renderer *renderer)
|
|||||||
|
|
||||||
// Inicializa variables
|
// Inicializa variables
|
||||||
fixedWidth = false;
|
fixedWidth = false;
|
||||||
|
zoom = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
@@ -141,6 +143,7 @@ Text::Text(textFile_t *textFile, Texture *texture, SDL_Renderer *renderer)
|
|||||||
|
|
||||||
// Inicializa variables
|
// Inicializa variables
|
||||||
fixedWidth = false;
|
fixedWidth = false;
|
||||||
|
zoom = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
@@ -168,7 +171,7 @@ void Text::write(int x, int y, string text, int kerning, int lenght)
|
|||||||
sprite->setPosY(y);
|
sprite->setPosY(y);
|
||||||
sprite->render();
|
sprite->render();
|
||||||
// shift += (offset[int(text[i])].w + kerning);
|
// 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;
|
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);
|
||||||
|
}
|
||||||
@@ -37,6 +37,7 @@ private:
|
|||||||
Sprite *sprite; // Objeto para dibujar el texto
|
Sprite *sprite; // Objeto para dibujar el texto
|
||||||
|
|
||||||
// Variables
|
// Variables
|
||||||
|
int zoom; // Tamaño del texto
|
||||||
int boxWidth; // Anchura de la caja de cada caracter en el png
|
int boxWidth; // Anchura de la caja de cada caracter en el png
|
||||||
int boxHeight; // Altura 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
|
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
|
// Establece si se usa un tamaño fijo de letra
|
||||||
void setFixedWidth(bool value);
|
void setFixedWidth(bool value);
|
||||||
|
|
||||||
|
// Establece el tamaño del zoom
|
||||||
|
void setZoom(int value);
|
||||||
|
|
||||||
|
// Quita el zoom
|
||||||
|
void disableZoom();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user