import java.applet.*;
import java.awt.*;
import Raster;
import Sprite;
import Playfield;

public class Playtest extends Applet {
    Sprite currentSprite;
    Sprite kong1;
    Sprite teapot;
    Playfield wave;
    int count;

    public void init()
    {
        String filename = getParameter("image");
	String filename2 = getParameter("image2");
	String bg = getParameter("background");
        showStatus("Using " + filename + bg);
	
	//make the sprites and playfield
	Image bgi = getImage(getDocumentBase(), bg);
        //	System.out.println("Got bgi");


	Image ski1 = getImage(getDocumentBase(), filename);
	//if(ski1 == null)System.out.println("ski1 is null");

	Image ski2 = getImage(getDocumentBase(), filename2);

        wave = new Playfield(bgi, 2); 
	

	kong1 = new Sprite(ski1);
	teapot = new Sprite(ski2);

	teapot.Move(100,100);


	currentSprite = null;
	wave.addSprite(0, kong1);
	wave.addSprite(1, teapot);
	wave.Draw();

    }

    public void paint(Graphics g)
    {

        showStatus("Image size: " + wave.getWidth() + " x " + wave.getHeight());
	if(wave != null){
        

	  Image output = wave.toImage();
	  g.drawImage(output, 0, 0, this);
	}
    }

    public void update(Graphics g)
    {
        paint(g);
    }


  /*
  public boolean mouseClick(Event e, int x, int y){
    for (int i = 0; i < wave.sprites.length-1; i++){
      if (!(wave.sprites[i].Pixel_trans(x,y))){
	System.out.println("not transparent");
	return true;
      }
    }
	System.out.println("transparent");
	return true;
  }
  */




    public boolean mouseDown(Event e, int x, int y){
      // System.out.println("mouseDown");
      Sprite tempSprite;

      
      boolean transFlag1;
      boolean transFlag0;
      /*
	transFlag = false
      for (int i = wave.sprites.length-1; i>=0; i--){
	if (wave.sprites[i].Contained (x,y)){
	transFlag= (transFlag || wave.sprites[i].Transparent(x,y));
	}
      }

      */

      transFlag0 = wave.sprites[0].Transparent(x,y);
      transFlag1 = wave.sprites[1].Transparent(x,y);

      if (transFlag0 ||transFlag1){
	System.out.println("transparent");
      }else{
	System.out.println("not transparent");
      }
      /*
	if (transFlag0){
	System.out.println("0: transparent");
      }else{
	System.out.println("0: not transparent");
      }
      
     if (transFlag1){
	System.out.println("1: transparent");
      }else{
	System.out.println("1: not transparent");
      }
      */
      
      for (int k= wave.sprites.length -1; k>= 0; k--){  //check for sprite selection 
	//System.out.println(k);

						       
	if (wave.sprites[k].Contained (x,y)&& (!wave.sprites[k].Transparent(x,y))){
	  currentSprite = wave.sprites[k];  //true, select sprite
	  // System.out.println("selected sprite");
	  break;  //break out of for-loop once one is found
	    }
      }
      
      if (currentSprite ==null)
	return true;
      

      if (currentSprite != wave.sprites[1]){  //draw the current sprite last
	tempSprite = wave.sprites[1];   //swap elts in sprites array
	wave.sprites[1] = currentSprite;
	wave.sprites[0] = tempSprite;
      }
      return true;
    }
 
  public boolean mouseUp(Event e, int x, int y)
  {
    if ((x <= 0)||(y <= 0)){
      return true;
    }

    if ((x >= wave.getWidth())||(y >= wave.getHeight()-3)){
      return true;
    }

    
    if (!(currentSprite == null)){
      
      currentSprite.Move(x-50,y-50);
      
      currentSprite = null;
      
      wave.Draw();             //redraw the new sprite position
      
      repaint();
    }
  
    return true;
  }
}

