#pragma once #include // Para SDL_Rect, SDL_Point #include // Para Uint8 #include // Para shared_ptr #include // Para string #include // Para vector class SSprite; struct ItemData { std::string tile_set_file; // 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 Uint8 color1; // Uno de los dos colores que se utiliza para el item Uint8 color2; // Uno de los dos colores que se utiliza para el item // Constructor ItemData() : x(0), y(0), tile(0), counter(0), color1(), color2() {} }; class Item { private: // Constantes static constexpr int ITEM_SIZE_ = 8; // Objetos y punteros std::shared_ptr sprite_; // SSprite del objeto // Variables std::vector color_; // Vector con los colores del objeto int counter_; // Contador interno SDL_Rect collider_; // Rectangulo de colisión int change_color_speed; // Cuanto mas alto, mas tarda en cambiar de color public: // Constructor explicit Item(ItemData 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(); // Asigna los colores del objeto void setColors(Uint8 col1, Uint8 col2); };