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