summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2015-12-19 18:51:36 +0100
committerJérémy Zurcher <jeremy@asynk.ch>2015-12-19 18:52:34 +0100
commitbfdcabc73be8b8d4df7207d3ea030091e693a886 (patch)
tree966ff1afaae1547e44a3601b42efdf1ea334f519
parentcdb78a4dd7f117d6fdcd1b84ba057db9e4ba81ac (diff)
downloadRustAndDust-bfdcabc73be8b8d4df7207d3ea030091e693a886.zip
RustAndDust-bfdcabc73be8b8d4df7207d3ea030091e693a886.tar.gz
Hud: replace touchUp + touchDown with hit(int, int)
-rw-r--r--core/src/ch/asynk/rustanddust/game/Ctrl.java5
-rw-r--r--core/src/ch/asynk/rustanddust/game/Hud.java52
-rw-r--r--core/src/ch/asynk/rustanddust/game/hud/ActionButtons.java29
-rw-r--r--core/src/ch/asynk/rustanddust/game/hud/PlayerInfo.java46
4 files changed, 24 insertions, 108 deletions
diff --git a/core/src/ch/asynk/rustanddust/game/Ctrl.java b/core/src/ch/asynk/rustanddust/game/Ctrl.java
index b9520ff..024bd02 100644
--- a/core/src/ch/asynk/rustanddust/game/Ctrl.java
+++ b/core/src/ch/asynk/rustanddust/game/Ctrl.java
@@ -103,7 +103,7 @@ public class Ctrl implements Disposable
{
boolean inAnimation = (this.stateType == StateType.ANIMATION);
- if (!blockHud && hud.touchDown(hudTouch.x, hudTouch.y, inAnimation))
+ if (!blockHud && hud.hit(hudTouch.x, hudTouch.y, inAnimation))
return;
if (!blockMap && state.downInMap(mapTouch.x, mapTouch.y))
@@ -112,9 +112,6 @@ public class Ctrl implements Disposable
public void touchUp()
{
- if (!blockHud && hud.touchUp(hudTouch.x, hudTouch.y))
- return;
-
if (!blockMap && state.upInMap(mapTouch.x, mapTouch.y))
state.touchUp();
}
diff --git a/core/src/ch/asynk/rustanddust/game/Hud.java b/core/src/ch/asynk/rustanddust/game/Hud.java
index a90507f..1e869f4 100644
--- a/core/src/ch/asynk/rustanddust/game/Hud.java
+++ b/core/src/ch/asynk/rustanddust/game/Hud.java
@@ -33,8 +33,6 @@ public class Hud implements Disposable, Animation
private final RustAndDust game;
private final Ctrl ctrl;
- private Object hit;
-
public PlayerInfo playerInfo;
public ActionButtons actionButtons;
@@ -184,19 +182,17 @@ public class Hud implements Disposable, Animation
return playerInfo.drag(x, y, dx, dy);
}
- public boolean touchDown(float x, float y, boolean isInAnimation)
+ public boolean hit(float x, float y, boolean isInAnimation)
{
- hit = null;
-
if (optionsBtn.hit(x, y)) {
- hit = optionsBtn;
+ toggleOptionsPanel();
return true;
}
if (dialogs.size() > 0) {
Widget dialog = dialogs.peek();
if (dialog.hit(x, y)) {
- hit = dialog;
+ closeDialog();
return true;
}
return false;
@@ -205,46 +201,12 @@ public class Hud implements Disposable, Animation
if (isInAnimation)
return false;
- if (hit == null) {
- if (actionButtons.touchDown(x, y))
- hit = actionButtons;
- else if (playerInfo.touchDown(x, y))
- hit = playerInfo;
- }
-
- return (hit != null);
- }
-
- public boolean touchUp(float x, float y)
- {
- if (hit == null)
- return false;
-
- if (hit == optionsBtn) {
- if (optionsBtn.hit(x, y))
- toggleOptionsPanel();
+ if (actionButtons.hit(x, y))
+ return true;
+ else if (playerInfo.hit(x, y))
return true;
- }
-
- if (dialogs.size() > 0) {
- Widget dialog = dialogs.peek();
- if (hit == dialog) {
- if (dialog.hit(x, y))
- closeDialog();
- hit = null;
- }
- } else {
- if (hit == actionButtons) {
- actionButtons.touchUp(x, y);
- }
- else if (hit == playerInfo) {
- playerInfo.touchUp(x, y);
- }
-
- hit = null;
- }
- return true;
+ return false;
}
private void closeDialog()
diff --git a/core/src/ch/asynk/rustanddust/game/hud/ActionButtons.java b/core/src/ch/asynk/rustanddust/game/hud/ActionButtons.java
index ef15222..51ba8a0 100644
--- a/core/src/ch/asynk/rustanddust/game/hud/ActionButtons.java
+++ b/core/src/ch/asynk/rustanddust/game/hud/ActionButtons.java
@@ -35,7 +35,6 @@ public class ActionButtons extends Widget
}
private Sprite bg;
- private int idx;
private Bg buttons [];
private StateType states [];
@@ -45,7 +44,6 @@ public class ActionButtons extends Widget
this.ctrl = game.ctrl;
this.visible = false;
this.position = Position.BOTTOM_RIGHT;
- this.idx = Buttons.NONE.i;
this.buttons = new Bg[Buttons.LAST.i];
this.buttons[Buttons.DONE.i] = new Bg(game.factory.getHudRegion(game.factory.ACT_DONE));
@@ -130,38 +128,19 @@ public class ActionButtons extends Widget
this.visible = true;
}
- public boolean touchDown(float x, float y)
+ public boolean hit(float x, float y)
{
- idx = Buttons.NONE.i;
-
if (!super.hit(x,y))
return false;
for (int i = 0; i < Buttons.LAST.i; i++) {
if (buttons[i].hit(x, y)) {
- idx = i;
- break;
+ ctrl.setState(states[i]);
+ return true;
}
}
- return (idx != Buttons.NONE.i);
- }
-
- public boolean touchUp(float x, float y)
- {
- if (idx == Buttons.NONE.i)
- return false;
-
- boolean ret = false;
-
- if (super.hit(x,y) && buttons[idx].hit(x, y)) {
- ctrl.setState(states[idx]);
- ret = true;
- }
-
- idx = Buttons.NONE.i;
-
- return ret;
+ return false;
}
@Override
diff --git a/core/src/ch/asynk/rustanddust/game/hud/PlayerInfo.java b/core/src/ch/asynk/rustanddust/game/hud/PlayerInfo.java
index a7dea32..ab5c368 100644
--- a/core/src/ch/asynk/rustanddust/game/hud/PlayerInfo.java
+++ b/core/src/ch/asynk/rustanddust/game/hud/PlayerInfo.java
@@ -22,8 +22,6 @@ public class PlayerInfo implements Disposable, Drawable, Animation
private final Ctrl ctrl;
- private Object hit;
-
private Bg flag;
private Bg usFlag;
private Bg geFlag;
@@ -136,43 +134,23 @@ public class PlayerInfo implements Disposable, Drawable, Animation
return true;
}
- public boolean touchDown(float x, float y)
- {
- hit = null;
-
- if (reinforcement.hit(x, y))
- hit = reinforcement;
- else if (unitDock.hit(x, y))
- hit = unitDock;
- else if (turns.hit(x,y))
- hit = turns;
-
- return (hit != null);
- }
-
- public boolean touchUp(float x, float y)
+ public boolean hit(float x, float y)
{
- if (hit == null)
- return false;
-
- if (hit == turns) {
- if (turns.hit(x, y))
- ctrl.hud.askEndOfTurn();
+ if (turns.hit(x, y)) {
+ ctrl.hud.askEndOfTurn();
+ return true;
}
- else if (hit == reinforcement) {
- if (reinforcement.hit(x, y))
- ctrl.reinforcementHit();
+ else if (reinforcement.hit(x, y)) {
+ ctrl.reinforcementHit();
+ return true;
}
- else if (hit == unitDock) {
- if (unitDock.hit(x, y)) {
- ctrl.hud.notify(unitDock.select(x, y).toString(), Position.TOP_CENTER);
- ctrl.showEntryZone();
- }
+ else if (unitDock.hit(x, y)) {
+ ctrl.hud.notify(unitDock.select(x, y).toString(), Position.TOP_CENTER);
+ ctrl.showEntryZone();
+ return true;
}
- hit = null;
-
- return true;
+ return false;
}
@Override