private void SetPosition() { _isPlacementPositioned = true; IsPositioning?.Invoke(false); SetupScreen(Screen.ARVisualizer); }
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); } }