From ae841a45ee7bbd59c318383c9ce7233802f696a4 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Tue, 12 Jul 2022 17:32:12 +0200 Subject: [PATCH] Retocadas las clases Sprite e hijas --- source/animatedsprite.cpp | 10 +++++++ source/animatedsprite.h | 6 +--- source/movingsprite.cpp | 48 ++++++++++++++++++++++++++++++++ source/movingsprite.h | 38 +------------------------ source/sprite.cpp | 58 ++++++++++++++++++++------------------- source/sprite.h | 2 +- 6 files changed, 91 insertions(+), 71 deletions(-) diff --git a/source/animatedsprite.cpp b/source/animatedsprite.cpp index c885fe0..3ad7cf0 100644 --- a/source/animatedsprite.cpp +++ b/source/animatedsprite.cpp @@ -1,6 +1,16 @@ #include "const.h" #include "animatedsprite.h" +// Constructor +AnimatedSprite::AnimatedSprite(LTexture *texture, SDL_Renderer *renderer) +{ + // Copia los punteros + setTexture(texture); + setRenderer(renderer); + + init(); +} + // Destructor AnimatedSprite::~AnimatedSprite() { diff --git a/source/animatedsprite.h b/source/animatedsprite.h index 47611db..664bc1b 100644 --- a/source/animatedsprite.h +++ b/source/animatedsprite.h @@ -27,11 +27,7 @@ private: public: // Constructor - AnimatedSprite(LTexture *texture, SDL_Renderer *renderer) - : MovingSprite(0, 0, 0, 0, 0, 0, 0, 0, texture, renderer) - { - - }; + AnimatedSprite(LTexture *texture = nullptr, SDL_Renderer *renderer = nullptr); // Destructor ~AnimatedSprite(); diff --git a/source/movingsprite.cpp b/source/movingsprite.cpp index 2b04ccc..1fb9c79 100644 --- a/source/movingsprite.cpp +++ b/source/movingsprite.cpp @@ -1,6 +1,54 @@ #include "const.h" #include "movingsprite.h" +// Constructor +MovingSprite::MovingSprite(float x, float y, int w, int h, float velx, float vely, float accelx, float accely, LTexture *texture, SDL_Renderer *renderer) +{ + // Copia los punteros + setTexture(texture); + setRenderer(renderer); + + // Establece el alto y el ancho del sprite + setWidth(w); + setHeight(h); + + // Establece la posición X,Y del sprite + setPosX(x); + setPosY(y); + + // Establece la velocidad X,Y del sprite + setVelX(velx); + setVelY(vely); + + // Establece la aceleración X,Y del sprite + setAccelX(accelx); + setAccelY(accely); + + // Establece el zoom W,H del sprite + setZoomW(1); + setZoomH(1); + + // Establece el angulo con el que se dibujará + setAngle(0.0); + + // Establece los valores de rotacion + setRotate(false); + setRotateSpeed(0); + setRotateAmount(0.0); + + // Contador interno + mCounter = 0; + + // Establece el rectangulo de donde coger la imagen + setSpriteClip(0, 0, w, h); + + // Establece el centro de rotación + mCenter = {0,0}; + + // Establece el tipo de volteado + mFlip = SDL_FLIP_NONE; +}; + // Destructor MovingSprite::~MovingSprite() { diff --git a/source/movingsprite.h b/source/movingsprite.h index 06ceb8d..ab05832 100644 --- a/source/movingsprite.h +++ b/source/movingsprite.h @@ -31,43 +31,7 @@ protected: public: // Constructor - MovingSprite(float x, float y, int w, int h, float velx, float vely, float accelx, float accely, LTexture *texture, SDL_Renderer *renderer) - : Sprite((int)x, (int)y, w, h, texture, renderer) - { - // Establece el alto y el ancho del sprite - setWidth(w); - setHeight(h); - - // Establece la posición X,Y del sprite - setPosX(x); - setPosY(y); - - // Establece la velocidad X,Y del sprite - setVelX(velx); - setVelY(vely); - - // Establece la aceleración X,Y del sprite - setAccelX(accelx); - setAccelY(accely); - - // Establece el zoom W,H del sprite - setZoomW(1); - setZoomH(1); - - // Establece el angulo con el que se dibujará - setAngle(0.0); - - // Establece los valores de rotacion - setRotate(false); - setRotateSpeed(0); - setRotateAmount(0.0); - - // Contador interno - mCounter = 0; - - // Establece el rectangulo de donde coger la imagen - setSpriteClip(0, 0, w, h); - }; + MovingSprite(float x = 0, float y = 0, int w = 0, int h = 0, float velx = 0, float vely = 0, float accelx = 0, float accely = 0, LTexture *texture = nullptr, SDL_Renderer *renderer = nullptr); // Destructor ~MovingSprite(); diff --git a/source/sprite.cpp b/source/sprite.cpp index 74c1fbc..d8ba1b3 100644 --- a/source/sprite.cpp +++ b/source/sprite.cpp @@ -1,15 +1,38 @@ #include "sprite.h" // Constructor +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); + setHeight(h); + + // Establece la posición X,Y del sprite + setPosX(x); + setPosY(y); + + // Establece el puntero al renderizador de la ventana + setRenderer(renderer); + + // Establece la textura donde están los gráficos para el sprite + setTexture(texture); + + // Establece el rectangulo de donde coger la imagen + setSpriteClip(x, y, w, h); + + // 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); @@ -21,30 +44,7 @@ Sprite::Sprite(SDL_Rect rect, LTexture *texture, SDL_Renderer *renderer) setSpriteClip(rect); // Inicializa variables - mEnabled = true; -} - -Sprite::Sprite(int x, int y, int w, int h, LTexture *texture, SDL_Renderer *renderer) -{ - // Establece el alto y el ancho del sprite - mWidth = w; - mHeight = h; - - // Establece la posición X,Y del sprite - mPosX = x; - mPosY = y; - - // Establece el puntero al renderizador de la ventana - setRenderer(renderer); - - // Establece la textura donde están los gráficos para el sprite - setTexture(texture); - - // Establece el rectangulo de donde coger la imagen - setSpriteClip(x,y,w,h); - - // Inicializa variables - mEnabled = true; + setEnabled(true); } // Destructor @@ -58,7 +58,9 @@ Sprite::~Sprite() void Sprite::render() { if (mEnabled) + { mTexture->render(mRenderer, mPosX, mPosY, &mSpriteClip); + } } // Obten el valor de la variable diff --git a/source/sprite.h b/source/sprite.h index 9b2bd97..e89f10e 100644 --- a/source/sprite.h +++ b/source/sprite.h @@ -22,8 +22,8 @@ protected: public: // Constructor + 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); - Sprite(int x, int y, int w, int h, LTexture *texture, SDL_Renderer *renderer); // Destructor ~Sprite();