From aadcecf2022ec13d15da5d816567779740a37da7 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Wed, 24 Sep 2014 15:22:09 +0200 Subject: Keep mutable entity list in the MapContext only --- src/control/MapContext.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'src/control/MapContext.cpp') 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 &map0) - : eventBus(eventBus0), inputHandler(inputHandler0), map(map0) { +MapContext::MapContext(EventBus *eventBus0, InputHandler *inputHandler0, View::MapView *view0, const std::shared_ptr &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 -- cgit v1.2.3