#include "entity.hpp" void Entity::move(Point loc) { location = loc; } void Entity::event(EntityEvent ev) { switch($state) { FSM_STATE(EntityState, START, ev); FSM_STATE(EntityState, HUNTING, ev); FSM_STATE(EntityState, DEAD, ev); } } void Entity::START(EntityEvent ev) { state(EntityState::HUNTING); } void Entity::HUNTING(EntityEvent ev) { switch(ev) { case EntityEvent::HIT: hp -= damage; break; default: state(EntityState::HUNTING); } if(hp <= 0) { state(EntityState::DEAD); } else { state(EntityState::HUNTING); } } void Entity::DEAD(EntityEvent ev) { state(EntityState::DEAD); }