Here\'s my problem- I\'m trying to draw a circular part of a single image.
I\'m doing some work on a top-down dungeon crawler sort of game, and I\'m attempting to m
The neatest effect for a light radius would be to use an overlay with a gradient in its alpha channel.
Something like this:
// do this once during setup
overlay = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGBA);
for (int x = 0; x < width; ++x)
{
for (int y = 0; y < height; ++y)
{
double range = 100;
double distance = Math.sqrt(Math.pow(x - width / 2, 2) + Math.pow(y - height / 2, 2));
int value = Math.max(100, (int)Math.round(255 - 100 * distance / range));
overlay.setRGB(x, y, new Color(0, 0, 0, value));
}
}
....
// do this every frame
gfx.drawImage(overlay, 0, 0, null);
I did not compile this so it's probably full of errors!
If you want some "flicker" in it you can generate several maps, and add some noise to the alpha values. Or even tune the colors so you get warmer light.