Mercurial > hg > ristipolku
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); + } +}