DEADSOFTWARE

One GameProc object for everything
[cavedroid.git] / core / src / ru / deadsoftware / cavecraft / misc / InputHandlerGame.java
index ffc38ccea589e80007e41a40c5c4af664472ef3e..b8460e018de1eab888bf21fe902043ba853c0c4b 100644 (file)
@@ -4,23 +4,17 @@ import com.badlogic.gdx.Input;
 import com.badlogic.gdx.InputProcessor;
 import ru.deadsoftware.cavecraft.CaveGame;
 import ru.deadsoftware.cavecraft.game.GameInput;
-import ru.deadsoftware.cavecraft.game.GameProc;
 
 import static ru.deadsoftware.cavecraft.GameScreen.getHeight;
 import static ru.deadsoftware.cavecraft.GameScreen.getWidth;
+import static ru.deadsoftware.cavecraft.GameScreen.GP;
 
 public class InputHandlerGame implements InputProcessor {
 
-    private GameProc gameProc;
     private GameInput gameInput;
 
-    private float tWidth, tHeight;
-
-    public InputHandlerGame(GameProc gameProc) {
-        this.gameProc = gameProc;
-        this.gameInput = new GameInput(gameProc);
-        tWidth = gameProc.renderer.camera.viewportWidth;
-        tHeight = gameProc.renderer.camera.viewportHeight;
+    public InputHandlerGame() {
+        this.gameInput = new GameInput();
     }
 
     @Override
@@ -42,30 +36,30 @@ public class InputHandlerGame implements InputProcessor {
 
     @Override
     public boolean touchDown(int screenX, int screenY, int pointer, int button) {
-        int tx = (int)(screenX * tWidth/getWidth());
-        int ty = (int)(screenY * tHeight/getHeight());
-        screenX *= gameProc.renderer.camera.viewportWidth/getWidth();
-        screenY *= gameProc.renderer.camera.viewportHeight/getHeight();
+        screenX *= GP.renderer.getWidth() / getWidth();
+        screenY *= GP.renderer.getHeight() / getHeight();
 
         if (CaveGame.TOUCH) {
-            if (tx > 26 && tx < 52 && ty > tHeight - 52 && ty < tHeight - 26) {
-                if (gameProc.ctrlMode==1) gameInput.keyDown(Input.Keys.W);
-                    else gameInput.keyDown(Input.Keys.SPACE);
-            } else if (tx > 0 && tx < 26 && ty > tHeight - 26) {
+            if (screenX > 26 && screenX < 52 && screenY > GP.renderer.getHeight() - 52 &&
+                    screenY < GP.renderer.getHeight() - 26) {
+                if (GP.ctrlMode == 1) gameInput.keyDown(Input.Keys.W);
+                else gameInput.keyDown(Input.Keys.SPACE);
+            } else if (screenX > 0 && screenX < 26 && screenY > GP.renderer.getHeight() - 26) {
                 gameInput.keyDown(Input.Keys.A);
-            } else if (tx > 26 && tx < 52 && ty > tHeight - 26) {
-                if (gameProc.ctrlMode==1) gameInput.keyDown(Input.Keys.S);
-                    else gameInput.keyDown(Input.Keys.CONTROL_LEFT);
-            } else if (tx > 52 && tx < 78 && ty > tHeight - 26) {
+            } else if (screenX > 26 && screenX < 52 && screenY > GP.renderer.getHeight() - 26) {
+                if (GP.ctrlMode == 1) gameInput.keyDown(Input.Keys.S);
+                else gameInput.keyDown(Input.Keys.CONTROL_LEFT);
+            } else if (screenX > 52 && screenX < 78 && screenY > GP.renderer.getHeight() - 26) {
                 gameInput.keyDown(Input.Keys.D);
-            } else if (tx > 78 && tx < 104 && ty > tHeight - 26) {
+            } else if (screenX > 78 && screenX < 104 && screenY > GP.renderer.getHeight() - 26) {
                 gameInput.keyDown(Input.Keys.ALT_LEFT);
-            } else if (tx > tWidth - 52 && tx < tWidth - 26 && ty > tHeight - 26) {
+            } else if (screenX > GP.renderer.getWidth() - 52 && screenX < GP.renderer.getWidth() - 26 &&
+                    screenY > GP.renderer.getHeight() - 26) {
                 gameInput.touchDown(screenX, screenY, Input.Buttons.LEFT);
-            } else if (tx > tWidth - 26 && screenY > ty - 26) {
+            } else if (screenX > GP.renderer.getWidth() - 26 && screenY > screenY - 26) {
                 gameInput.touchDown(screenX, screenY, Input.Buttons.RIGHT);
             } else {
-                gameInput.touchDown(screenX, screenY, Input.Buttons.LEFT);
+                gameInput.touchDown(screenX, screenY, -1);
             }
         } else {
             gameInput.touchDown(screenX, screenY, button);
@@ -75,29 +69,29 @@ public class InputHandlerGame implements InputProcessor {
 
     @Override
     public boolean touchUp(int screenX, int screenY, int pointer, int button) {
-        int tx = (int)(screenX * tWidth/getWidth());
-        int ty = (int)(screenY * tHeight/getHeight());
-        screenX *= gameProc.renderer.camera.viewportWidth/getWidth();
-        screenY *= gameProc.renderer.camera.viewportHeight/getHeight();
+        screenX *= GP.renderer.getWidth() / getWidth();
+        screenY *= GP.renderer.getHeight() / getHeight();
         if (CaveGame.TOUCH) {
-            if (tx > 26 && tx < 52 && ty > tHeight - 52 && ty < tHeight - 26) {
-                if (gameProc.ctrlMode==1) gameInput.keyUp(Input.Keys.W);
+            if (screenX > 26 && screenX < 52 && screenY > GP.renderer.getHeight() - 52 &&
+                    screenY < GP.renderer.getHeight() - 26) {
+                if (GP.ctrlMode == 1) gameInput.keyUp(Input.Keys.W);
                 else gameInput.keyUp(Input.Keys.SPACE);
-            } else if (tx > 0 && tx < 26 && ty > tHeight - 26) {
+            } else if (screenX > 0 && screenX < 26 && screenY > GP.renderer.getHeight() - 26) {
                 gameInput.keyUp(Input.Keys.A);
-            } else if (tx > 26 && tx < 52 && ty > tHeight - 26) {
-                if (gameProc.ctrlMode==1) gameInput.keyUp(Input.Keys.S);
+            } else if (screenX > 26 && screenX < 52 && screenY > GP.renderer.getHeight() - 26) {
+                if (GP.ctrlMode == 1) gameInput.keyUp(Input.Keys.S);
                 else gameInput.keyUp(Input.Keys.CONTROL_LEFT);
-            } else if (tx > 52 && tx < 78 && ty > tHeight - 26) {
+            } else if (screenX > 52 && screenX < 78 && screenY > GP.renderer.getHeight() - 26) {
                 gameInput.keyUp(Input.Keys.D);
-            } else if (tx > 78 && tx < 104 && ty > tHeight - 26) {
+            } else if (screenX > 78 && screenX < 104 && screenY > GP.renderer.getHeight() - 26) {
                 gameInput.keyUp(Input.Keys.ALT_LEFT);
-            } else if (tx > tWidth - 52 && tx < tWidth - 26 && ty > tHeight - 26) {
+            } else if (screenX > GP.renderer.getWidth() - 52 && screenX < GP.renderer.getWidth() - 26 &&
+                    screenY > GP.renderer.getHeight() - 26) {
                 gameInput.touchUp(screenX, screenY, Input.Buttons.LEFT);
-            } else if (tx > tWidth - 26 && screenY > ty - 26) {
+            } else if (screenX > GP.renderer.getWidth() - 26 && screenY > screenY - 26) {
                 gameInput.touchUp(screenX, screenY, Input.Buttons.RIGHT);
             } else {
-                gameInput.touchUp(screenX, screenY, Input.Buttons.LEFT);
+                gameInput.touchUp(screenX, screenY, -1);
             }
         } else {
             gameInput.touchUp(screenX, screenY, button);
@@ -107,17 +101,18 @@ public class InputHandlerGame implements InputProcessor {
 
     @Override
     public boolean touchDragged(int screenX, int screenY, int pointer) {
-        screenX *= gameProc.renderer.camera.viewportWidth/getWidth();
-        screenY *= gameProc.renderer.camera.viewportHeight/getHeight();
-        gameInput.touchDragged(screenX, screenY);
+        screenX *= GP.renderer.getWidth() / getWidth();
+        screenY *= GP.renderer.getHeight() / getHeight();
+        if (GP.isKeyDown && (screenX > 78 || screenY < GP.renderer.getHeight() - 52)) {
+            gameInput.keyUp(GP.keyDownCode);
+        } else {
+            gameInput.touchDragged(screenX, screenY);
+        }
         return false;
     }
 
     @Override
     public boolean mouseMoved(int screenX, int screenY) {
-        screenX *= gameProc.renderer.camera.viewportWidth/getWidth();
-        screenY *= gameProc.renderer.camera.viewportHeight/getHeight();
-        gameInput.mouseMoved(screenX,screenY);
         return false;
     }
 
@@ -126,4 +121,4 @@ public class InputHandlerGame implements InputProcessor {
         gameInput.scrolled(amount);
         return false;
     }
-}
\ No newline at end of file
+}