Mercurial > hg > ristipolku
view game/AnimatedPointElement.java @ 139:be9cc2ee3c16
Minor fixes in updating logic.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 25 Nov 2011 11:05:36 +0200 |
parents | 4c0dec72e2f0 |
children | 5eea4719b429 |
line wrap: on
line source
/* * 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(); Composite csave = g.getComposite(); // g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, typeValue)); g.setFont(G.fonts[2]); g.setPaint(new Color(value, value, value, value)); g.drawString(text, pos.x, pos.y); g.setTransform(tsave); g.setComposite(csave); g.setPaint(psave); } }