ahora se puede elegir el modo de la clase tiledbg

añadido modo estático a la clase tiledbg
This commit is contained in:
2024-07-05 22:44:54 +02:00
parent f73eab7a77
commit ebfa2433de
4 changed files with 17 additions and 8 deletions

View File

@@ -16,7 +16,7 @@ Instructions::Instructions(SDL_Renderer *renderer, Screen *screen, Asset *asset,
// Creao objetos // Creao objetos
eventHandler = new SDL_Event(); eventHandler = new SDL_Event();
text = new Text(asset->get("smb2.png"), asset->get("smb2.txt"), renderer); 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 // Crea un backbuffer para el renderizador
backbuffer = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, param->gameWidth, param->gameHeight); backbuffer = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, param->gameWidth, param->gameHeight);

View File

@@ -1,13 +1,14 @@
#include "tiledbg.h" #include "tiledbg.h"
// Constructor // 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 // Copia los punteros
this->renderer = renderer; this->renderer = renderer;
this->screen = screen; this->screen = screen;
this->asset = asset; this->asset = asset;
this->pos = pos; this->pos = pos;
this->mode = mode;
// Crea la textura para el mosaico de fondo // Crea la textura para el mosaico de fondo
canvas = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, pos.w * 2, pos.h * 2); 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() void Tiledbg::init()
{ {
counter = 0; counter = 0;
mode = rand() % 2; if (mode == TILED_MODE_RANDOM)
{
mode = rand() % 2;
}
tileWidth = 64; tileWidth = 64;
tileHeight = 64; tileHeight = 64;
@@ -90,12 +94,12 @@ void Tiledbg::render()
// Actualiza la lógica de la clase // Actualiza la lógica de la clase
void Tiledbg::update() void Tiledbg::update()
{ {
if (mode == 0) if (mode == TILED_MODE_DIAGONAL)
{ // El tileado de fondo se desplaza en diagonal { // El tileado de fondo se desplaza en diagonal
++window.x %= tileWidth; ++window.x %= tileWidth;
++window.y %= tileHeight; ++window.y %= tileHeight;
} }
else else if (mode == TILED_MODE_CIRCLE)
{ // El tileado de fondo se desplaza en circulo { // El tileado de fondo se desplaza en circulo
++counter %= 360; ++counter %= 360;
window.x = 128 + (int(sin[(counter + 270) % 360] * 128)); window.x = 128 + (int(sin[(counter + 270) % 360] * 128));

View File

@@ -9,6 +9,11 @@
#ifndef TILEDBG_H #ifndef TILEDBG_H
#define 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 // Clase Tiledbg
class Tiledbg class Tiledbg
{ {
@@ -23,7 +28,7 @@ private:
// Variables // Variables
SDL_Rect pos; // Posición y tamaña del mosaico SDL_Rect pos; // Posición y tamaña del mosaico
int counter; // Contador 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 float sin[360]; // Vector con los valores del seno precalculados
int tileWidth; // Ancho del tile int tileWidth; // Ancho del tile
int tileHeight; // Alto del tile int tileHeight; // Alto del tile
@@ -36,7 +41,7 @@ private:
public: public:
// Constructor // 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 // Destructor
~Tiledbg(); ~Tiledbg();

View File

@@ -31,7 +31,7 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Input *input, Asset *asset,
background->setGradientNumber(1); background->setGradientNumber(1);
background->setTransition(0.8f); 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 = new GameLogo(renderer, screen, asset, param, GAMECANVAS_CENTER_X, GAMECANVAS_FIRST_QUARTER_Y + 20);
gameLogo->enable(); gameLogo->enable();