aboutsummaryrefslogtreecommitdiffstats
path: root/src/player.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/player.cpp')
-rw-r--r--src/player.cpp13
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);
+ }
+}