#pragma once #include // for SDL_Rect, SDL_Point #include // for shared_ptr, __shared_ptr_access #include // for string #include // for vector #include "s_sprite.h" // for SSprite #include "surface.h" // for Texture #include "utils.h" // for Color 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); };