diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2014-09-26 01:42:49 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2014-09-26 01:42:49 +0200 |
commit | d9f829f10a8310f53d945cd96ecce28193b792d8 (patch) | |
tree | b7b925e644c460632f1262df84cc84d36c096c9c /src/control | |
parent | 3177ba222467e74d761d6a545ef05e8f1a0993c0 (diff) | |
download | rpgedit-d9f829f10a8310f53d945cd96ecce28193b792d8.tar rpgedit-d9f829f10a8310f53d945cd96ecce28193b792d8.zip |
Add support for interactions with entities
Diffstat (limited to 'src/control')
-rw-r--r-- | src/control/MapContext.cpp | 13 | ||||
-rw-r--r-- | src/control/MapContext.hpp | 1 |
2 files changed, 14 insertions, 0 deletions
diff --git a/src/control/MapContext.cpp b/src/control/MapContext.cpp index f5d4c05..1b0e721 100644 --- a/src/control/MapContext.cpp +++ b/src/control/MapContext.cpp @@ -71,6 +71,15 @@ void MapContext::movePlayerContinue(uint64_t time) { movePlayer(Model::Direction::WEST, time); } +void MapContext::interact(uint64_t time) { + Model::Position<int> p = map.getEntityPosition(playerEntity) + playerEntity->getDirection(); + Model::Entity *target = map.getEntityAt(p); + + if (!target) + return; + + target->interact(time); +} void MapContext::keyPressed(uint16_t key, uint64_t time) { switch (key) { @@ -88,6 +97,10 @@ void MapContext::keyPressed(uint16_t key, uint64_t time) { case SDL_SCANCODE_LEFT: movePlayer(Model::Direction::WEST, time); + break; + + case SDL_SCANCODE_SPACE: + interact(time); } } diff --git a/src/control/MapContext.hpp b/src/control/MapContext.hpp index 05ed991..18d4cfe 100644 --- a/src/control/MapContext.hpp +++ b/src/control/MapContext.hpp @@ -52,6 +52,7 @@ private: void movePlayer(Model::Direction dir, uint64_t time); void movePlayerContinue(uint64_t time); void keyPressed(uint16_t key, uint64_t time); + void interact(uint64_t time); Model::Position<float> getViewPosition(uint64_t time) { return map.getEntityPosition(playerEntity, time); |