treballant en sistema de portes i claus
This commit is contained in:
44
source/game/entities/key.hpp
Normal file
44
source/game/entities/key.hpp
Normal file
@@ -0,0 +1,44 @@
|
||||
#pragma once
|
||||
|
||||
#include <SDL3/SDL.h>
|
||||
|
||||
#include <memory> // Para shared_ptr
|
||||
#include <string> // Para string
|
||||
|
||||
class AnimatedSprite;
|
||||
|
||||
/**
|
||||
* @brief Llave coleccionable
|
||||
*
|
||||
* Entidad de 16x16 px con una animación "default". Al ser recogida por el
|
||||
* jugador, su identificador (id_) se añade al Inventory global y la llave
|
||||
* desaparece de la habitación. Una llave puede abrir todas las puertas con
|
||||
* el mismo id; no se consume al usarse.
|
||||
*/
|
||||
class Key {
|
||||
public:
|
||||
struct Data {
|
||||
std::string animation_path; // Ruta al fichero de animación (ej. "key1.yaml")
|
||||
std::string id; // Identificador que abre las puertas con el mismo id
|
||||
float x{0.0F}; // Posición X en píxeles
|
||||
float y{0.0F}; // Posición Y en píxeles
|
||||
};
|
||||
|
||||
explicit Key(const Data& data);
|
||||
~Key() = default;
|
||||
|
||||
void render(); // Pinta la llave en pantalla
|
||||
void update(float delta_time); // Avanza la animación
|
||||
|
||||
auto getCollider() -> SDL_FRect& { return collider_; } // Rectángulo de colisión
|
||||
[[nodiscard]] auto getPos() const -> SDL_FPoint; // Posición actual (para tracker)
|
||||
[[nodiscard]] auto getId() const -> const std::string& { return id_; } // Identificador de la llave
|
||||
|
||||
void setPaused(bool paused) { is_paused_ = paused; } // Pausa/despausa la animación
|
||||
|
||||
private:
|
||||
std::shared_ptr<AnimatedSprite> sprite_; // Sprite animado de la llave
|
||||
SDL_FRect collider_{}; // Rectángulo de colisión
|
||||
std::string id_; // Identificador
|
||||
bool is_paused_{false}; // Indica si la llave está pausada
|
||||
};
|
||||
Reference in New Issue
Block a user