forked from jaildesigner-jailgames/jaildoctors_dilemma
64 lines
1.8 KiB
C++
64 lines
1.8 KiB
C++
#pragma once
|
|
|
|
#include <SDL2/SDL_rect.h> // for SDL_Rect, SDL_Point
|
|
#include <memory> // for shared_ptr, __shared_ptr_access
|
|
#include <string> // for string
|
|
#include <vector> // for vector
|
|
#include "sprite.h" // for Sprite
|
|
#include "texture.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
|
|
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
|
|
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> sprite_; // Sprite del objeto
|
|
|
|
// Variables
|
|
std::vector<Color> 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();
|
|
|
|
// Recarga la textura
|
|
void reLoadTexture() { sprite_->getTexture()->reLoad(); }
|
|
|
|
// Asigna los colores del objeto
|
|
void setColors(Color col1, Color col2);
|
|
}; |