/** * File: GroundDamage.java * Author: Brian Borowski * Date created: January 14, 2013 * Date last modified: January 21, 2013 */ import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RadialGradientPaint; import java.awt.RenderingHints; import java.awt.geom.Ellipse2D; import java.awt.geom.Point2D; import java.util.Timer; import java.util.TimerTask; public class GroundDamage { private int xPos, yPos; private boolean isFireExtinguished; private Timer timer; private RadialGradientPaint radialGradientPaint; private static final Image fireImage; private static final int fireWidth, fireHeight, ellipseHeight = 10; private static final Color BROWN = new Color(60, 54, 12); static { fireImage = Utility.getImage("images/small_fire.png"); fireWidth = fireImage.getWidth(null); fireHeight = fireImage.getHeight(null); } class ExtinguishFireTask extends TimerTask { public void run() { isFireExtinguished = true; } } public GroundDamage(final int x, final int y) { xPos = x; yPos = y; isFireExtinguished = false; timer = new Timer(); timer.schedule(new ExtinguishFireTask(), 1 * 500); Point2D center = new Point2D.Float(xPos, y + (fireHeight >> 1) + (ellipseHeight >> 1)); float[] dist = { 0.0f, 1.0f }; Color[] colors = { Color.BLACK, BROWN }; radialGradientPaint = new RadialGradientPaint(center, fireWidth >> 1, dist, colors); } public int getYPos() { return yPos; } public void paintComponent(final Graphics g) { Graphics2D g2d = (Graphics2D)g; if (isFireExtinguished) { g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); g2d.setPaint(radialGradientPaint); Ellipse2D ellipse = new Ellipse2D.Float(xPos - (fireWidth >> 1), yPos + ellipseHeight + 2, fireWidth, ellipseHeight); g2d.fill(ellipse); g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); } else { g2d.drawImage(fireImage, xPos - (fireWidth >> 1), yPos, null); } } }