diff options
| author | Jérémy Zurcher <jeremy@asynk.ch> | 2014-09-12 14:42:21 +0200 | 
|---|---|---|
| committer | Jérémy Zurcher <jeremy@asynk.ch> | 2014-09-12 14:42:21 +0200 | 
| commit | 0b45d496943a108c6971abc4f7d2a89fc1b636f3 (patch) | |
| tree | b3ffa22f3370c05ab3b3c054b250779036d71fce /core/src/ch/asynk | |
| parent | 0d579c6daad93b01e222f6298daf2d1da6d9760c (diff) | |
| download | RustAndDust-0b45d496943a108c6971abc4f7d2a89fc1b636f3.zip RustAndDust-0b45d496943a108c6971abc4f7d2a89fc1b636f3.tar.gz | |
use InputMultiplexer to handle Gestures, apply zoom to touchDragged()
Diffstat (limited to 'core/src/ch/asynk')
| -rw-r--r-- | core/src/ch/asynk/tankontank/screens/GameScreen.java | 25 | 
1 files changed, 23 insertions, 2 deletions
| diff --git a/core/src/ch/asynk/tankontank/screens/GameScreen.java b/core/src/ch/asynk/tankontank/screens/GameScreen.java index ceddf48..9f86bcb 100644 --- a/core/src/ch/asynk/tankontank/screens/GameScreen.java +++ b/core/src/ch/asynk/tankontank/screens/GameScreen.java @@ -4,6 +4,10 @@ import com.badlogic.gdx.Gdx;  import com.badlogic.gdx.Input;  import com.badlogic.gdx.Screen;  import com.badlogic.gdx.InputAdapter; +import com.badlogic.gdx.InputMultiplexer; +import com.badlogic.gdx.input.GestureDetector; +import com.badlogic.gdx.input.GestureDetector.GestureAdapter; +  import com.badlogic.gdx.graphics.GL20;  import com.badlogic.gdx.graphics.OrthographicCamera;  import com.badlogic.gdx.graphics.Texture; @@ -53,11 +57,26 @@ public class GameScreen extends AbstractScreen          viewport = new FitViewport(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), cam); -        Gdx.input.setInputProcessor(new InputAdapter() { +        Gdx.input.setInputProcessor(getMultiplexer()); +    } + +    private InputMultiplexer getMultiplexer() +    { +        final InputMultiplexer multiplexer = new InputMultiplexer(); +        multiplexer.addProcessor(new GestureDetector(new GestureAdapter() { +            @Override +            public boolean zoom(float initialDistance, float distance) +            { +                cam.zoom += ((initialDistance - distance) / 300.f); +                cam.zoom = MathUtils.clamp(cam.zoom, 0.4f, maxZoom); +                return true; +            } +        })); +        multiplexer.addProcessor(new InputAdapter() {              @Override              public boolean touchDragged(int x, int y, int pointer)              { -                cam.translate((touchX - x), - (touchY - y), 0); +                cam.translate((touchX - x) * cam.zoom, (y - touchY) * cam.zoom, 0);                  touchX = x;                  touchY = y;                  return true; @@ -79,6 +98,8 @@ public class GameScreen extends AbstractScreen                  return true;              }          }); + +        return multiplexer;      }      @Override | 
