view 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 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();

        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);
    }
}