summaryrefslogtreecommitdiffstats
path: root/core/src/ch/asynk/tankontank/ui/LabelStack.java
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2014-12-27 17:15:28 +0100
committerJérémy Zurcher <jeremy@asynk.ch>2014-12-27 17:15:28 +0100
commit8c4e1b6e2c1e013de9ee4ff079cc61dbf3f0591c (patch)
tree67b170fed9f5a540a266dcb680b4c7ee649eaae5 /core/src/ch/asynk/tankontank/ui/LabelStack.java
parent06462e18ec111a0662322ef221991dd0b547eded (diff)
downloadRustAndDust-8c4e1b6e2c1e013de9ee4ff079cc61dbf3f0591c.zip
RustAndDust-8c4e1b6e2c1e013de9ee4ff079cc61dbf3f0591c.tar.gz
move base ui widgets into core/src/ch/asynk/tankontank/ui
Diffstat (limited to 'core/src/ch/asynk/tankontank/ui/LabelStack.java')
-rw-r--r--core/src/ch/asynk/tankontank/ui/LabelStack.java72
1 files changed, 72 insertions, 0 deletions
diff --git a/core/src/ch/asynk/tankontank/ui/LabelStack.java b/core/src/ch/asynk/tankontank/ui/LabelStack.java
new file mode 100644
index 0000000..f730d0d
--- /dev/null
+++ b/core/src/ch/asynk/tankontank/ui/LabelStack.java
@@ -0,0 +1,72 @@
+package ch.asynk.tankontank.ui;
+
+import java.util.ArrayDeque;
+
+import com.badlogic.gdx.graphics.g2d.Batch;
+import com.badlogic.gdx.graphics.g2d.BitmapFont;
+
+import ch.asynk.tankontank.engine.gfx.Animation;
+
+public class LabelStack extends Label implements Animation
+{
+ class MsgInfo
+ {
+ String text;
+ float duration;
+ Position position;
+ MsgInfo(String text, float duration, Position position)
+ {
+ this.text = text;
+ this.duration = duration;
+ this.position = position;
+ }
+ }
+
+ private float duration;
+ private float elapsed;
+ private ArrayDeque<MsgInfo> stack;
+
+ public LabelStack(BitmapFont font, float padding)
+ {
+ super(font, padding);
+ this.visible = false;
+ this.stack = new ArrayDeque<MsgInfo>();
+ }
+
+ public void pushWrite(String text, float duration, Position position)
+ {
+ if (visible)
+ stack.push(new MsgInfo(text, duration, position));
+ else
+ write(text, duration, position);
+ }
+
+ public void write(String text, float duration, Position position)
+ {
+ this.position = position;
+ write(text, duration);
+ }
+
+ public void write(String text, float duration)
+ {
+ this.duration = duration;
+ this.visible = true;
+ this.elapsed = 0f;
+ write(text);
+ }
+
+ @Override
+ public boolean animate(float delta)
+ {
+ if (!visible) return true;
+ elapsed += delta;
+ if (elapsed >= duration) {
+ visible = false;
+ if (stack.size() > 0) {
+ MsgInfo info = stack.pop();
+ write(info.text, info.duration, info.position);
+ }
+ }
+ return false;
+ }
+}