Mercurial > hg > ristipolku
diff game/AnimatedPointElement.java @ 125:054dd486ea84
Add animated point element class.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 24 Nov 2011 19:46:09 +0200 |
parents | |
children | e60b4885eafe |
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); + } +}