diff --git a/src/mightypork/rogue/screens/game/HudLayer.java b/src/mightypork/rogue/screens/game/HudLayer.java index ea1cb9f..3ab4fd4 100644 --- a/src/mightypork/rogue/screens/game/HudLayer.java +++ b/src/mightypork/rogue/screens/game/HudLayer.java @@ -82,7 +82,7 @@ public class HudLayer extends ScreenLayer { @Override public int getEventPriority() { - return 200; + return 400; } } diff --git a/src/mightypork/rogue/world/entity/EntityPathFinder.java b/src/mightypork/rogue/world/entity/EntityPathFinder.java index 00c6057..2193c0d 100644 --- a/src/mightypork/rogue/world/entity/EntityPathFinder.java +++ b/src/mightypork/rogue/world/entity/EntityPathFinder.java @@ -43,7 +43,7 @@ public class EntityPathFinder extends PathFinder { @Override public Heuristic getHeuristic() { - return PathFinder.DIAGONAL_HEURISTIC; + return PathFinder.CORNER_HEURISTIC; } diff --git a/src/mightypork/rogue/world/gui/MapView.java b/src/mightypork/rogue/world/gui/MapView.java index 1ae116c..d4dd2d9 100644 --- a/src/mightypork/rogue/world/gui/MapView.java +++ b/src/mightypork/rogue/world/gui/MapView.java @@ -41,10 +41,12 @@ public class MapView extends InputComponent implements KeyListener, MouseButtonL public MapView() { - this.tileSize = height().min(width()).div(12).max(32).mul(Num.make(1).sub(zoom.mul(0.66))); + this.tileSize = height().min(width()).div(10).max(32).mul(Num.make(1).sub(zoom.mul(0.5))); this.worldRenderer = new WorldRenderer(this, tileSize); pc = WorldProvider.get().getPlayerControl(); pc.addMoveListener(this); + + zoom.setDefaultDuration(0.5); } @@ -105,6 +107,16 @@ public class MapView extends InputComponent implements KeyListener, MouseButtonL break; } } + + if (event.isWheelEvent()) { + final int delta = event.getWheelDelta(); + if (!zoom.isFinished()) return; + if (delta < 0) { + zoom.fadeOut(); + } else { + zoom.fadeIn(); + } + } } @@ -117,9 +129,9 @@ public class MapView extends InputComponent implements KeyListener, MouseButtonL if (event.getKey() == Keys.Z) { if (event.isDown()) { - zoom.fadeIn(1); + zoom.fadeIn(); } else { - zoom.fadeOut(1); + zoom.fadeOut(); } } diff --git a/src/mightypork/rogue/world/gui/Minimap.java b/src/mightypork/rogue/world/gui/Minimap.java index 544f0fa..3a5200f 100644 --- a/src/mightypork/rogue/world/gui/Minimap.java +++ b/src/mightypork/rogue/world/gui/Minimap.java @@ -89,7 +89,7 @@ public class Minimap extends InputComponent implements MouseButtonListener { @Override public void receive(MouseButtonEvent event) { - if (event.isOver(bounds)) { + if (event.isOver(bounds) && event.getButton() == 0) { if (event.isUp()) { final Vect relative = event.getPos().sub(bounds.origin()); final Coord actual = Coord.make(relative.xi() / unit, relative.yi() / unit); diff --git a/src/mightypork/rogue/world/gui/interaction/MIPMouse.java b/src/mightypork/rogue/world/gui/interaction/MIPMouse.java index 8a264ce..1621f31 100644 --- a/src/mightypork/rogue/world/gui/interaction/MIPMouse.java +++ b/src/mightypork/rogue/world/gui/interaction/MIPMouse.java @@ -2,6 +2,7 @@ package mightypork.rogue.world.gui.interaction; import mightypork.gamecore.input.InputSystem; +import mightypork.gamecore.input.Keys; import mightypork.gamecore.util.math.Calc.Deg; import mightypork.gamecore.util.math.Polar; import mightypork.gamecore.util.math.algo.Coord; @@ -20,7 +21,7 @@ public class MIPMouse implements MapInteractionPlugin { @Override public void update(MapView view, PlayerControl pc, double delta) { - if (pc.getPlayerEntity().pos.hasPath()) return; + if (!InputSystem.isKeyDown(Keys.L_SHIFT)) return; final Vect pos = InputSystem.getMousePos(); @@ -34,13 +35,15 @@ public class MIPMouse implements MapInteractionPlugin { @Override public boolean onClick(MapView view, PlayerControl pc, Vect mouse, int button, boolean down) { - if (!down && button == BTN) { - - final Coord pos = view.toWorldPos(mouse); - final Tile t = pc.getLevel().getTile(pos); - if (t.onClick()) return true; - + if (button != BTN) return false; + final Coord pos = view.toWorldPos(mouse); + final Tile t = pc.getLevel().getTile(pos); + + if (t.onClick()) return true; + + if (!down && t.isWalkable()) { if (troToNav(view, pc, mouse)) return true; + return mouseWalk(view, pc, mouse); } return false; @@ -49,7 +52,9 @@ public class MIPMouse implements MapInteractionPlugin { private boolean troToNav(MapView view, PlayerControl pc, Vect mouse) { + final Coord plpos = pc.getCoord(); final Coord clicked = view.toWorldPos(mouse); + if (clicked.equals(plpos)) return false; final Tile t = pc.getLevel().getTile(clicked); if (!t.isWalkable() || !t.isExplored()) return false; @@ -63,6 +68,7 @@ public class MIPMouse implements MapInteractionPlugin { { final Coord plpos = pc.getCoord(); final Coord clicked = view.toWorldPos(pos); + if (clicked.equals(plpos)) return false; final Polar p = Polar.fromCoord(clicked.x - plpos.x, clicked.y - plpos.y); @@ -94,8 +100,17 @@ public class MIPMouse implements MapInteractionPlugin { @Override - public boolean onStepEnd(MapView mapView, PlayerControl player) + public boolean onStepEnd(MapView view, PlayerControl pc) { + if (!InputSystem.isKeyDown(Keys.L_SHIFT)) return false; + + final Vect pos = InputSystem.getMousePos(); + + if (InputSystem.isMouseButtonDown(BTN)) { + if (mouseWalk(view, pc, pos)) return true; + if (troToNav(view, pc, pos)) return true; + } + return false; }