import java.awt.*;
import java.awt.image.*;
import java.util.Vector;
import java.util.*;

class AnimatedSprite extends Sprite
{
    class States
    {  public int frame_num;
       public int ticks;
       public int dx;
       public int dy;
       
       public States (int frame, int ticks, int dx, int dy)
       {
         this.frame_num=frame;
         this.ticks=ticks;
         this.dx=dx;
         this.dy=dy;
       }
    }
    
    int frame;  // frames in sprite
    int state;  // states in a animated sprite
    int current_state;
    Vector states;
    Vector frames;
    int ticker;
    /* 
    */
    public AnimatedSprite(Image image, int frames)
    {  
       super(image);
       int i, j, k, value; 
       int imagex=0;
       Sprite frameto;
       fwidth=width/frames;
       fheight=height;
       for (i=0; i<frames; i++)
       {
        this.frames.addElement(new Sprite(image));
         for(j=0; j<fheight;j++)  
         {
           for(k=0; k<fwidth;k++)
           {
            int fix2=10;
            frameto=(Sprite)this.frames.elementAt(i);
            int fix=10;
            frameto.setPixel(super.getPixel(imagex,j),k,j);
            imagex++;
           }
           imagex-=fwidth
           ;
         }
         imagex+=fwidth;  
       }
       current_state=0;
    }
    
    public void addState(int track, int frame, int ticks, int dx, int dy)
    {  
      states.addElement(new States(frame, ticks, dx, dy));
    }
    public void Draw(Raster bgnd)
    {
        States cur_state=(States)states.elementAt(current_state);
        Sprite current_frame=(Sprite)frames.elementAt(cur_state.frame_num);
        current_frame.set_location(x+frame*width,y);
        current_frame.Draw(bgnd);
      }    
        
    public void nextState()
    {
        States cur_state;
        if (ticker==0) 
        {
            cur_state= (States)states.elementAt(current_state);
            ticker=cur_state.ticks;
            current_state++;
            if (current_state>=states.size())
             current_state=0;
        }
        else 
            ticker--;
    }
}