package com.weem.epicinventor.pixelize;
import com.weem.epicinventor.*;
import com.weem.epicinventor.actor.*;
import com.weem.epicinventor.utility.Rand;
import java.awt.*;
import java.awt.image.*;
import java.util.*;
public class PixelizeManager extends Manager {
private ArrayList<Pixelize> pixelizes;
public PixelizeManager(GameController gc, Registry rg) {
super(gc, rg);
pixelizes = new ArrayList<Pixelize>();
}
public void pixelize(BufferedImage image, int mapX, int mapY) {
pixelize(image, mapX, mapY, 5);
}
public void pixelize(BufferedImage image, int mapX, int mapY, int pixelSize) {
if (image != null) {
int width = image.getWidth();
int height = image.getHeight();
for (int y = 0; y < height; y += pixelSize) {
for (int x = 0; x < width; x += pixelSize) {
int pixelizeX = x;
int pixelizeY = y;
int pixelizeWidth = pixelSize;
int pixelizeHeight = pixelSize;
float velocityX = Rand.getFloat() + 0.25f;
float velocityY = ((float) Rand.getRange(2, 5)) + Rand.getFloat() + 0.05f;
if (Rand.getRange(0, 1) == 1) {
velocityX *= -1;
}
if (Rand.getRange(0, 1) == 1) {
velocityY *= -1;
}
if (width - x < pixelSize) {
pixelizeWidth = width - x;
pixelizeX = x - pixelSize + pixelizeWidth;
}
if (height - y < pixelSize) {
pixelizeHeight = height - y;
pixelizeY = y - pixelSize + pixelizeHeight;
}
BufferedImage tmpImage = image.getSubimage(x, y, pixelizeWidth, pixelizeHeight);
Pixelize pixelize = new Pixelize(this, registry, tmpImage, mapX + pixelizeX, mapY + height - pixelizeY - pixelSize, velocityX, velocityY);
pixelizes.add(pixelize);
}
}
}
}
@Override
public void update() {
super.update();
Pixelize pixelize = null;
for (int i = 0; i < pixelizes.size(); i++) {
pixelize = pixelizes.get(i);
pixelize.update();
if (pixelize.isDirty) {
pixelizes.remove(i);
}
}
}
public void render(Graphics g) {
Pixelize pixelize = null;
for (int i = 0; i < pixelizes.size(); i++) {
pixelize = pixelizes.get(i);
pixelize.render(g);
}
}
}