#pragma once #include // Para SDL_Rect, SDL_Point #include // Para SDL_Renderer #include // Para basic_string, string #include // Para vector #include "utils.h" // Para color_t #include // Para shared_ptr #include "sprite.h" #include "texture.h" class Texture; struct item_t { SDL_Renderer *renderer; // El renderizador de la ventana std::shared_ptr texture; // Textura con los gráficos del item std::string tileSetFile; // Ruta al fichero con los gráficos del item int x; // Posición del item en pantalla int y; // Posición del item en pantalla int tile; // Número de tile dentro de la textura int counter; // Contador inicial. Es el que lo hace cambiar de color Color color1; // Uno de los dos colores que se utiliza para el item Color color2; // Uno de los dos colores que se utiliza para el item // Constructor por defecto item_t() : renderer(nullptr), texture(nullptr), x(0), y(0), tile(0), counter(0), color1(), color2() {} }; class Item { private: // Objetos y punteros std::shared_ptr sprite; // Sprite del objeto // Variables std::vector color; // Vector con los colores del objeto int counter; // Contador interno SDL_Rect collider; // Rectangulo de colisión int colorChangeSpeed; // Cuanto mas alto, mas tarda en cambiar de color public: // Constructor Item(item_t item); // Destructor ~Item() = default; // Pinta el objeto en pantalla void render(); // Actualiza las variables del objeto void update() { counter++; } // Obtiene el rectangulo de colision del objeto SDL_Rect &getCollider() { return collider; } // Obtiene su ubicación SDL_Point getPos(); // Recarga la textura void reLoadTexture() { sprite->getTexture()->reLoad(); } // Asigna los colores del objeto void setColors(Color col1, Color col2); };