package ckelling.baukasten;

public class DemonstrationStep
{
	private boolean subStepEnabled	= false;
	private int		step			= 1;
	private int		subStep			= 1;
	private int		stepsSinceReset	= 0;
	private int		maxSubStep		= 0;
	private Rechner	parent;

	public DemonstrationStep(Rechner parent)
	{
		this.parent = parent;
	}

	/*
	public DemonstrationStep(DemonstrationStep ds)
	{
		this();
		subStepEnabled = ds.subStepEnabled();
		step = ds.get();
		subStep = ds.getSub();
		stepsSinceReset = ds.stepsSinceReset();
	}
	*/

	/*
	public boolean equals(DemonstrationStep ds)
	{
		if (ds.subStepEnabled() != subStepEnabled)
			return false;
		else if (ds.get() != get())
			return false;
		else if (ds.getSub() != getSub())
			return false;
		//else if (ds.stepsSinceReset() != stepsSinceReset)
		//	return false;
		else
			return true;
	}
	*/


	public int get()
	{
		return step;
	}

	public int getSub()
	{
		if (subStepEnabled)
			return subStep;
		else
			return 0;
	}

	public int stepsSinceReset()
	{
		return stepsSinceReset;
	}

	public void reset()
	{
		subStepEnabled = false;
		step = 1;
		subStep = 1;
		stepsSinceReset = 0;
	}

	public void startSubStepping(int max)
	{
		if (subStepEnabled == false)
		{
			subStepEnabled = true;
			subStep = 1;
			maxSubStep = max;
		}
		else
			parent.out("FEHLER in DemonstrationStep.startSubStepping(): sub stepping schon aktiv!");
	}

	public void inc()
	{
		if (subStepEnabled)
		{
			subStep++;
			if (subStep > maxSubStep)
			{
				subStepEnabled = false;
				step++;
				subStep = 1;
			}
		}
		else
			step++;
		stepsSinceReset++;
	}

	public void dec()
	{
		if (subStepEnabled)
			if (subStep > 1)
				subStep--;
			else
			{
				subStepEnabled = false;
				subStep = 1;
				step--;
			}
		else
			step--;
		stepsSinceReset--;
	}

	public boolean subStepEnabled()
	{
		return subStepEnabled;
	}

} /* end DemonstrationStep */
