diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2014-09-23 02:11:11 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2014-09-23 02:11:11 +0200 |
commit | d41e2dae45e08059e23041f0146b91add0c2cace (patch) | |
tree | 780888633b8a051be868df29fd29c369605ee5e4 /src/control/MapContext.cpp | |
parent | 0c3dbabb920f2957ca8c36194ebdeec9f80fefe7 (diff) | |
download | rpgedit-d41e2dae45e08059e23041f0146b91add0c2cace.tar rpgedit-d41e2dae45e08059e23041f0146b91add0c2cace.zip |
Add transitions for entity movement
Diffstat (limited to 'src/control/MapContext.cpp')
-rw-r--r-- | src/control/MapContext.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/control/MapContext.cpp b/src/control/MapContext.cpp index 5fda337..f4dd31e 100644 --- a/src/control/MapContext.cpp +++ b/src/control/MapContext.cpp @@ -45,6 +45,36 @@ MapContext::MapContext(ImageLoader *imageLoader0, const std::shared_ptr<const Mo entities[entity->getName()] = imageLoader->get("entity/" + entity->getName()); } +void MapContext::advance(InputHandler *inputHandler, uint32_t ticks) { + uint64_t totalTicksOld = totalTicks; + totalTicks += ticks; + + unsigned advance = totalTicks - totalTicksOld; + + while (advance) { + advance = map->getPlayerEntity().advance(advance); + + if (map->getPlayerEntity().hasTransition()) + break; + + if (inputHandler->isKeyPressed(SDL_SCANCODE_UP)) { + map->getPlayerEntity().move(Model::NORTH, 250); + } + else if (inputHandler->isKeyPressed(SDL_SCANCODE_RIGHT)) { + map->getPlayerEntity().move(Model::EAST, 250); + } + else if (inputHandler->isKeyPressed(SDL_SCANCODE_DOWN)) { + map->getPlayerEntity().move(Model::SOUTH, 250); + } + else if (inputHandler->isKeyPressed(SDL_SCANCODE_LEFT)) { + map->getPlayerEntity().move(Model::WEST, 250); + } + else { + break; + } + } +} + } } |