Exemplo n.º 1
0
    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");
    }