import java.awt.*;
import java.lang.*;

public class Sprite extends Raster {
  
  private int xSprite;
  private int ySprite;
    
  
  ///////  CONSTRUCTORS /////////////////////////////  
  
  // zero argument constructor for future expansion 
  public Sprite() {;}

  
  // constructor using Image 
  public Sprite( Image imgSprite ) {
    super( imgSprite );	
  }	
  
  /////////  METHODS  ////////////////////////////
  
  //	to set x and y of sprite 		
  public void setxySprite( int x, int y ) {
    xSprite = x; ySprite = y;
    return;
  }


  public int getxSprite() {
    return xSprite;
  }

 
 public int getySprite() {
    return ySprite;
  }
 
   
 public void Draw( Raster bgnd ) {
   int bgndHeight = bgnd.getHeight();
   int bgndWidth =  bgnd.getWidth();
    for( int y=0; y< bgndHeight; y++ ) {
      for( int x=0; x< bgndWidth; x++ ) {
	if( isThereSpritePixelAtBkgndXY( x, y ) ) {
	  if( isSpritePixelAtBkgndXYTransparent( x,y) ){
	    ;
	  }
	  else {
	    bgnd.setPixel( this.getPixel( (x-xSprite), (y-ySprite) ), x, y);
	  }
	}  
      } // FOR X	
    } // FOR Y
    return;
  } // DRAW METHOD
  

  public Image DrawItself(Component c){
    return toImage(c);
  }

  
  public boolean  isThereSpritePixelAtBkgndXY( int x, int y ) {
    int u = x - xSprite;
    int v = y - ySprite;
    if( (u >= 0) && (v >= 0) && (u < this.width) && (v < this.height)  ) {
      return true;
    }
    else{
      return false;
    }
  } //ISTHERE 


  public boolean  isSpritePixelAtBkgndXYTransparent( int x, int y ) {
    int u = x - xSprite;
    int v = y - ySprite;
    int pix = this.getPixel(u,v) >> 24;
    if( pix == 0 )
      return true;
    else
      return false;
  } //ISTRANSPARENT 


     
} // CLASS SPRITE
