diff --git a/source/instructions.cpp b/source/instructions.cpp index ce4c869..e59d0dd 100644 --- a/source/instructions.cpp +++ b/source/instructions.cpp @@ -16,7 +16,7 @@ Instructions::Instructions(SDL_Renderer *renderer, Screen *screen, Asset *asset, // Creao objetos eventHandler = new SDL_Event(); text = new Text(asset->get("smb2.png"), asset->get("smb2.txt"), renderer); - tiledbg = new Tiledbg(renderer, screen, asset, {0, 0, param->gameWidth, param->gameHeight}); + tiledbg = new Tiledbg(renderer, screen, asset, {0, 0, param->gameWidth, param->gameHeight}, TILED_MODE_STATIC); // Crea un backbuffer para el renderizador backbuffer = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, param->gameWidth, param->gameHeight); diff --git a/source/tiledbg.cpp b/source/tiledbg.cpp index 5f3460f..cf32853 100644 --- a/source/tiledbg.cpp +++ b/source/tiledbg.cpp @@ -1,13 +1,14 @@ #include "tiledbg.h" // Constructor -Tiledbg::Tiledbg(SDL_Renderer *renderer, Screen *screen, Asset *asset, SDL_Rect pos) +Tiledbg::Tiledbg(SDL_Renderer *renderer, Screen *screen, Asset *asset, SDL_Rect pos, int mode) { // Copia los punteros this->renderer = renderer; this->screen = screen; this->asset = asset; this->pos = pos; + this->mode = mode; // Crea la textura para el mosaico de fondo canvas = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, pos.w * 2, pos.h * 2); @@ -26,7 +27,10 @@ Tiledbg::~Tiledbg() void Tiledbg::init() { counter = 0; - mode = rand() % 2; + if (mode == TILED_MODE_RANDOM) + { + mode = rand() % 2; + } tileWidth = 64; tileHeight = 64; @@ -90,12 +94,12 @@ void Tiledbg::render() // Actualiza la lógica de la clase void Tiledbg::update() { - if (mode == 0) + if (mode == TILED_MODE_DIAGONAL) { // El tileado de fondo se desplaza en diagonal ++window.x %= tileWidth; ++window.y %= tileHeight; } - else + else if (mode == TILED_MODE_CIRCLE) { // El tileado de fondo se desplaza en circulo ++counter %= 360; window.x = 128 + (int(sin[(counter + 270) % 360] * 128)); diff --git a/source/tiledbg.h b/source/tiledbg.h index 7ac5da3..c6f41ae 100644 --- a/source/tiledbg.h +++ b/source/tiledbg.h @@ -9,6 +9,11 @@ #ifndef TILEDBG_H #define TILEDBG_H +#define TILED_MODE_CIRCLE 0 +#define TILED_MODE_DIAGONAL 1 +#define TILED_MODE_RANDOM 2 +#define TILED_MODE_STATIC 3 + // Clase Tiledbg class Tiledbg { @@ -23,7 +28,7 @@ private: // Variables SDL_Rect pos; // Posición y tamaña del mosaico int counter; // Contador - Uint8 mode; // Tipo de movimiento del mosaico + int mode; // Tipo de movimiento del mosaico float sin[360]; // Vector con los valores del seno precalculados int tileWidth; // Ancho del tile int tileHeight; // Alto del tile @@ -36,7 +41,7 @@ private: public: // Constructor - Tiledbg(SDL_Renderer *renderer, Screen *screen, Asset *asset, SDL_Rect pos); + Tiledbg(SDL_Renderer *renderer, Screen *screen, Asset *asset, SDL_Rect pos, int mode); // Destructor ~Tiledbg(); diff --git a/source/title.cpp b/source/title.cpp index 6544a31..944c06f 100644 --- a/source/title.cpp +++ b/source/title.cpp @@ -31,7 +31,7 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Input *input, Asset *asset, background->setGradientNumber(1); background->setTransition(0.8f); - tiledbg = new Tiledbg(renderer, screen, asset, {0, 0, param->gameWidth, param->gameHeight}); + tiledbg = new Tiledbg(renderer, screen, asset, {0, 0, param->gameWidth, param->gameHeight}, TILED_MODE_RANDOM); gameLogo = new GameLogo(renderer, screen, asset, param, GAMECANVAS_CENTER_X, GAMECANVAS_FIRST_QUARTER_Y + 20); gameLogo->enable();