diff --git a/media/font/8bithud.png b/media/font/8bithud.png new file mode 100644 index 0000000..2ac5e4c Binary files /dev/null and b/media/font/8bithud.png differ diff --git a/media/font/8bithud.txt b/media/font/8bithud.txt new file mode 100644 index 0000000..48e961f --- /dev/null +++ b/media/font/8bithud.txt @@ -0,0 +1,194 @@ +# box width +8 +# box height +8 +# 32 espacio ( ) +2 +# 33 ! +2 +# 34 " +5 +# 35 # +6 +# 36 $ +6 +# 37 % +6 +# 38 & +6 +# 39 ' +2 +# 40 ( +3 +# 41 ) +3 +# 42 * +4 +# 43 + +3 +# 44 , +2 +# 45 - +3 +# 46 . +2 +# 47 / +4 +# 48 0 +6 +# 49 1 +6 +# 50 2 +6 +# 51 3 +6 +# 52 4 +6 +# 53 5 +6 +# 54 6 +6 +# 55 7 +6 +# 56 8 +6 +# 57 9 +6 +# 58 : +2 +# 59 ; +2 +# 60 < +4 +# 61 = +3 +# 62 > +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