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

public class Rastest extends Applet{
  int count;
  int curSpriteInt;
  Sprite curSprite;
  Sprite eye1sp;
  Sprite eye2sp;
  Sprite bignosesp;
  Sprite eyelashessp;
  Sprite glassessp;
  Sprite hatsp;
  Sprite left_earsp;
  Sprite lipssp;
  Sprite right_earsp;
  Sprite smallnosesp;
  Sprite teethsp;
  Playfield field;

  public void init()
    {
        String eye1 = getParameter("eye1");
	String eye2 = getParameter("eye2");
	String bignose = getParameter("bignose");
	String eyelashes = getParameter("eyelashes");
	String glasses = getParameter("glasses");
	String hat = getParameter("hat");
	String left_ear = getParameter("left-ear");
	String lips = getParameter("lips");
	String right_ear = getParameter("right-ear");
	String smallnose = getParameter("smallnose");
	String teeth = getParameter("teeth");
	String bg = getParameter("background");
        showStatus("Using lots of stuff");

	Image bgimage = getImage(getDocumentBase(), bg);
	Image eye1i = getImage(getDocumentBase(), eye1);
	Image eye2i = getImage(getDocumentBase(), eye2);
	Image bignosei = getImage(getDocumentBase(), bignose);
	Image eyelashesi = getImage(getDocumentBase(), eyelashes);
	Image glassesi = getImage(getDocumentBase(), glasses);
	Image hati = getImage(getDocumentBase(), hat);
	Image left_eari = getImage(getDocumentBase(), left_ear);
	Image lipsi = getImage(getDocumentBase(), lips);
	Image right_eari = getImage(getDocumentBase(), right_ear);
	Image smallnosei = getImage(getDocumentBase(), smallnose);
	Image teethi = getImage(getDocumentBase(), teeth);
	
        field = new Playfield(bgimage, 11);
        eye1sp = new Sprite(eye1i);
	eye2sp = new Sprite(eye2i);
	bignosesp = new Sprite(bignosei);
	eyelashessp = new Sprite(eyelashesi);
	glassessp = new Sprite(glassesi);
	hatsp = new Sprite(hati);
	left_earsp = new Sprite(left_eari);
	lipssp = new Sprite(lipsi);
	right_earsp = new Sprite(right_eari);
	smallnosesp = new Sprite(smallnosei);
	teethsp = new Sprite(teethi);

        eye2sp.Move(50, 0);
        bignosesp.Move(100, 0);
        eyelashessp.Move(200, 0);
        glassessp.Move(300, 0);
        hatsp.Move(0, 100);
        left_earsp.Move(0, 200);
        lipssp.Move(0, 300);
        right_earsp.Move(0, 400);
        smallnosesp.Move(0, 500);
        teethsp.Move(0, 600);

	curSprite = null;

	field.addSprite(0, eye1sp);
	field.addSprite(1, eye2sp);
	field.addSprite(2, bignosesp);
	field.addSprite(3, eyelashessp);
	field.addSprite(4, glassessp);
	field.addSprite(5, hatsp);
	field.addSprite(6, left_earsp);
	field.addSprite(7, lipssp);
	field.addSprite(8, right_earsp);
	field.addSprite(9, smallnosesp);
	field.addSprite(10, teethsp);
	
	field.Draw();
    }

  public void paint(Graphics g)
    {

      if(field != null) {
	Image output = field.toImage();
	g.drawImage(output, 0, 0, this);
      }
    }

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

  public boolean mouseDown(Event e, int x, int y) {
    showStatus("got mouseDown event");

    boolean trans = false;
    for (int i = field.numSprites() - 1;i>=0;i--) {
      trans = (trans || field.sprites[i].Transparent(x, y));
    }
    System.out.println("Transparent pixel was clicked? " + trans);

    //System.out.println(field.numSprites());
    for (int i = field.numSprites() - 1;i>=0;i--) {
      if (field.sprites[i].Hit(x, y) && !field.sprites[i].Transparent(x, y)) {
	curSprite = field.sprites[i];
	curSpriteInt = i;
	break;
      }
    }
      
    return true;

  }

  public boolean mouseUp(Event e, int x, int y)
    {
      if (!(curSprite == null)) {
	curSprite.Move(x, y);
	field.moveToFront(curSpriteInt);
	curSprite = null;
	field.Draw();
	repaint();
      }
       return true;
    }
}
