diff options
Diffstat (limited to 'core/src/ch')
14 files changed, 72 insertions, 158 deletions
| diff --git a/core/src/ch/asynk/rustanddust/game/Ctrl.java b/core/src/ch/asynk/rustanddust/game/Ctrl.java index 024bd02..d75ef94 100644 --- a/core/src/ch/asynk/rustanddust/game/Ctrl.java +++ b/core/src/ch/asynk/rustanddust/game/Ctrl.java @@ -2,8 +2,6 @@ package ch.asynk.rustanddust.game;  import com.badlogic.gdx.utils.Disposable; -import com.badlogic.gdx.math.Vector3; -  import ch.asynk.rustanddust.RustAndDust;  import ch.asynk.rustanddust.ui.Position;  import ch.asynk.rustanddust.game.State.StateType; @@ -28,9 +26,7 @@ public class Ctrl implements Disposable      public Hud hud;      public boolean blockMap;      public boolean blockHud; - -    public Vector3 mapTouch = new Vector3(); -    public Vector3 hudTouch = new Vector3(); +    private Hex touchedHex;      private State selectState;      private State pathState; @@ -71,6 +67,7 @@ public class Ctrl implements Disposable          this.blockMap = false;          this.blockHud = false; +        this.touchedHex = null;          this.map = battle.setup();          this.hud = new Hud(game); @@ -92,28 +89,27 @@ public class Ctrl implements Disposable      // INPUTS -    public boolean drag(int dx, int dy) +    public boolean drag(float x, float y, int dx, int dy)      { -        if (!blockHud && hud.drag(hudTouch.x, hudTouch.y, dx, dy)) +        if (!blockHud && hud.drag(x, y, dx, dy))              return true;          return false;      } -    public void touchDown() +    public void touchDown(float hudX, float hudY, float mapX, float mapY)      {          boolean inAnimation = (this.stateType == StateType.ANIMATION); -        if (!blockHud && hud.hit(hudTouch.x, hudTouch.y, inAnimation)) +        if (!blockHud && hud.hit(hudX, hudY, inAnimation))              return; -        if (!blockMap && state.downInMap(mapTouch.x, mapTouch.y)) -            state.touchDown(); +        touchedHex = (blockMap ? null : map.getHexAt(mapX, mapY));      } -    public void touchUp() +    public void touchUp(float hudX, float hudY, float mapX, float mapY)      { -        if (!blockMap && state.upInMap(mapTouch.x, mapTouch.y)) -            state.touchUp(); +        if (!blockMap && (touchedHex == map.getHexAt(mapX, mapY))) +            state.touch(touchedHex);      }      // Map callbacks @@ -153,11 +149,8 @@ public class Ctrl implements Disposable      public void showEntryZone()      { -        if ((stateType == StateType.DEPLOYMENT) || (stateType == StateType.REINFORCEMENT)) { -            state.downInMap(-1, -1); -            state.upInMap(-1, -1); -            state.touchUp(); -        } +        if ((stateType == StateType.DEPLOYMENT) || (stateType == StateType.REINFORCEMENT)) +            state.touch(null);      }      public void endDeployment() diff --git a/core/src/ch/asynk/rustanddust/game/State.java b/core/src/ch/asynk/rustanddust/game/State.java index 386df8b..73a0f5b 100644 --- a/core/src/ch/asynk/rustanddust/game/State.java +++ b/core/src/ch/asynk/rustanddust/game/State.java @@ -26,11 +26,5 @@ public interface State      public StateType execute(); -    public void touchDown(); - -    public void touchUp(); - -    public boolean downInMap(float x, float y); - -    public boolean upInMap(float x, float y); +    public void touch(Hex hex);  } diff --git a/core/src/ch/asynk/rustanddust/game/states/StateAnimation.java b/core/src/ch/asynk/rustanddust/game/states/StateAnimation.java index 41831e0..4b50bec 100644 --- a/core/src/ch/asynk/rustanddust/game/states/StateAnimation.java +++ b/core/src/ch/asynk/rustanddust/game/states/StateAnimation.java @@ -24,14 +24,4 @@ public class StateAnimation extends StateCommon      {          return StateType.DONE;      } - -    @Override -    public void touchDown() -    { -    } - -    @Override -    public void touchUp() -    { -    }  } diff --git a/core/src/ch/asynk/rustanddust/game/states/StateBreak.java b/core/src/ch/asynk/rustanddust/game/states/StateBreak.java index 56e8ba6..45b1937 100644 --- a/core/src/ch/asynk/rustanddust/game/states/StateBreak.java +++ b/core/src/ch/asynk/rustanddust/game/states/StateBreak.java @@ -1,6 +1,7 @@  package ch.asynk.rustanddust.game.states;  import ch.asynk.rustanddust.engine.Orientation; +import ch.asynk.rustanddust.game.Hex;  import ch.asynk.rustanddust.game.Unit;  import ch.asynk.rustanddust.game.hud.ActionButtons.Buttons; @@ -41,25 +42,20 @@ public class StateBreak extends StateCommon      }      @Override -    public void touchDown() -    { -    } - -    @Override -    public void touchUp() +    public void touch(Hex hex)      {          // TODO : cancel preview move before showing rotation          if (activeUnit == null) { -            Unit unit = upHex.getUnit(); +            Unit unit = hex.getUnit();              if (map.unitsBreakThroughContains(unit)) {                  activeUnit = unit; -                map.hexMoveShow(upHex); +                map.hexMoveShow(hex);                  map.hexMoveShow(to);                  map.hexDirectionsShow(to);                  map.unitsBreakThroughHide();              }          } else { -            o = Orientation.fromAdj(to, upHex); +            o = Orientation.fromAdj(to, hex);              if (o == Orientation.KEEP) return; diff --git a/core/src/ch/asynk/rustanddust/game/states/StateCommon.java b/core/src/ch/asynk/rustanddust/game/states/StateCommon.java index 97aecfc..8b6efed 100644 --- a/core/src/ch/asynk/rustanddust/game/states/StateCommon.java +++ b/core/src/ch/asynk/rustanddust/game/states/StateCommon.java @@ -16,8 +16,6 @@ public abstract class StateCommon implements State      protected static Map map;      protected static Hex selectedHex = null; -    protected static Hex downHex = null; -    protected static Hex upHex = null;      protected static Hex to = null;      protected boolean isEnemy; @@ -31,20 +29,6 @@ public abstract class StateCommon implements State          map = game.ctrl.map;      } -    @Override -    public boolean downInMap(float x, float y) -    { -        downHex = map.getHexAt(x, y); -        return (downHex != null); -    } - -    @Override -    public boolean upInMap(float x, float y) -    { -        upHex = map.getHexAt(x, y); -        return (upHex != null); -    } -      protected boolean hasUnit()      {          return (selectedUnit != null); @@ -64,4 +48,7 @@ public abstract class StateCommon implements State          map.unitsTargetHide();          map.unitsMoveableHide();      } + +    @Override +    public void touch(Hex hex) { }  } diff --git a/core/src/ch/asynk/rustanddust/game/states/StateDeployment.java b/core/src/ch/asynk/rustanddust/game/states/StateDeployment.java index 14c015e..0afc4ee 100644 --- a/core/src/ch/asynk/rustanddust/game/states/StateDeployment.java +++ b/core/src/ch/asynk/rustanddust/game/states/StateDeployment.java @@ -53,26 +53,21 @@ public class StateDeployment extends StateCommon      }      @Override -    public void touchDown() -    { -    } - -    @Override -    public void touchUp() +    public void touch(Hex hex)      {          Unit unit = ctrl.hud.playerInfo.unitDock.selectedUnit; -        if (!completed && (unit != null) && (unit != activeUnit)) { +        if (hex == null) {              showEntryZone(unit);          } else if (selectedUnit != null) { -            deployUnit(Orientation.fromAdj(selectedHex, upHex)); -        } else if (!completed && (entryZone != null) && (upHex != null)) { -            if (upHex.isEmpty() && entryZone.contains(upHex)) { -                showUnit(activeUnit, upHex); +            deployUnit(Orientation.fromAdj(selectedHex, hex)); +        } else if (!completed && (entryZone != null) && (hex != null)) { +            if (hex.isEmpty() && entryZone.contains(hex)) { +                showUnit(activeUnit, hex);              }          } else { -            unit = upHex.getUnit(); +            unit = hex.getUnit();              if (deployedUnits.contains(unit)) -                showRotation(unit, upHex); +                showRotation(unit, hex);          }      } diff --git a/core/src/ch/asynk/rustanddust/game/states/StateEngage.java b/core/src/ch/asynk/rustanddust/game/states/StateEngage.java index 582e5dd..4bc3287 100644 --- a/core/src/ch/asynk/rustanddust/game/states/StateEngage.java +++ b/core/src/ch/asynk/rustanddust/game/states/StateEngage.java @@ -1,5 +1,6 @@  package ch.asynk.rustanddust.game.states; +import ch.asynk.rustanddust.game.Hex;  import ch.asynk.rustanddust.game.Unit;  import ch.asynk.rustanddust.RustAndDust; @@ -20,8 +21,7 @@ public class StateEngage extends StateCommon              map.unitsTargetShow();              if (to != null) {                  // quick fire -> replay touchUp -                upHex = to; -                touchUp(); +                touch(to);              }              selectedUnit.showAttack();              map.hexSelect(selectedHex); @@ -67,14 +67,9 @@ public class StateEngage extends StateCommon      }      @Override -    public void touchDown() +    public void touch(Hex hex)      { -    } - -    @Override -    public void touchUp() -    { -        Unit unit = upHex.getUnit(); +        Unit unit = hex.getUnit();          // activeUnit is the target, selectedTarget is the engagement leader          if (unit == selectedUnit) { @@ -82,7 +77,7 @@ public class StateEngage extends StateCommon          } else if ((activeUnit == null) && map.unitsTargetContains(unit)) {              // ctrl.hud.notify("Engage " + unit);              map.unitsTargetHide(); -            to = upHex; +            to = hex;              activeUnit = unit;              activeUnit.showTarget();              map.collectAssists(selectedUnit, activeUnit, ctrl.battle.getPlayer().units); diff --git a/core/src/ch/asynk/rustanddust/game/states/StateMove.java b/core/src/ch/asynk/rustanddust/game/states/StateMove.java index 8c3c68e..67fb673 100644 --- a/core/src/ch/asynk/rustanddust/game/states/StateMove.java +++ b/core/src/ch/asynk/rustanddust/game/states/StateMove.java @@ -30,8 +30,7 @@ public class StateMove extends StateCommon              map.collectUpdate(activeUnit);              if (to != null) {                  // quick move -> replay touchUp -                upHex = to; -                touchUp(); +                touch(to);              } else                  checkExit(activeUnit, activeUnit.getHex());          } else { @@ -92,14 +91,9 @@ public class StateMove extends StateCommon      }      @Override -    public void touchDown() +    public void touch(Hex hex)      { -    } - -    @Override -    public void touchUp() -    { -        if (upHex == activeUnit.getHex()) { +        if (hex == activeUnit.getHex()) {              if (to != null)                  map.pathHide(to);              to = null; @@ -110,19 +104,19 @@ public class StateMove extends StateCommon          int s = map.pathsSize(); -        Unit unit = upHex.getUnit(); +        Unit unit = hex.getUnit();          if (map.unitsMoveableContains(unit)) {              if(unit != activeUnit)                  changeUnit(unit); -        } else if ((s == 0) && map.movesContains(upHex)) { -            s = collectPaths(upHex); -        } else if (map.pathsContains(upHex)) { -            s = togglePoint(downHex, s); +        } else if ((s == 0) && map.movesContains(hex)) { +            s = collectPaths(hex); +        } else if (map.pathsContains(hex)) { +            s = togglePoint(hex, s);          }          if (s == 1) { -            if (!checkExit(activeUnit, upHex)) +            if (!checkExit(activeUnit, hex))                  ctrl.setState(StateType.ROTATE);          }      } diff --git a/core/src/ch/asynk/rustanddust/game/states/StatePromote.java b/core/src/ch/asynk/rustanddust/game/states/StatePromote.java index e80ebec..b991949 100644 --- a/core/src/ch/asynk/rustanddust/game/states/StatePromote.java +++ b/core/src/ch/asynk/rustanddust/game/states/StatePromote.java @@ -27,14 +27,4 @@ public class StatePromote extends StateCommon      {          return StateType.DONE;      } - -    @Override -    public void touchDown() -    { -    } - -    @Override -    public void touchUp() -    { -    }  } diff --git a/core/src/ch/asynk/rustanddust/game/states/StateReinforcement.java b/core/src/ch/asynk/rustanddust/game/states/StateReinforcement.java index 304e2b5..8c89f3b 100644 --- a/core/src/ch/asynk/rustanddust/game/states/StateReinforcement.java +++ b/core/src/ch/asynk/rustanddust/game/states/StateReinforcement.java @@ -42,18 +42,13 @@ public class StateReinforcement extends StateCommon      }      @Override -    public void touchDown() -    { -    } - -    @Override -    public void touchUp() +    public void touch(Hex hex)      {          Unit unit = ctrl.hud.playerInfo.unitDock.selectedUnit; -        if ((unit != null) && (unit != activeUnit)) +        if (hex == null)              changeUnit(unit); -        else if ((entryZone != null) && upHex.isEmpty() && entryZone.contains(upHex)) -            unitEnter(activeUnit); +        else if ((entryZone != null) && hex.isEmpty() && entryZone.contains(hex)) +            unitEnter(activeUnit, hex);          else              ctrl.setState(StateType.SELECT);      } diff --git a/core/src/ch/asynk/rustanddust/game/states/StateRotate.java b/core/src/ch/asynk/rustanddust/game/states/StateRotate.java index 2e9b520..0331cdb 100644 --- a/core/src/ch/asynk/rustanddust/game/states/StateRotate.java +++ b/core/src/ch/asynk/rustanddust/game/states/StateRotate.java @@ -2,6 +2,8 @@ package ch.asynk.rustanddust.game.states;  import ch.asynk.rustanddust.engine.Orientation; +import ch.asynk.rustanddust.game.Hex; +  import ch.asynk.rustanddust.RustAndDust;  public class StateRotate extends StateCommon @@ -77,16 +79,11 @@ public class StateRotate extends StateCommon      }      @Override -    public void touchDown() -    { -    } - -    @Override -    public void touchUp() +    public void touch(Hex hex)      {          if (rotationSet) return; -        Orientation o = Orientation.fromAdj(to, upHex); +        Orientation o = Orientation.fromAdj(to, hex);          if (o == Orientation.KEEP) {              ctrl.setState(StateType.ABORT);              return; diff --git a/core/src/ch/asynk/rustanddust/game/states/StateSelect.java b/core/src/ch/asynk/rustanddust/game/states/StateSelect.java index e2cfef8..797623c 100644 --- a/core/src/ch/asynk/rustanddust/game/states/StateSelect.java +++ b/core/src/ch/asynk/rustanddust/game/states/StateSelect.java @@ -43,23 +43,18 @@ public class StateSelect extends StateCommon      }      @Override -    public void touchDown() -    { -    } - -    @Override -    public void touchUp() +    public void touch(Hex hex)      {          if (!isEnemy) { -            if (map.movesContains(upHex)) { +            if (map.movesContains(hex)) {                  // quick move -                to = upHex; +                to = hex;                  ctrl.setState(StateType.MOVE);                  return;              } -            if (map.unitsTargetContains(upHex.getUnit())) { +            if (map.unitsTargetContains(hex.getUnit())) {                  // quick fire -                to = upHex; +                to = hex;                  ctrl.setState(StateType.ENGAGE);                  return;              } @@ -69,12 +64,12 @@ public class StateSelect extends StateCommon              map.hexUnselect(selectedHex);          hidePossibilities(); -        if (upHex.isOffMap()) { +        if (hex.isOffMap()) {              selectedUnit = null;              return;          } -        Unit unit = upHex.getUnit(); +        Unit unit = hex.getUnit();          if (unit == null) {              isEnemy = false; @@ -88,15 +83,15 @@ public class StateSelect extends StateCommon          if (!isEnemy && (unit == selectedUnit) && unit.canMove()) {              if (unit.isHq() && (map.unitsMoveableSize() > 1)) {                  ctrl.hud.notify("HQ activation"); -                select(upHex, unit, isEnemy); +                select(hex, unit, isEnemy);                  ctrl.setState(StateType.MOVE);              } else {                  // quick rotate -                to = upHex; +                to = hex;                  ctrl.setState(StateType.ROTATE);              }          } else { -            select(upHex, unit, isEnemy); +            select(hex, unit, isEnemy);              ctrl.hud.notify(selectedUnit.toString(), Position.TOP_CENTER);          }      } diff --git a/core/src/ch/asynk/rustanddust/game/states/StateWithdraw.java b/core/src/ch/asynk/rustanddust/game/states/StateWithdraw.java index a17f58b..bbdfb4c 100644 --- a/core/src/ch/asynk/rustanddust/game/states/StateWithdraw.java +++ b/core/src/ch/asynk/rustanddust/game/states/StateWithdraw.java @@ -33,16 +33,6 @@ public class StateWithdraw extends StateCommon          return StateType.ANIMATION;      } -    @Override -    public void touchDown() -    { -    } - -    @Override -    public void touchUp() -    { -    } -      private StateType withdraw(Unit unit)      {          Zone exitZone = ctrl.battle.getExitZone(unit); diff --git a/core/src/ch/asynk/rustanddust/screens/GameScreen.java b/core/src/ch/asynk/rustanddust/screens/GameScreen.java index 53f079a..6c58c1b 100644 --- a/core/src/ch/asynk/rustanddust/screens/GameScreen.java +++ b/core/src/ch/asynk/rustanddust/screens/GameScreen.java @@ -14,6 +14,7 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch;  import com.badlogic.gdx.graphics.glutils.ShapeRenderer;  import com.badlogic.gdx.math.Vector2; +import com.badlogic.gdx.math.Vector3;  import ch.asynk.rustanddust.RustAndDust; @@ -44,6 +45,8 @@ public class GameScreen implements Screen      private boolean blocked;      private float inputDelay = 0f;      private Vector2 dragPos = new Vector2(); +    private Vector3 hudTouch = new Vector3(); +    private Vector3 mapTouch = new Vector3();      public GameScreen(final RustAndDust game)      { @@ -87,8 +90,8 @@ public class GameScreen implements Screen                  int dx = (int) (dragPos.x - x);                  int dy = (int) (dragPos.y - y);                  dragPos.set(x, y); -                cam.unprojectHud(x, y, ctrl.hudTouch); -                if (!ctrl.drag(-dx, dy)) +                cam.unprojectHud(x, y, hudTouch); +                if (!ctrl.drag(hudTouch.x, hudTouch.y, -dx, dy))                      cam.translate(dx, dy);                  return true;              } @@ -98,9 +101,9 @@ public class GameScreen implements Screen                  if (blocked) return true;                  if (button == Input.Buttons.LEFT) {                      dragPos.set(x, y); -                    cam.unproject(x, y, ctrl.mapTouch); -                    cam.unprojectHud(x, y, ctrl.hudTouch); -                    ctrl.touchDown(); +                    cam.unproject(x, y, mapTouch); +                    cam.unprojectHud(x, y, hudTouch); +                    ctrl.touchDown(hudTouch.x, hudTouch.y, mapTouch.x, mapTouch.y);                  }                  return true;              } @@ -114,9 +117,9 @@ public class GameScreen implements Screen                  }                  dragged = 0;                  if (button == Input.Buttons.LEFT) { -                    cam.unproject(x, y, ctrl.mapTouch); -                    cam.unprojectHud(x, y, ctrl.hudTouch); -                    ctrl.touchUp(); +                    cam.unproject(x, y, mapTouch); +                    cam.unprojectHud(x, y, hudTouch); +                    ctrl.touchUp(hudTouch.x, hudTouch.y, mapTouch.x, mapTouch.y);                  }                  return true;              } | 
