23 lines
736 B
C++
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*/) {}
|
|
};
|