コード例 #1
0
 private void SetPosition()
 {
     _isPlacementPositioned = true;
     IsPositioning?.Invoke(false);
     SetupScreen(Screen.ARVisualizer);
 }
コード例 #2
0
    private void SetupScreen(Screen newScreen)
    {
        viewArea.gameObject.SetActive(false);
        backButton.gameObject.SetActive(false);
        nextButton.gameObject.SetActive(false);
        instructionButton.gameObject.SetActive(false);
        instructionArea.gameObject.SetActive(false);
        settingButton.gameObject.SetActive(false);
        scrollViewContainer.SetActive(true);
        footer.SetActive(true);
        scaleSlider.gameObject.SetActive(false);
        ARContainer.SetActive(false);

        foreach (var t in screens)
        {
            t.gameObject.SetActive(false);
        }

        optionsScreen.gameObject.SetActive(false);

        previousScreen = currentScreen;
        currentScreen  = newScreen;

        switch (newScreen)
        {
        case Screen.About:
            if (previousScreen == Screen.About)
            {
                EnableNextButton("Continuar", () => SetupScreen(Screen.TopicList));
            }
            else
            {
                backButton.gameObject.SetActive(true);
            }

            screens[0].gameObject.SetActive(true);
            break;

        case Screen.TopicList:
            UpdateTitle("Selecione o assunto");
            screens[1].gameObject.SetActive(true);
            settingButton.gameObject.SetActive(true);
            break;

        case Screen.TopicText:
            EnableNextButton("Continuar", (() => SetupScreen(Screen.ContentList)));
            UpdateTitle(_currentTopic.topicTitle);
            if (previousScreen == Screen.TopicList)
            {
                InstantiateProblemButtons();
            }
            screens[2].gameObject.SetActive(true);
            settingButton.gameObject.SetActive(true);
            backButton.gameObject.SetActive(true);
            break;

        case Screen.ContentList:
            UpdateTitle("Selecione o problema");

            footer.SetActive(false);
            backButton.gameObject.SetActive(true);
            settingButton.gameObject.SetActive(true);
            screens[3].gameObject.SetActive(true);
            break;

        case Screen.Explanation:
            UpdateTitle("Sobre o problema");
            EnableNextButton("Visualizar Questão", () =>
            {
                if (_instructionClosed)
                {
                    SetupScreen(_isPlacementPositioned ? Screen.ARVisualizer : Screen.Positioning);
                }
                else
                {
                    SetupScreen(Screen.Instruction);
                }
            });

            if (previousScreen == Screen.ContentList)
            {
                nextButton.interactable = false;
            }
            backButton.gameObject.SetActive(true);
            settingButton.gameObject.SetActive(true);
            screens[4].gameObject.SetActive(true);
            break;

        case Screen.Instruction:
            UpdateTitle("Instruções");
            EnableNextButton("Prosseguir", () =>
            {
                SetupScreen(Screen.Positioning);
                _instructionClosed = true;
            });
            ARContainer.SetActive(true);
            scrollViewContainer.SetActive(false);
            settingButton.gameObject.SetActive(true);
            instructionArea.gameObject.SetActive(true);
            break;

        case Screen.Positioning:
            IsPositioning?.Invoke(true);
            UpdateTitle("Posicionar o plano");
            EnableNextButton("Posicionar", SetPosition);

            scaleSlider.gameObject.SetActive(true);
            instructionButton.gameObject.SetActive(true);
            backButton.gameObject.SetActive(true);
            settingButton.gameObject.SetActive(true);
            ARContainer.SetActive(true);
            scrollViewContainer.SetActive(false);
            sliderArea.SetActive(false);
            break;

        case Screen.ARVisualizer:
            UpdateTitle(_currentProblem.title);
            UpdateEquationText(_currentProblem.problem.equation);

            ARContainer.SetActive(true);
            scrollViewContainer.SetActive(false);
            viewArea.gameObject.SetActive(showEquation.isOn);
            backButton.gameObject.SetActive(true);
            settingButton.gameObject.SetActive(true);
            sliderArea.SetActive(true);
            break;

        case Screen.Settings:
            UpdateTitle("Configurações");
            EnableNextButton("Sobre", () => SetupScreen(Screen.About));

            optionsScreen.SetActive(true);
            backButton.gameObject.SetActive(true);
            ARArea.SetActive(previousScreen == Screen.ARVisualizer);     // Can be improved
            sliderArea.SetActive(false);
            break;

        default:
            throw new ArgumentOutOfRangeException(nameof(newScreen), newScreen, null);
        }
    }