Los items ya brillan a distinto ritmo

This commit is contained in:
2022-08-30 21:44:07 +02:00
parent 38c41193ec
commit 93febf3127
6 changed files with 88 additions and 37 deletions

View File

@@ -47,6 +47,7 @@ tileset=items.png
tile=0 tile=0
x=1 x=1
y=7 y=7
counter=6
[/item] [/item]
[item] [item]
@@ -54,4 +55,47 @@ tileset=items.png
tile=0 tile=0
x=17 x=17
y=8 y=8
counter=7
[/item]
[item]
tileset=items.png
tile=0
x=12
y=12
counter=1
[/item]
[item]
tileset=items.png
tile=0
x=13
y=12
counter=2
[/item]
[item]
tileset=items.png
tile=0
x=14
y=12
counter=3
[/item]
[item]
tileset=items.png
tile=0
x=15
y=12
counter=4
[/item]
[item]
tileset=items.png
tile=0
x=16
y=12
counter=5
[/item] [/item]

View File

@@ -182,22 +182,23 @@ void Game::renderDebugInfo()
// Pinta el texto // Pinta el texto
std::string text; std::string text;
int line = (16 * 8) + 3; const int inc = debugText->getCharacterWidth() + 1;
int line = 131;
text = "status: " + std::to_string(player->status); text = "status: " + std::to_string(player->status);
debugText->write(0, line += 6, text); debugText->write(0, line += inc, text);
text = "foot: " + std::to_string((int)player->getLeftFoot().y); text = "foot: " + std::to_string((int)player->getLeftFoot().y);
debugText->write(0, line += 6, text); debugText->write(0, line += inc, text);
const int a = (player->lastPosition.y + 16) / 8; const int a = (player->lastPosition.y + 16) / 8;
const int b = player->getLeftFoot().y / 8; const int b = player->getLeftFoot().y / 8;
text = "tile: " + std::to_string(a) + " - " + std::to_string(b); text = "tile: " + std::to_string(a) + " - " + std::to_string(b);
debugText->write(0, line += 6, text); debugText->write(0, line += inc, text);
const bool collision = checkPlayerAndEnemies(); const bool collision = checkPlayerAndEnemies();
text = "collision: " + std::to_string(collision); text = "collision: " + std::to_string(collision);
debugText->write(0, line += 6, text); debugText->write(0, line += inc, text);
} }
// Cambia de habitación // Cambia de habitación

View File

@@ -19,6 +19,8 @@ Item::Item(item_t item)
// Inicia variables // Inicia variables
sprite->setSpriteClip(item.tile * 8, 0, 8, 8); sprite->setSpriteClip(item.tile * 8, 0, 8, 8);
collider = sprite->getRect(); collider = sprite->getRect();
colorChangeSpeed = 4;
counter = item.counter * colorChangeSpeed;
// Inicializa los colores // Inicializa los colores
color_t c = stringToColor("blue"); color_t c = stringToColor("blue");
@@ -54,7 +56,7 @@ Item::~Item()
// Pinta el objeto en pantalla // Pinta el objeto en pantalla
void Item::render() void Item::render()
{ {
const int index = (counter / 2) % color.size(); const int index = (counter / colorChangeSpeed) % color.size();
sprite->getTexture()->setColor(color[index].r, color[index].g, color[index].b); sprite->getTexture()->setColor(color[index].r, color[index].g, color[index].b);
sprite->render(); sprite->render();
sprite->getTexture()->setColor(255, 255, 255); sprite->getTexture()->setColor(255, 255, 255);

View File

@@ -22,23 +22,21 @@ struct item_t
int x; // Posicion del item en pantalla int x; // Posicion del item en pantalla
int y; // Posicion del item en pantalla int y; // Posicion del item en pantalla
int tile; // Numero de tile dentro de la textura int tile; // Numero de tile dentro de la textura
int counter; // Contador inicial. Es el que lo hace cambiar de color
}; };
// Clase Item // Clase Item
class Item class Item
{ {
private: private:
LTexture *texture; // Textura con los graficos del objeto LTexture *texture; // Textura con los graficos del objeto
Sprite *sprite; // Sprite del objeto Sprite *sprite; // Sprite del objeto
SDL_Renderer *renderer; // El renderizador de la ventana SDL_Renderer *renderer; // El renderizador de la ventana
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
std::vector<color_t> color; // Vector con los colores del objeto std::vector<color_t> color; // Vector con los colores del objeto
int counter; // Contador interno int counter; // Contador interno
SDL_Rect collider; // Rectangulo de colisión SDL_Rect collider; // Rectangulo de colisión
int colorChangeSpeed; // Cuanto mas alto, mas tarda en cambiar de color
// Comprueba si ha llegado al limite del recorrido para darse media vuelta
void checkPath();
public: public:
// Constructor // Constructor

View File

@@ -149,6 +149,7 @@ bool Room::load(std::string _file_path)
item_t item; item_t item;
item.asset = asset; item.asset = asset;
item.renderer = renderer; item.renderer = renderer;
item.counter = 0;
do do
{ {
@@ -349,6 +350,11 @@ bool Room::setItem(item_t *item, std::string var, std::string value)
item->tileset = value; item->tileset = value;
} }
if (var == "counter")
{
item->counter = std::stoi(value);
}
else if (var == "x") else if (var == "x")
{ {
item->x = std::stof(value) * BLOCK; item->x = std::stof(value) * BLOCK;

12
todo.md
View File

@@ -11,14 +11,14 @@
(A) Crear tiles que deslicen, (no tipo hielo sino cinta) (A) Crear tiles que deslicen, (no tipo hielo sino cinta)
(A) Tiles animados (A) Tiles animados
(A) Crear ascensores (A) Crear ascensores
(A) Enemigos de diferente tamaño (A) Enemigos de diferente tamaño {cm:2022-08-30}
(A) Color de los items al estilo jet set willy de amstrad, que brillan con dos colores (A) Color de los items al estilo jet set willy de amstrad, que brillan con dos colores
(A) Temporizador de inicio de los items, para poder hacer que brillen a distinto ritmo. Esto es incompatible con lo anterior (A) Temporizador de inicio de los items, para poder hacer que brillen a distinto ritmo. Esto es incompatible con lo anterior {cm:2022-08-30}
(A) Poner la info de debug con la tipografia adecuada (A) Poner la info de debug con la tipografia adecuada {cm:2022-08-30}
(A) El modo debug debe pintar la rejilla (A) El modo debug debe pintar la rejilla {cm:2022-08-30}
(A) Tecla F para pasar a pantalla completa (A) Tecla F para pasar a pantalla completa {cm:2022-08-30}
(A) Tecla + y - para cambiar tamaño de ventana. O control F1 a F4 (A) Tecla + y - para cambiar tamaño de ventana. O control F1 a F4 {cm:2022-08-30}
## TEMAS ## TEMAS