diff --git a/cicaprojekt/Stargate.java b/cicaprojekt/Stargate.java index e69bb12..4066cd8 100644 --- a/cicaprojekt/Stargate.java +++ b/cicaprojekt/Stargate.java @@ -12,6 +12,7 @@ public class Stargate { public Stargate other; private boolean isSpawned; private Wall currentWall; + private Direction exitDirection; private String name; private static Map stargates = new HashMap<>(); @@ -42,8 +43,10 @@ public class Stargate { return currentWall; } - public void setCurrentWall(Wall wall) { + public void setCurrentWall(Wall wall, Direction direction) { currentWall = wall; + if(direction != null) + exitDirection = Direction.invert(direction); if(wall != null) { isSpawned = true; } @@ -60,18 +63,12 @@ public class Stargate { } private Direction getExitDirection() { - if(currentWall.getAdjacentTile(Direction.EAST) == null) - return Direction.WEST; - else if(currentWall.getAdjacentTile(Direction.WEST) == null) - return Direction.EAST; - else if(currentWall.getAdjacentTile(Direction.NORTH) == null) - return Direction.SOUTH; - else - return Direction.NORTH; + return exitDirection; } public void teleport(PlayerBase player) { - player.setCurrentTile(other.getCurrentWall().getAdjacentTile(getExitDirection())); + if(isOpen()) + player.setCurrentTile(other.getCurrentWall().getAdjacentTile(other.getExitDirection())); } @Override diff --git a/cicaprojekt/Wall.java b/cicaprojekt/Wall.java index d193f68..3b3567c 100644 --- a/cicaprojekt/Wall.java +++ b/cicaprojekt/Wall.java @@ -13,7 +13,7 @@ public class Wall extends Tile { stargate.getCurrentWall().clearStargate(); if (sg == null) { sg = stargate; - sg.setCurrentWall(this); + sg.setCurrentWall(this, direction); Game.instance.updateDisplay(); } else @@ -30,7 +30,7 @@ public class Wall extends Tile { public void clearStargate() { if(sg != null) { - sg.setCurrentWall(null); + sg.setCurrentWall(null, null); sg = null; } }