# HG changeset patch # User Matti Hamalainen # Date 1322156769 -7200 # Node ID 054dd486ea841539f8439501126c9dff1e07075c # Parent fa1b86b632aa6150599a4c21173ad3fdf6bab9a3 Add animated point element class. diff -r fa1b86b632aa -r 054dd486ea84 game/AnimatedPointElement.java --- /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 + */ +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); + } +}