summaryrefslogtreecommitdiffstats
path: root/src/control
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2014-09-26 01:42:49 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2014-09-26 01:42:49 +0200
commitd9f829f10a8310f53d945cd96ecce28193b792d8 (patch)
treeb7b925e644c460632f1262df84cc84d36c096c9c /src/control
parent3177ba222467e74d761d6a545ef05e8f1a0993c0 (diff)
downloadrpgedit-d9f829f10a8310f53d945cd96ecce28193b792d8.tar
rpgedit-d9f829f10a8310f53d945cd96ecce28193b792d8.zip
Add support for interactions with entities
Diffstat (limited to 'src/control')
-rw-r--r--src/control/MapContext.cpp13
-rw-r--r--src/control/MapContext.hpp1
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);