diff --git a/SPD-classes/src/main/java/com/watabou/noosa/Camera.java b/SPD-classes/src/main/java/com/watabou/noosa/Camera.java index d95e4858c..8b49a8176 100644 --- a/SPD-classes/src/main/java/com/watabou/noosa/Camera.java +++ b/SPD-classes/src/main/java/com/watabou/noosa/Camera.java @@ -51,7 +51,7 @@ public class Camera extends Gizmo { public float[] matrix; - public boolean scrollable = false; + public PointF edgeScroll; public PointF scroll; public PointF centerOffset; @@ -122,7 +122,8 @@ public class Camera extends Gizmo { screenWidth = (int)(width * zoom); screenHeight = (int)(height * zoom); - + + edgeScroll = new PointF(); scroll = new PointF(); centerOffset = new PointF(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/CellSelector.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/CellSelector.java index daab23439..0434407d2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/CellSelector.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/CellSelector.java @@ -176,7 +176,7 @@ public class CellSelector extends ScrollArea { @Override protected void onPointerDown( PointerEvent event ) { - + camera.edgeScroll.set(-1); if (event != curEvent && another == null) { if (curEvent.type == PointerEvent.Type.UP) { @@ -199,6 +199,7 @@ public class CellSelector extends ScrollArea { @Override protected void onPointerUp( PointerEvent event ) { + camera.edgeScroll.set(1); if (pinching && (event == curEvent || event == another)) { pinching = false; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java index f6a10b72f..ed2370b81 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java @@ -211,7 +211,7 @@ public class GameScene extends PixelScene { super.create(); Camera.main.zoom( GameMath.gate(minZoom, defaultZoom + SPDSettings.zoom(), maxZoom)); - Camera.main.scrollable = true; + Camera.main.edgeScroll.set(1); switch (SPDSettings.cameraFollow()) { case 4: default: Camera.main.setFollowDeadzone(0); break; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/PixelScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/PixelScene.java index b2adc26b2..222a5c817 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/PixelScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/PixelScene.java @@ -238,7 +238,9 @@ public class PixelScene extends Scene { } cameraShift.invScale(Camera.main.zoom); - if (cameraShift.length() > 0 && Camera.main.scrollable){ + cameraShift.x *= Camera.main.edgeScroll.x; + cameraShift.y *= Camera.main.edgeScroll.y; + if (cameraShift.length() > 0){ Camera.main.shift(cameraShift); } ControllerHandler.updateControllerPointer(virtualCursorPos, true);