diff options
Diffstat (limited to 'src/player.cpp')
-rw-r--r-- | src/player.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/player.cpp b/src/player.cpp index 0a85459..3d959ea 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -97,6 +97,7 @@ void PlayerSystem::configure(entityx::EventManager &ev) { ev.subscribe<KeyUpEvent>(*this); ev.subscribe<KeyDownEvent>(*this); + ev.subscribe<UseItemEvent>(*this); } void PlayerSystem::update(entityx::EntityManager &en, entityx::EventManager &ev, entityx::TimeDelta dt) { @@ -200,8 +201,6 @@ void PlayerSystem::receive(const KeyDownEvent &kde) } else if (kc == SDLK_t) { game::time::tick(50); } - if (kc == SDLK_j) - game::events.emit<AttackEvent>(vec2(loc.x, loc.y), AttackType::ShortSlash); } vec2 PlayerSystem::getPosition(void) const @@ -209,3 +208,13 @@ vec2 PlayerSystem::getPosition(void) const auto& loc = *game::entities.component<Position>(player.id()).get(); return vec2(loc.x, loc.y); } + +void PlayerSystem::receive(const UseItemEvent& uie) +{ + if (uie.item->type == "Sword") { + auto loc = getPosition(); + auto &solid = *player.component<Solid>().get(); + loc.x += solid.width / 2, loc.y += solid.height / 2; + game::events.emit<AttackEvent>(loc, AttackType::ShortSlash); + } +} |