changeset 125:054dd486ea84

Add animated point element class.
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 24 Nov 2011 19:46:09 +0200
parents fa1b86b632aa
children c4d0ceec99ef
files game/AnimatedPointElement.java
diffstat 1 files changed, 78 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/game/AnimatedPointElement.java	Thu Nov 24 19:46:09 2011 +0200
@@ -0,0 +1,78 @@
+/*
+ * 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
+{
+    float stime, value;
+    IDMPoint pos;
+    Interpolate lerpV, lerpX, lerpY;
+    boolean active, first;
+    String text;
+    
+    public AnimatedPointElement(IDMPoint p0, IDMPoint p1, float steps, String text)
+    {
+        lerpX = new Interpolate(p0.x, p1.x, steps);
+        lerpY = new Interpolate(p0.y, p1.y, steps);
+        lerpV = new Interpolate(1, 0, steps);
+
+
+        System.out.print("AnimatedPointElement("+ p0 +", "+p1+", "+ steps +", '"+ text +"')\n");
+        System.out.print("lerpX="+lerpX+"\n");
+
+        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) / 10.0f;
+            if (t >= 1.0f)
+            {
+                t = 1.0f;
+                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();
+        Composite csave = g.getComposite();
+
+//        g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, typeValue));
+        g.setFont(G.fonts[0]);
+        g.setPaint(new Color(1.0f, 1.0f, 1.0f, value));
+        g.drawString(text, pos.x, pos.y); 
+
+        g.setTransform(tsave);
+        g.setComposite(csave);
+        g.setPaint(psave);
+    }
+}