public override void exit (SlotMachineAI slotMachineAI)
	{
		Debug.Log("InsertCoinsState - exit");
		base.exit(slotMachineAI);
		slotMachineAI.disableMouth();
        slotMachineAI.lowSign("InsertCoinSign");
    }
	public override void exit (SlotMachineAI slotMachineAI)
	{
		Debug.Log("YouWinState - exit");
		base.exit(slotMachineAI);

        slotMachineAI.lowSign("YouWinSign");
    }
	public override void enter (SlotMachineAI slotMachineAI)
	{
		Debug.Log("CoinInsertedState - enter");
		base.enter(slotMachineAI);
		slotMachineAI.enableLever();
        slotMachineAI.raiseSign("PullLever");
    }
	public override void exit (SlotMachineAI slotMachineAI)
	{
		Debug.Log("CoinInsertedState - exit");
		base.exit(slotMachineAI);
		slotMachineAI.disableLever();
        slotMachineAI.lowSign("PullLever");
    }
	public override void enter (SlotMachineAI slotMachineAI)
	{
		Debug.Log("YouLoseState - enter");
		base.enter(slotMachineAI);
		slotMachineAI.StartTimer(2f);

        slotMachineAI.raiseSign("YouLose");
    }
	public override void enter (SlotMachineAI slotMachineAI)
	{
		Debug.Log("SpinningState - enter");
		base.enter(slotMachineAI);
		slotMachineAI.incrementSpinningCounter();

		// start wheels to spin
		slotMachineAI.spinWheels();
		slotMachineAI.resetButtons();
	}
	public override void enter (SlotMachineAI slotMachineAI)
	{
		Debug.Log("YouWinState - enter");
		base.enter(slotMachineAI);
		slotMachineAI.StartTimer(2f);

        slotMachineAI.raiseSign("YouWinSign");
        slotMachineAI.DispenseCookies(6);
        slotMachineAI.FireParticles();
    }
	public override void enter (SlotMachineAI slotMachineAI)
	{
		Debug.Log("InsertCoinsState - enter");
		base.enter(slotMachineAI);
		slotMachineAI.resetSpinningCounter();
		slotMachineAI.resetButtons();
		slotMachineAI.enableMouth();
        slotMachineAI.raiseSign("InsertCoinSign");

    }
	public override void enter (SlotMachineAI slotMachineAI)
	{
		Debug.Log("AdjustState - enter");
		base.enter(slotMachineAI);

		// enable buttons
		slotMachineAI.enableButtons();
		slotMachineAI.enableLever();

        slotMachineAI.raiseSign("PullLever");
        slotMachineAI.raiseSign("SelectWheels");
    }
	public override void exit (SlotMachineAI slotMachineAI)
	{
		Debug.Log("AdjustState - exit");
		base.exit(slotMachineAI);

		// disable buttons
		slotMachineAI.disableButtons();
		slotMachineAI.disableLever();

        slotMachineAI.lowSign("PullLever");
        slotMachineAI.lowSign("SelectWheels");
    }
	public override void enter (SlotMachineAI slotMachineAI)
	{
		Debug.Log("DecisorState - enter");
		base.enter(slotMachineAI);        

        StateMachine<SlotMachineAI> fsm = slotMachineAI.getFSM();
		if(slotMachineAI.wheelsEqual())
		{			
			//Debug.Log("All wheels stopped");
			fsm.setState(new YouWinState());
		}
		else
		{
			if(slotMachineAI.canAdjust())
			{
				fsm.setState(new AdjustState());
			}
			else
			{
				fsm.setState(new YouLoseState());
			}
		}
	}
	public override void exit (SlotMachineAI slotMachineAI)
	{
		Debug.Log("DecisorState - exit");
		base.exit(slotMachineAI);                
    }
	public override void execute (SlotMachineAI slotMachineAI)
	{

	}
	void Start()
	{
		slotMachineAI = GameObject.Find("SlotMachine").GetComponent<SlotMachineAI>();
	}
	void Start () {
		slotMachineAI = GameObject.Find("SlotMachine").GetComponent<SlotMachineAI>();
		animator = gameObject.GetComponent<Animator>();
	}
	public override void exit (SlotMachineAI slotMachineAI)
	{
		Debug.Log("SpinningState - exit");
		base.exit(slotMachineAI);
	}
 void Start()
 {
     id = generateId();
     slotMachineAI = GameObject.Find("SlotMachine").GetComponent<SlotMachineAI>();
 }