From c5acab7828d6f3b4b9796f416ceb765c49c192d7 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Mon, 8 Aug 2022 19:25:03 +0200 Subject: [PATCH] =?UTF-8?q?Actualizada=20la=20librer=C3=ADa=20sprite.h?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- media/font/8bithud.png | Bin 0 -> 1094 bytes media/font/8bithud.txt | 194 +++++++++++++++++++++++++++++++++++++++++ source/const.h | 2 +- source/director.cpp | 2 +- source/map.cpp | 3 +- source/sprite.cpp | 89 +++++++++++-------- source/sprite.h | 45 ++++++---- 7 files changed, 280 insertions(+), 55 deletions(-) create mode 100644 media/font/8bithud.png create mode 100644 media/font/8bithud.txt diff --git a/media/font/8bithud.png b/media/font/8bithud.png new file mode 100644 index 0000000000000000000000000000000000000000..2ac5e4c8d74520242b2fb7a2bcf709bd8fc9a0e7 GIT binary patch literal 1094 zcmV-M1iAZ(P)Px(07*naRCt{2o7t9PF$hJ~<^TWk?H5xE5jcmCsMlscl|l#^7*f@Jxd4s_NXPow zvfhpT_qdRiy5p+oojAhM0dTk`RJWapbNLHU3$m*>sV z8)eDlcgJxYTF3hA9fUjpZOij%CFp`j-@k+M0Y`_+vMPctdpi$T+qdRIrHPS!bB1_w zFmhIYZ>3o&i!MZVBbd#LbgB_tJv=lXMsU>ul%lIxDLUgXss(-(ua zvAff1^8voP&YYN+#zaStx9O3d*YH^5SvmS#wZB{LWhEr9a%UBz1x1mEE)092SpTx} z?1i3{SDC#C_sZZw)Yvc!UZIn{IN7yk=V#|({D{uS%bWu`f~!OeiBkHi3{Z_QZ~Tf3 zG`fFJX3gWxuet560slLwc|;e2dB#O^&=Fj%E#A#vZMUkI9lxUHGHHAqqSo!eY?@z& z3h&j84SFXt_M;TP@*U33uk|zbCEA|#+49Y^cSj1=1bP9?FCn}QKytPT%-BccCDkT0 zyN-yc+xECe1zbDCbc4fQ_W9slhE*W@)%jO6Tgd*5U-!!;?$YE0Ll-$>eV<9ovx|wC zjbM$p4{RXJ;sp-kCLM|fUmq}zWE?mftJjyg4C9b9_F)ayj_f)>FGb4iBK4yZfKsrh zW8uxuqQ`kn8EcO%fkVFJu(F+E(=>~?>eR+Ob-cHj*0W?P?z?CRwoQoEMQur?PGbx&vIiRfX)zY%;e>TYU zI8$So#=^o%&9n1+{*TYm#q(;c_GvaqPzgF?=4zS-g1SzoGp%&4om%z+n=Di_Dh-6R zftnZTk0-O_NC%C#)*g+|`lxHPSHnHq);v-N{ylg%nF};NGtG`SKJtUHkH#bav&j9~ z{!H>5uzsGk;ek?lbtBpNcOB%eQbqs4e-_X2>^$fRg(9%ZYy@kV43zN;trte{S(+d( zg5>3u-?8JhJkqhS=FcFYa zH?6qa;aRNc(#&KKFLGBQQ!NT2YyWi$&d&exPj);bhafviL}mlf_?b=6>#EEjMVV*Y z^8cGMNYgY;vkkLmbq)AYb~I7VXL +4 +# 63 ? +6 +# 64 @ +8 +# 65 A +6 +# 66 B +6 +# 67 C +6 +# 68 D +6 +# 69 E +6 +# 70 F +6 +# 71 G +6 +# 72 H +6 +# 73 I +6 +# 74 J +6 +# 75 K +6 +# 76 L +6 +# 77 M +6 +# 78 N +6 +# 79 O +6 +# 80 P +6 +# 81 Q +6 +# 82 R +6 +# 83 S +6 +# 84 T +6 +# 85 U +6 +# 86 V +5 +# 87 W +6 +# 88 X +6 +# 89 Y +6 +# 90 Z +6 +# 91 [ +3 +# 92 \ +5 +# 93 ] +3 +# 94 ^ +4 +# 95 _ +6 +# 96 ` +2 +# 97 a +5 +# 98 b +5 +# 99 c +5 +# 100 d +5 +# 101 e +5 +# 102 f +5 +# 103 g +5 +# 104 h +5 +# 105 i +4 +# 106 j +5 +# 107 k +5 +# 108 l +5 +# 109 m +6 +# 110 n +5 +# 111 o +5 +# 112 p +5 +# 113 q +5 +# 114 r +5 +# 115 s +5 +# 116 t +4 +# 117 u +5 +# 118 v +5 +# 119 w +6 +# 120 x +4 +# 121 y +4 +# 122 z +5 +# 123 { +3 +# 124 | +2 +# 125 } +3 +# 126 ~ +3 \ No newline at end of file diff --git a/source/const.h b/source/const.h index bfa707c..ff8575b 100644 --- a/source/const.h +++ b/source/const.h @@ -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 diff --git a/source/director.cpp b/source/director.cpp index 44af72a..da12e19 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -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 diff --git a/source/map.cpp b/source/map.cpp index 4a2bccc..585d4fe 100644 --- a/source/map.cpp +++ b/source/map.cpp @@ -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}; diff --git a/source/sprite.cpp b/source/sprite.cpp index 6497ba6..8a31493 100644 --- a/source/sprite.cpp +++ b/source/sprite.cpp @@ -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; } \ No newline at end of file diff --git a/source/sprite.h b/source/sprite.h index 7ae46f7..b2b1fe4 100644 --- a/source/sprite.h +++ b/source/sprite.h @@ -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