summaryrefslogtreecommitdiffstats
path: root/src/control/MapContext.cpp
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2014-09-24 15:22:09 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2014-09-24 15:22:09 +0200
commitaadcecf2022ec13d15da5d816567779740a37da7 (patch)
tree1d1c5c448c69deea35d689d89cfd7abdd754e649 /src/control/MapContext.cpp
parentccf859fe805afe8db3aa694df5d26da7778dfc68 (diff)
downloadrpgedit-aadcecf2022ec13d15da5d816567779740a37da7.tar
rpgedit-aadcecf2022ec13d15da5d816567779740a37da7.zip
Keep mutable entity list in the MapContext only
Diffstat (limited to 'src/control/MapContext.cpp')
-rw-r--r--src/control/MapContext.cpp21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/control/MapContext.cpp b/src/control/MapContext.cpp
index 5c715db..e3f9a49 100644
--- a/src/control/MapContext.cpp
+++ b/src/control/MapContext.cpp
@@ -31,8 +31,19 @@ namespace RPGEdit {
namespace Control {
-MapContext::MapContext(EventBus *eventBus0, InputHandler *inputHandler0, const std::shared_ptr<const Model::Map> &map0)
- : eventBus(eventBus0), inputHandler(inputHandler0), map(map0) {
+MapContext::MapContext(EventBus *eventBus0, InputHandler *inputHandler0, View::MapView *view0, const std::shared_ptr<const Model::Map> &map0)
+ : eventBus(eventBus0), inputHandler(inputHandler0), view(view0), map(map0) {
+ for (const Model::Entity &entity : map->getEntities())
+ entities.emplace_back(new Model::Entity(entity));
+
+ playerEntity = new Model::Entity("square");
+ playerEntity->moveTo(Model::Position{8, 8});
+
+ entities.emplace_back(playerEntity);
+
+ view->updateEntities(entities);
+
+
inputHandler->registerListener(
[this] (uint16_t key, bool pressed, uint64_t time) {
if (pressed)
@@ -42,14 +53,14 @@ MapContext::MapContext(EventBus *eventBus0, InputHandler *inputHandler0, const s
}
void MapContext::movePlayer(Model::Direction dir, uint64_t time) {
- if (map->getPlayerEntity()->hasTransition())
+ if (playerEntity->hasTransition())
return;
- map->getPlayerEntity()->move(dir, time, time+250);
+ playerEntity->move(dir, time, time+250);
eventBus->enqueue(
[=] {
- map->getPlayerEntity()->finishTransition();
+ playerEntity->finishTransition();
movePlayerContinue(time+250);
},
time+250