From c3e32345e53650a1c231f4e1a41d40c97955b893 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 26 Sep 2014 00:58:27 +0200 Subject: Collision rework --- src/model/Map.cpp | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) (limited to 'src/model/Map.cpp') diff --git a/src/model/Map.cpp b/src/model/Map.cpp index b7b40f5..749b25f 100644 --- a/src/model/Map.cpp +++ b/src/model/Map.cpp @@ -57,13 +57,9 @@ bool Map::moveEntity(Entity *entity, Direction dir, uint64_t start, uint64_t end entity->setDirection(dir); - Position pos = state.position + dir; - - if (getCollisionAt(pos.x, pos.y) == BLOCKED) + if (isBlocked(state.position + dir)) return false; - setCollisionAt(pos.x, pos.y, BLOCKED); - state.transitionStart = start; state.transitionEnd = end; state.direction = dir; @@ -74,12 +70,11 @@ bool Map::moveEntity(Entity *entity, Direction dir, uint64_t start, uint64_t end void Map::moveEntityTo(Entity *entity, Position pos) { EntityState &state = entityStates.at(entity); - setCollisionAt(state.position.x, state.position.y, EMPTY); - setCollisionAt(pos.x, pos.y, BLOCKED); + removeEntityPosition(state.position, entity); + addEntityPosition(pos, entity); state.position = pos; state.transitionStart = state.transitionEnd = 0; - } void Map::finishEntityTransition(Entity *entity) { @@ -98,17 +93,17 @@ std::unique_ptr Map::load(__attribute__((unused)) const std::string &name) for (int i = 0; i < 16; i++) { for (int j = 0; j < 16; j++) { if (4 <= i && i < 12 && 4 <= j && j < 12) { - map->setTileAt(0, i, j, 1); - map->setCollisionAt(i, j, EMPTY); + map->setTileAt(0, Position{i, j}, 1); + map->setCollisionAt(Position{i, j}, CollisionType::EMPTY); } else { - map->setTileAt(0, i, j, 0); + map->setTileAt(0, Position{i, j}, 0); } if (4 <= i && i < 12 && j == 8) - map->setTileAt(1, i, j, 2); + map->setTileAt(1, Position{i, j}, 2); else - map->setTileAt(1, i, j, 0); + map->setTileAt(1, Position{i, j}, 0); } } -- cgit v1.2.3