/*
* all applets in introduction.htm appletTag=0..2 start here 
*  applets in mapOfEarth.htm appletTag=3..4
* applet in RepOfSurface.htm appletTag=5
*/
//import java.awt.*;
import primitives.machines.CircularMotion;
import primitives.spaces.*;
import primitives.frames.Frames ;
import java.awt.Dimension;
public class OneLegController extends Frames {
	protected CircleSpace machine = null;
	protected CircleSpace[] spaces = null;
	protected void initMachine(){
		if (machine==null) machine = new CircleSpace(frames[0].drawArea.getSize(),0,Math.PI*getParam("velocity",2));
		machine.setMachine(machine);
		frames[0].drawArea.setCurrentObject(machine);
	}
	
		
		

	private void initSpaces(int demo){
		Object[] first =new Object[1];
		spaces = new CircleSpace[frameNumber-1];
		for(int i=0;i<frameNumber-1;i++){
			Dimension d = frames[i+1].drawArea.getSize();
			if(i==0) switch	(demo){
			case 0:spaces[i] = new CircleSpace(d,0,Math.PI*2);break;
			case 1:spaces[i] = new TwoLinesSpace(d);break;
			case 2:spaces[i] = new OnePointSpace(d);break;
			case 3:spaces[i] = new PolygonSpace(d,6);break;
			case 4:spaces[i] = new NonLinearMovement(d);break;
			case 5:spaces[i] = new IdentifiedLine(d);break;
			}else spaces[i] =  new ElipseSpace(d);
			if (spaces[i]!=null) spaces[i].setMachine(machine);
			frames[i+1].drawArea.setCurrentObject(spaces[i]);
		}
	}
/*	public void init(){
		super.init();
		
	}*/
	public void start(){
		initMachine();
		index = getParam("appletTag",0);
		initSpaces(index);
		run = true;
		startThread();
	}
	public void changeFrames(){
			machine.changeState();
			for(int j=0;j<spaces.length;j++){
				if (spaces[j]!=null)	spaces[j].changeState();
						frames[j].drawArea.repaint();
			}
			frames[frames.length-1].drawArea.repaint();
	}
	public  void stop(){
		super.stop();
		machine = null;
		spaces = null;
	}
}