public override void InstantiateSafeStart() { base.InstantiateSafeStart(); // Get values from settings algorithmName = sortSettings.Algorithm; // string name int numberOfElements = sortSettings.NumberOfElements; bool allowDuplicates = sortSettings.Duplicates; string sortingCase = sortSettings.SortingCase; float algorithmSpeed = sortSettings.AlgorithmSpeed; // Set min max values for sorting elements elementManager.SetMinMax(sortSettings.ElementMinValue, sortSettings.ElementMaxValue); // Algorithm manager setup algorithmManagerBase = SortingAlgorithmManager(algorithmName); algorithmManagerBase.InitSortingManager(this); // Algorithm setup sortAlgorithm = (SortAlgorithm)GrabAlgorithmFromObj(); // SortAlgorithm object sortAlgorithm.InitSortAlgorithm(this, algorithmSpeed); // Init display unit manager displayUnitManager.InitDisplayUnitManager(); displayUnitManager.SetTextWithIndex(UtilSort.RIGHT_BLACKBOARD, algorithmName, 0); // Init holder manager holderManager.InitManager(); holderManager.CreateObjects(numberOfElements, null); HolderPositions = holderManager.GetHolderPositions(); // Init element manager elementManager.InitManager(); elementManager.CreateObjects(numberOfElements, HolderPositions, allowDuplicates, sortingCase); sortAlgorithm.ListValues = elementManager.InitList(); // Only Insertion sort using this method so far, here: create pivot holder sortAlgorithm.Specials(UtilSort.INIT, Util.NO_VALUE, false); // Prepare difficulty level related stuff for user test bool includeLineNr = Settings.PseudocodeLineNr; bool inDetailStep = Settings.PseudocodeStep; if (sortSettings.TeachingMode == Util.USER_TEST) { if (sortSettings.Difficulty <= Util.PSEUDO_CODE_MAX_DIFFICULTY) { displayUnitManager.PseudoCodeViewer.InitPseudoCodeViewer(sortAlgorithm, includeLineNr, inDetailStep); displayUnitManager.PseudoCodeViewer.PseudoCodeSetup(); } else if (sortSettings.Difficulty == Util.ADVANCED) { //isplayUnitManager.PseudoCodeViewer.PseudoCodeSetup(); // Ideas for left/center blackboard? } else { // Ideas for left/center? (Examination) } } else { displayUnitManager.PseudoCodeViewer.InitPseudoCodeViewer(sortAlgorithm, includeLineNr, inDetailStep); displayUnitManager.PseudoCodeViewer.PseudoCodeSetup(); } // Hide menu and display sorting table StartCoroutine(ActivateTaskObjects(true)); displayUnitManager.SetText(UtilSort.SORT_TABLE_TEXT, "Click start to play"); }