Files

23 lines
736 B
C++

#pragma once
#include "game/entities/entity.hpp"
// Entitat amb estat observable i/o mètode d'interacció explícita. Exemples:
// `Sarcophagus` (estat CLOSED/OPENING/OPEN), `Door` (estat igual). Les
// classes filles implementen `interact(Player&)` si responen a una acció
// directa; altres canvien d'estat per observació del món (Sarcòfag:
// perímetre visitat).
class Interactable : public Entity {
public:
using Entity::Entity;
Interactable() {
collides_ = true;
interactable_ = true;
}
// Crida explícita d'interacció: per defecte no-op. Les subclasses que
// tinguin un botó "accionar" (Door oberta, p.ex.) ho sobreescriuen.
virtual void interact(Player* /*player*/) {}
};