diff src/AnimatedPointElement.java @ 161:fb33d3796942

Rename source directory.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 21 Jun 2016 12:53:53 +0300
parents game/AnimatedPointElement.java@d6d92845d6a2
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AnimatedPointElement.java	Tue Jun 21 12:53:53 2016 +0300
@@ -0,0 +1,75 @@
+/*
+ * Ristipolku animated game element
+ * (C) Copyright 2011 Matti 'ccr' Hämäläinen <ccr@tnsp.org>
+ */
+package game;
+
+import java.awt.*;
+import java.awt.geom.*;
+import java.util.*;
+import java.math.*;
+
+
+public class AnimatedPointElement
+{
+    private float stime, value, steps;
+    private IDMPoint pos;
+    private Interpolate lerpV, lerpX, lerpY;
+    boolean active, first;
+    String text;
+
+    public AnimatedPointElement(IDMPoint start, String text)
+    {
+        Random rnd = new Random();
+        steps = 100;
+
+        lerpX = new Interpolate(start.x - rnd.nextInt(100) + 50, start.x, steps);
+        lerpY = new Interpolate(start.y - rnd.nextInt(100) + 50, start.y, steps);
+        lerpV = new Interpolate(0.0f, 1.0f, steps);
+
+        pos = new IDMPoint(start);
+        active = false;
+        first = true;
+        this.text = text;
+    }
+
+    public void animate(float time)
+    {
+        if (first)
+        {
+            first = false;
+            active = true;
+            stime = time;
+        }
+
+        if (active)
+        {
+            float t = (time - stime);
+            if (t >= steps)
+            {
+                t = steps;
+                active = false;
+            }
+
+            value = lerpV.getValue(t);
+            pos.x = lerpX.getValue(t);
+            pos.y = lerpY.getValue(t);
+        }
+    }
+
+    public void paint(Graphics2D g)
+    {
+        if (!active)
+            return;
+
+        Paint psave = g.getPaint();
+//        AffineTransform tsave = g.getTransform();
+
+        g.setFont(G.fonts[2]);
+        g.setPaint(new Color(value, value, value, value));
+        g.drawString(text, pos.x, pos.y);
+
+//        g.setTransform(tsave);
+        g.setPaint(psave);
+    }
+}