import Sprite;
import java.awt.*;
import java.io.*;
import Raster;

class AnimatedSprite extends Sprite {
  int frames; // frames in sprite
  Image myimages;
  int trackarray[][];
  int currenttrack[];
  int currentframe;
  int framenum;
  int dx, dy;
  int ticks;
  int framewidth, frameheight;
  Raster current;

  // constructors

  public AnimatedSprite(Image images, int numFrames, int numTracks) {
    super(images);
    frames = numFrames;
    trackarray = new int[numTracks][];
    myimages = images;
    framewidth = width / frames;
    frameheight = height;
    dx = 0;
    dy = 0;
    ticks = 10;
    current = new Raster(framewidth, frameheight);
  } // end constructor

  // methods

  public void addTrack(int trackNum, int track[]) {
    trackarray[trackNum] = track;
  } // end addTrack

  public void Draw(Raster bgnd) {
    int a = 0;
    int b = 0;
    for (int i = 0; i < current.pixel.length; i++) {
      boolean isSet = bgnd.setPixel(current.pixel[i], x + a, y + b);
      if (a == width - 1) {
        a = 0;
        b++;
      }
    }
  } // end Draw

  public void setDxDy(int x, int y) {
    dx = x;
    dy = y;
  }

  public void nextFrame() {
    framenum++;
    if (framenum == currenttrack.length)
      framenum = 0;
    currentframe = currenttrack[framenum];
    setNewRaster(currentframe);
  } // end nextFrame

  public void setNewRaster(int frame) {
    int a = 0;
    int b = 0;
    for (int i = 0; i < framewidth * frameheight; i++) {
      boolean isSet = current.setPixel(pixel[(framewidth *
					      frameheight * (frame - 1)) + i],
				       a, b);
      if (a == framewidth - 1) {
	a = 0;
	b++;
      }
    }
  } // end setNewRaster

  public void setTrack(int t) {
    currenttrack = trackarray[t];
    framenum = 0;
    currentframe = currenttrack[framenum];
    setNewRaster(currentframe);
  } // end setTrack

} // end AnimatedSprite
