#include "game/entities/concrete/wall_trap.hpp" #include #include "game/entities/entity_factory.hpp" #include "game/entities/event_bus.hpp" WallTrap::WallTrap(const fkyaml::node& yaml) { name_ = yaml.contains("name") ? yaml["name"].get_value() : std::string("wall_trap"); collides_ = false; interactable_ = false; if (yaml.contains("cycle")) { const auto& c = yaml["cycle"]; const float ACTIVE = c.contains("active_duration") ? c["active_duration"].get_value() : 0.5F; const float INACTIVE = c.contains("inactive_duration") ? c["inactive_duration"].get_value() : 1.5F; setCycle(ACTIVE, INACTIVE); } if (yaml.contains("stats") && yaml["stats"].contains("damage")) { setDamage(yaml["stats"]["damage"].get_value()); } } void WallTrap::onPlayerContact(Player* /*player*/) { if (!isActive()) { return; } if (bus_ != nullptr) { bus_->publish("player_hit", getDamage()); } } REGISTER_ENTITY("wall_trap", WallTrap)