summaryrefslogtreecommitdiffstats
path: root/core/src/ch/asynk/rustanddust/game/hud
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/ch/asynk/rustanddust/game/hud')
-rw-r--r--core/src/ch/asynk/rustanddust/game/hud/PlayerInfo.java8
-rw-r--r--core/src/ch/asynk/rustanddust/game/hud/UnitDock.java18
2 files changed, 25 insertions, 1 deletions
diff --git a/core/src/ch/asynk/rustanddust/game/hud/PlayerInfo.java b/core/src/ch/asynk/rustanddust/game/hud/PlayerInfo.java
index dd77c8e..ab8fe79 100644
--- a/core/src/ch/asynk/rustanddust/game/hud/PlayerInfo.java
+++ b/core/src/ch/asynk/rustanddust/game/hud/PlayerInfo.java
@@ -134,6 +134,14 @@ public class PlayerInfo implements Disposable, Drawable, Animation
turns.blocked = blocked;
}
+ public boolean drag(float x, float y, int dx, int dy)
+ {
+ if (!unitDock.hit(x, y))
+ return false;
+ unitDock.drag(dx, dy);
+ return true;
+ }
+
public boolean touchDown(float x, float y)
{
hit = null;
diff --git a/core/src/ch/asynk/rustanddust/game/hud/UnitDock.java b/core/src/ch/asynk/rustanddust/game/hud/UnitDock.java
index 4e708c4..10d604e 100644
--- a/core/src/ch/asynk/rustanddust/game/hud/UnitDock.java
+++ b/core/src/ch/asynk/rustanddust/game/hud/UnitDock.java
@@ -29,6 +29,7 @@ public class UnitDock extends Bg implements Animation
private float y;
private float to;
private float dx;
+ private float dy;
private float step;
private boolean show;
private boolean mvtDone;
@@ -55,6 +56,7 @@ public class UnitDock extends Bg implements Animation
this.selected = new Sprite(selected);
this.visible = false;
this.dx = 0f;
+ this.dy = 0f;
}
@Override
@@ -72,7 +74,7 @@ public class UnitDock extends Bg implements Animation
private void compute()
{
transform.idt();
- transform.translate((rect.x + dx), (rect.y + rect.height), 0).scale(SCALE, SCALE, 0).translate(-rect.x, - (rect.y + rect.height), 0);
+ transform.translate((rect.x + dx), (rect.y + dy + rect.height), 0).scale(SCALE, SCALE, 0).translate(-rect.x, - (rect.y + rect.height), 0);
point.set(rect.x, rect.y, 0).mul(transform);
scaledRect.x = point.x;
scaledRect.y = point.y;
@@ -107,6 +109,16 @@ public class UnitDock extends Bg implements Animation
return (visible && scaledRect.contains(x, y));
}
+ public void drag(int dx, int dy)
+ {
+ this.dy += dy;
+ if ((rect.y + this.dy + rect.height) < y)
+ this.dy = (y - rect.height - rect.y);
+ else if (scaledRect.y > SCISSORS_BOTTOM)
+ this.dy -= (scaledRect.y - SCISSORS_BOTTOM);
+ compute();
+ }
+
public Unit select(float x, float y)
{
int i = (int) ((scaledRect.y + scaledRect.height - y) / (scaledRect.height / units.size()));
@@ -129,6 +141,10 @@ public class UnitDock extends Bg implements Animation
{
if (!resize())
return;
+ if (dy != 0) {
+ dy = 0;
+ compute();
+ }
to = position.getX(rect.width * SCALE);
show = true;