X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2FGameRenderer.java;h=7647e69c2a6c0ad9d782de5b5533ccc75123fec1;hb=ab3f0bb705ce7d243f5732ae9e2c1dcf917a8963;hp=b54bead932f38f903a7f829cf88b5c1a60d73088;hpb=cf4113d5bfd3fca7c3815bf14a214eebd822216c;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java b/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java index b54bead..7647e69 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java +++ b/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java @@ -29,6 +29,8 @@ import java.util.Set; @GameScope public class GameRenderer extends Renderer { + private static final TouchButton nullButton = new TouchButton(null, -1, true); + private final MainConfig mMainConfig; private final MobsController mMobsController; private final List mRenderers; @@ -62,6 +64,8 @@ public class GameRenderer extends Renderer { Gdx.gl.glClearColor(0f, .6f, .6f, 1f); } + private float mTouchDownX, mTouchDownY; + private void updateCameraPosition() { Player player = mMobsController.getPlayer(); setCamPos(player.getX() + player.getWidth() / 2 - getWidth() / 2, @@ -118,10 +122,10 @@ public class GameRenderer extends Renderer { float touchY = transformScreenY(screenY); if (mMainConfig.isTouch()) { - @CheckForNull TouchButton touchedKey = getTouchedKey(touchX, touchY); - if (touchedKey != null && touchedKey.isMouse()) { + TouchButton touchedKey = getTouchedKey(touchX, touchY); + if (touchedKey.isMouse()) { return onMouseActionEvent(screenX, screenY, touchedKey.getCode(), true); - } else if (touchedKey != null) { + } else { return keyUp(touchedKey.getCode()); } } @@ -129,7 +133,6 @@ public class GameRenderer extends Renderer { return onMouseActionEvent(screenX, screenY, button, true); } - @CheckForNull private TouchButton getTouchedKey(float touchX, float touchY) { for (ObjectMap.Entry entry : Assets.guiMap) { TouchButton button = entry.value; @@ -137,7 +140,7 @@ public class GameRenderer extends Renderer { return button; } } - return null; + return nullButton; } @Override @@ -145,11 +148,14 @@ public class GameRenderer extends Renderer { float touchX = transformScreenX(screenX); float touchY = transformScreenY(screenY); + mTouchDownX = touchX; + mTouchDownY = touchY; + if (mMainConfig.isTouch()) { - @CheckForNull TouchButton touchedKey = getTouchedKey(touchX, touchY); - if (touchedKey != null && touchedKey.isMouse()) { + TouchButton touchedKey = getTouchedKey(touchX, touchY); + if (touchedKey.isMouse()) { return onMouseActionEvent(screenX, screenY, touchedKey.getCode(), false); - } else if (touchedKey != null) { + } else { return keyDown(touchedKey.getCode()); } } @@ -159,6 +165,13 @@ public class GameRenderer extends Renderer { @Override public boolean touchDragged(int screenX, int screenY, int pointer) { + float touchX = transformScreenX(screenX); + float touchY = transformScreenY(screenY); + + if (Math.abs(touchX - mTouchDownX) < 16 && Math.abs(touchY - mTouchDownY) < 16) { + return false; + } + @CheckForNull MouseInputAction action = mMouseInputActionMapper.mapDragged(screenX, screenY, getCameraViewport()); return handleMouseAction(action);