DEADSOFTWARE

Reimplement mobs
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / GameInput.java
index df002fa8df09fd5d6e8836e5fb50e549f28c81ca..2fc38b7cb7bda064dd0935448d14bc027ac5404d 100644 (file)
@@ -33,6 +33,19 @@ public class GameInput {
         return GameItems.isFluid(GP.world.getForeMap(GP.player.getMapX(), GP.player.getLowerMapY()));
     }
 
+    private void goUpwards() {
+        if (checkSwim()) {
+            GP.player.swim = true;
+        } else if (GP.player.canJump()) {
+            GP.player.getMov().add(0, -7);
+        } else if (!GP.player.isFlyMode() && GP.player.gameMode == 1) {
+            GP.player.setFlyMode(true);
+            GP.player.getMov().y = 0;
+        } else if (GP.player.isFlyMode()) {
+            GP.player.getMov().y = -GamePhysics.PL_SPEED;
+        }
+    }
+
     @SuppressWarnings("IntegerDivisionInFloatingPointContext")
     private boolean insideCreativeInv(float screenX, float screenY) {
         TextureRegion creative = Assets.textureRegions.get("creative");
@@ -46,15 +59,23 @@ public class GameInput {
         if (GP.controlMode == ControlMode.WALK || !CaveGame.TOUCH) {
             switch (keycode) {
                 case Input.Keys.A:
-                    GP.player.mov.x = -GamePhysics.PL_SPEED;
-                    GP.player.setDir(0);
+                    GP.player.getMov().x = -GamePhysics.PL_SPEED;
+                    GP.player.setDir(Mob.LEFT);
                     if (CaveGame.TOUCH && checkSwim()) GP.player.swim = true;
                     break;
                 case Input.Keys.D:
-                    GP.player.mov.x = GamePhysics.PL_SPEED;
-                    GP.player.setDir(1);
+                    GP.player.getMov().x = GamePhysics.PL_SPEED;
+                    GP.player.setDir(Mob.RIGHT);
                     if (CaveGame.TOUCH && checkSwim()) GP.player.swim = true;
                     break;
+                case Input.Keys.W:
+                case Input.Keys.SPACE:
+                    goUpwards();
+                    break;
+                case Input.Keys.S:
+                case Input.Keys.CONTROL_LEFT:
+                    GP.player.getMov().y = GamePhysics.PL_SPEED;
+                    break;
             }
         } else {
             switch (keycode) {
@@ -87,7 +108,7 @@ public class GameInput {
         }
 
         if (GP.controlMode == ControlMode.CURSOR) {
-            if (curX * 16 + 8 < GP.player.pos.x + GP.player.getWidth() / 2) {
+            if (curX * 16 + 8 < GP.player.getX() + GP.player.getWidth() / 2) {
                 GP.player.setDir(Mob.LEFT);
             } else {
                 GP.player.setDir(Mob.RIGHT);
@@ -195,33 +216,22 @@ public class GameInput {
     public void keyDown(int keycode) {
         keyDown = true;
         keyDownCode = keycode;
-        if (keycode == Input.Keys.W || keycode == Input.Keys.A ||
-                keycode == Input.Keys.S || keycode == Input.Keys.D) {
-            wasdPressed(keycode);
-        } else switch (keycode) {
+        switch (keycode) {
+            case Input.Keys.A:
+            case Input.Keys.D:
+            case Input.Keys.W:
+            case Input.Keys.S:
+            case Input.Keys.SPACE:
+            case Input.Keys.CONTROL_LEFT:
+                wasdPressed(keycode);
+                break;
+
             case Input.Keys.ALT_LEFT:
                 if (CaveGame.TOUCH) {
                     GP.controlMode = GP.controlMode == ControlMode.WALK ? ControlMode.CURSOR : ControlMode.WALK;
                 }
                 break;
 
-            case Input.Keys.SPACE:
-                if (checkSwim()) {
-                    GP.player.swim = true;
-                } else if (GP.player.canJump) {
-                    GP.player.mov.add(0, -7);
-                } else if (!GP.player.flyMode && GP.player.gameMode == 1) {
-                    GP.player.flyMode = true;
-                    GP.player.mov.y = 0;
-                } else if (GP.player.flyMode) {
-                    GP.player.mov.y = -GamePhysics.PL_SPEED;
-                }
-                break;
-
-            case Input.Keys.CONTROL_LEFT:
-                GP.player.mov.y = GamePhysics.PL_SPEED;
-                break;
-
             case Input.Keys.E:
                 if (CaveGame.GAME_STATE == GameState.PLAY) {
                     switch (GP.player.gameMode) {
@@ -265,13 +275,15 @@ public class GameInput {
         switch (keycode) {
             case Input.Keys.A:
             case Input.Keys.D:
-                GP.player.mov.x = 0;
+                GP.player.getMov().x = 0;
                 if (CaveGame.TOUCH && GP.player.swim) GP.player.swim = false;
                 break;
 
+            case Input.Keys.W:
+            case Input.Keys.S:
             case Input.Keys.SPACE:
             case Input.Keys.CONTROL_LEFT:
-                if (GP.player.flyMode) GP.player.mov.y = 0;
+                if (GP.player.isFlyMode()) GP.player.getMov().y = 0;
                 if (GP.player.swim) GP.player.swim = false;
                 break;
         }