import java.awt.*;
import java.awt.image.*;

public class Sprite extends transRaster {
   	int x, y;           // current position of sprite on playfield
   	Image image;
   	public int x1;		//support for frames
   	public int x2;		//support for frames
   	public int y1;		//support for frames
   	public int y2;		//support for frames
         
   	public Sprite(Image image) {         // initialize sprite with an image
    	super(image);
    	this.image = image;
    	x1=0;
    	y1=0;
    	x2 = getWidth()-1;
    	y2 = getHeight()-1;
	}
	
	public void setX(int x) {
		this.x = x;
	}
	public void setY(int y) {
		this.y = y;
	}
	public int getX() {
		return x;
	}
	public int getY() {
		return y;
	}
   
	public void Draw(Raster bgnd) {
		//figure out our bounds for our for loops.
		int spriteStartX = x1;
		int spriteStartY = y1;
		int spriteEndX = x2;
		int spriteEndY = y2;
		
		int width = spriteEndX - spriteStartX;
		
		int startX = x;
		int startY = y;
		
    	int backWidth = 0;
    	backWidth = bgnd.getWidth()-1;
    	int backHeight = 0;
    	backHeight = bgnd.getHeight()-1;

	    if ((width + startX) > backWidth) {
	    	spriteEndX = spriteStartX + (backWidth - startX - 1);
	    }
	    if ((getHeight() + startY) > backHeight) {
	        spriteEndY = spriteStartY + ( backHeight - startY - 1) ;
	    }
	    if (startX < 0) {
	    	spriteStartX += (0 - startX);
	    	startX = 0;
	    }
	    if (startY < 0) {
	    	spriteStartY += (0 - startY);
	    	startY = 0;
	    }
	    for (int countX = spriteStartX; countX <= spriteEndX; countX++) {
	    	for (int countY = spriteStartY; countY <= spriteEndY; countY++) {
	    		int thisPixel = getPixel(countX,countY);
	    		if (thisPixel != transColor) {
	    			bgnd.setPixel(thisPixel,
		    					  startX+countX-spriteStartX,
		    					  startY+countY-spriteStartY
	    						 );
	    		}
	    	}
	    }
    }
}
