import java.awt.*;
import java.awt.image.*;

public class Playfield extends Raster
{	
	private Sprite sprite[] = new Sprite[25];
	private int numSprites = 0;
	
	private int buffer[][];
	private int bufferNumber;
	
	private int selectedSprite;
	private int startX, startY;
	
	Playfield(int x, int y)
	{
		super(x, y);
		
		selectedSprite = -1;
		
		bufferNumber = 0;
		
		buffer = new int[10][width * height];
		
		pixel = buffer[bufferNumber];
	}

	public boolean mouseDown(Event e, int x, int y)
	{
		int i;
		
		if (selectedSprite < 0)
		{
			for (i = (numSprites - 1); i > 0; i--)
			{
				if (sprite[i].existsAt(x, y))
				{
					selectedSprite = i;
					startX = x;
					startY = y;
					break;
				}
			}
		}
		else
		{
			selectedSprite = -1;
		}
		return true;
	}
		
	public boolean mouseMove(Event e, int x, int y)
	{
		if (selectedSprite > 0)
		{
			sprite[selectedSprite].shiftx(x - startX);
			sprite[selectedSprite].shifty(y - startY);
			startX = x; startY = y;
		} 		
		return true;
	}
			
	public void updateSprites()
	{
		int i;
		long thisTime = System.currentTimeMillis();
		
		//  fill(Color.red);

		for (i = 0; i < numSprites; i++)
		{
			sprite[i].drawSelf(this);
			sprite[i].updateSelf(this, thisTime);
		}
	}	
	
	public void addSprite(Sprite s)
	{
		sprite[numSprites] = s;
		numSprites++;
	}
	
	public Image toImage()
	{
		Toolkit toolkit = Toolkit.getDefaultToolkit();

		Image img = toolkit.createImage(new MemoryImageSource(width, height, pixel, 0, width));

		bufferNumber++;
		if (bufferNumber > 9) bufferNumber = 0;
		pixel = buffer[bufferNumber];
				
		return img;
	}
}