From 4a71ecca5add60f22b7b257e306c0a5df3fe49e6 Mon Sep 17 00:00:00 2001 From: Alex Miller Date: Sat, 23 Sep 2017 11:47:25 +1000 Subject: [PATCH] Properly adjust players to their next tile when using rollers --- .../alexdev/icarus/game/room/tasks/RollerTask.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Icarus/src/org/alexdev/icarus/game/room/tasks/RollerTask.java b/Icarus/src/org/alexdev/icarus/game/room/tasks/RollerTask.java index 1c910d38..fdcdb7c0 100644 --- a/Icarus/src/org/alexdev/icarus/game/room/tasks/RollerTask.java +++ b/Icarus/src/org/alexdev/icarus/game/room/tasks/RollerTask.java @@ -17,7 +17,7 @@ public class RollerTask implements RoomTask { private Room room; - + public RollerTask(Room room) { this.room = room; } @@ -99,7 +99,6 @@ public void execute() { item.getPosition().setY(front.getY()); item.getPosition().setZ(nextHeight); item.save(); - redoMap = true; } @@ -121,12 +120,19 @@ public void execute() { entity.getRoomUser().setRolling(true); Position front = roller.getPosition().getSquareInFront(); - double nextHeight = this.room.getMapping().getTile(front.getX(), front.getY()).getHeight(); if (!this.room.getMapping().isValidStep(entity, entity.getRoomUser().getPosition(), front, false)) { continue; } + RoomTile nextTile = this.room.getMapping().getTile(front.getX(), front.getY()); + RoomTile previousTile = this.room.getMapping().getTile(entity.getRoomUser().getPosition().getX(), entity.getRoomUser().getPosition().getY()); + + previousTile.removeEntity(entity); + nextTile.addEntity(entity); + + double nextHeight = nextTile.getHeight(); + this.room.send(new SlideObjectMessageComposer(entity, front, roller.getId(), nextHeight)); entity.getRoomUser().getPosition().setX(front.getX());