Actualizada la librería sprite.h

This commit is contained in:
2022-08-08 19:25:03 +02:00
parent a180f1db46
commit c5acab7828
7 changed files with 280 additions and 55 deletions

View File

@@ -6,7 +6,7 @@
#define CONST_H
// Textos
#define WINDOW_CAPTION "Volcano (@2016,2021 JailDesigner v0.5)"
#define WINDOW_CAPTION "Volcano (©2016,2022 JailDesigner v0.6)"
const Uint8 GAME_SPEED = 24; //16 = normal-rapido, 24 = normal. Cuanto mas pequeño, más rápido

View File

@@ -212,7 +212,7 @@ bool Director::initSDL()
void Director::initObjects()
{
eventHandler = new SDL_Event();
text.white = new Text();
text.white = new Text("",nullptr,nullptr);
}
// Borra los objetos del programa

View File

@@ -31,7 +31,8 @@ void Map::init(SDL_Renderer *renderer, LTexture *texture1, LTexture *texture2, L
sprite_actor->init(texture2, renderer);
background = new Sprite();
background->init(texture3, renderer);
background->setTexture(texture3);
background->setRenderer(renderer);
background->setSpriteClip(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
src_rect = {0, 0, 0, 0};

View File

@@ -1,20 +1,7 @@
#include "sprite.h"
// Constructor
Sprite::Sprite()
{
init(nullptr, nullptr);
}
// Destructor
Sprite::~Sprite()
{
mTexture = nullptr;
mRenderer = nullptr;
}
// Inicializador
/*void Sprite::init(LTexture *texture, SDL_Renderer *renderer, int x, int y, Uint16 w, Uint16 h)
Sprite::Sprite(int x, int y, int w, int h, LTexture *texture, SDL_Renderer *renderer)
{
// Establece el alto y el ancho del sprite
setWidth(w);
@@ -31,19 +18,21 @@ Sprite::~Sprite()
setTexture(texture);
// Establece el rectangulo de donde coger la imagen
setSpriteClip(0, 0, w, h);
}*/
setSpriteClip(x, y, w, h);
// Inicializador
void Sprite::init(LTexture *texture, SDL_Renderer *renderer, SDL_Rect rect)
// Inicializa variables
setEnabled(true);
}
Sprite::Sprite(SDL_Rect rect, LTexture *texture, SDL_Renderer *renderer)
{
// Establece el alto y el ancho del sprite
mWidth = rect.w;
mHeight = rect.h;
setWidth(rect.w);
setHeight(rect.h);
// Establece la posición X,Y del sprite
mPosX = rect.x;
mPosY = rect.y;
setPosX(rect.x);
setPosY(rect.y);
// Establece el puntero al renderizador de la ventana
setRenderer(renderer);
@@ -53,12 +42,25 @@ void Sprite::init(LTexture *texture, SDL_Renderer *renderer, SDL_Rect rect)
// Establece el rectangulo de donde coger la imagen
setSpriteClip(rect);
// Inicializa variables
setEnabled(true);
}
// Destructor
Sprite::~Sprite()
{
mTexture = nullptr;
mRenderer = nullptr;
}
// Muestra el sprite por pantalla
void Sprite::render()
{
mTexture->render(mRenderer, mPosX, mPosY, &mSpriteClip);
if (mEnabled)
{
mTexture->render(mRenderer, mPosX, mPosY, &mSpriteClip);
}
}
// Obten el valor de la variable
@@ -74,13 +76,13 @@ int Sprite::getPosY()
}
// Obten el valor de la variable
Uint16 Sprite::getWidth()
int Sprite::getWidth()
{
return mWidth;
}
// Obten el valor de la variable
Uint16 Sprite::getHeight()
int Sprite::getHeight()
{
return mHeight;
}
@@ -98,13 +100,13 @@ void Sprite::setPosY(int y)
}
// Establece el valor de la variable
void Sprite::setWidth(Uint16 w)
void Sprite::setWidth(int w)
{
mWidth = w;
}
// Establece el valor de la variable
void Sprite::setHeight(Uint16 h)
void Sprite::setHeight(int h)
{
mHeight = h;
}
@@ -116,7 +118,13 @@ SDL_Rect Sprite::getSpriteClip()
}
// Establece el valor de la variable
void Sprite::setSpriteClip(int x, int y, Uint16 w, Uint16 h)
void Sprite::setSpriteClip(SDL_Rect rect)
{
mSpriteClip = rect;
}
// Establece el valor de la variable
void Sprite::setSpriteClip(int x, int y, int w, int h)
{
mSpriteClip.x = x;
mSpriteClip.y = y;
@@ -124,12 +132,6 @@ void Sprite::setSpriteClip(int x, int y, Uint16 w, Uint16 h)
mSpriteClip.h = h;
}
// Establece el valor de la variable
void Sprite::setSpriteClip(SDL_Rect rect)
{
mSpriteClip = rect;
}
// Obten el valor de la variable
LTexture *Sprite::getTexture()
{
@@ -146,4 +148,23 @@ void Sprite::setTexture(LTexture *texture)
void Sprite::setRenderer(SDL_Renderer *renderer)
{
mRenderer = renderer;
}
// Establece el valor de la variable
void Sprite::setEnabled(bool value)
{
mEnabled = value;
}
// Comprueba si el objeto está habilitado
bool Sprite::isEnabled()
{
return mEnabled;
}
// Devuelve el rectangulo donde está el sprite
SDL_Rect Sprite::getRect()
{
SDL_Rect rect = {getPosX(), getPosY(), getWidth(), getHeight()};
return rect;
}

View File

@@ -8,17 +8,26 @@
// Clase sprite
class Sprite
{
protected:
int mPosX; // Posición en el eje X donde dibujar el sprite
int mPosY; // Posición en el eje Y donde dibujar el sprite
Uint16 mWidth; // Ancho del sprite
Uint16 mHeight; // Alto del sprite
SDL_Renderer *mRenderer; // Puntero al renderizador de la ventana
LTexture *mTexture; // Textura donde estan todos los dibujos del sprite
SDL_Rect mSpriteClip; // Rectangulo de origen de la textura que se dibujará en pantalla
bool mEnabled; // Indica si el sprite esta habilitado
public:
// Constructor
Sprite();
Sprite(int x = 0, int y = 0, int w = 0, int h = 0, LTexture *texture = nullptr, SDL_Renderer *renderer = nullptr);
Sprite(SDL_Rect rect, LTexture *texture, SDL_Renderer *renderer);
// Destructor
~Sprite();
// Inicializador
//void init(LTexture *texture, SDL_Renderer *renderer, int x = 0, int y = 0, Uint16 w = 0, Uint16 h = 0);
void init(LTexture *texture, SDL_Renderer *renderer, SDL_Rect rect = {0, 0, 0, 0});
// Muestra el sprite por pantalla
void render();
@@ -29,10 +38,10 @@ public:
int getPosY();
// Obten el valor de la variable
Uint16 getWidth();
int getWidth();
// Obten el valor de la variable
Uint16 getHeight();
int getHeight();
// Establece el valor de la variable
void setPosX(int x);
@@ -41,18 +50,20 @@ public:
void setPosY(int y);
// Establece el valor de la variable
void setWidth(Uint16 w);
void setWidth(int w);
// Establece el valor de la variable
void setHeight(Uint16 h);
void setHeight(int h);
// Obten el valor de la variable
SDL_Rect getSpriteClip();
// Establece el valor de la variable
void setSpriteClip(int x, int y, Uint16 w, Uint16 h);
void setSpriteClip(SDL_Rect rect);
// Establece el valor de la variable
void setSpriteClip(int x, int y, int w, int h);
// Obten el valor de la variable
LTexture *getTexture();
@@ -62,16 +73,14 @@ public:
// Establece el valor de la variable
void setRenderer(SDL_Renderer *renderer);
protected:
int mPosX; // Posición X donde dibujar el sprite
int mPosY; // Posición Y donde dibujar el sprite
// Establece el valor de la variable
void setEnabled(bool value);
Uint16 mWidth; // Ancho del sprite
Uint16 mHeight; // Alto del sprite
// Comprueba si el objeto está habilitado
bool isEnabled();
SDL_Renderer *mRenderer; // Puntero al renderizador
LTexture *mTexture; // Textura donde estan todos los dibujos del sprite
SDL_Rect mSpriteClip; // Rectangulo que apunta a la posición de la textura donde está el grafico que se dibujará en pantalla
// Devuelve el rectangulo donde está el sprite
SDL_Rect getRect();
};
#endif