예제 #1
0
    private void DisplayContent(Content content = null)
    {
        if (contentsStack.Count <= 0 && content == null)
        {
            //S'il n'y a plus de contenu à afficher et qu'on cherche à en afficher, c'est la fin de la scène
            //Instantiate(EndButton, tabletContentContainer);
            return;
        }
        else
        {
            GameObject contentToInstantiate;
            if (content == null)
            {
                currentContent = contentsStack.Pop();
            }
            else
            {
                currentContent = content;
            }

            //Debug.Log(currentContent.CompleteEvent.GetPersistentEventCount());
            //Si le contenu à afficher n'a pas d'événement indiqué, comme ceux ajouté dynamiquement
            if (currentContent.CompleteEvent.GetPersistentEventCount() == 0)
            {
                contentDisplayer.onContentCompleteDelegate = DisplayNextContent;
            }
            else
            {
                contentDisplayer.onContentCompleteDelegate = currentContent.CompleteEvent.Invoke;
            }

            currentContent.AddObserver(contentDisplayer);

            if (currentContent.GetType() == typeof(SimpleText))
            {
                SimpleText st = (SimpleText)currentContent;
                //Sans un titre
                if (st.textData.title == "")
                {
                    simpleTextPref.SetActive(false);

                    contentToInstantiate = Instantiate(simpleTextPref, tabletContentContainer);
                    contentToInstantiate.GetComponent <TextHolder>().simpleText = st;
                    simpleTextPref.SetActive(true);
                }
                //Avec un titre
                else
                {
                    titledTextPref.SetActive(false);

                    contentToInstantiate = Instantiate(titledTextPref, tabletContentContainer);
                    contentToInstantiate.GetComponent <TextHolder>().simpleText = st;
                    Debug.Log(contentToInstantiate.GetComponent <TextHolder>().simpleText.textData.content);
                    titledTextPref.SetActive(true);
                }
            }

            else if (currentContent.GetType() == typeof(OpenQuestion) || currentContent.GetType() == typeof(ClosedQuestion))
            {
                if (currentContent.GetType() == typeof(OpenQuestion))
                {
                    openQuestionPref.SetActive(false);
                    OpenQuestion oq = (OpenQuestion)currentContent;
                    contentToInstantiate = Instantiate(openQuestionPref, tabletContentContainer);
                    contentToInstantiate.GetComponent <OpenQuestionHolder>().openQuestion = oq;
                    openQuestionPref.SetActive(true);
                }
                else
                {
                    closedQuestionPreb.SetActive(false);
                    ClosedQuestion cq = (ClosedQuestion)currentContent;
                    contentToInstantiate = Instantiate(closedQuestionPreb, tabletContentContainer);
                    contentToInstantiate.GetComponent <ClosedQuestionHolder>().closedQuestion = cq;
                    closedQuestionPreb.SetActive(true);
                }
            }
            else
            {
                contentToInstantiate = Instantiate(fillGapsPref, tabletContentContainer);
            }

            contentToInstantiate.SetActive(true);
            currentGameObjectToShow = contentToInstantiate;
        }
        Resizer.ResizeHeight(tabletContentContainer.GetComponent <RectTransform>());

        StartCoroutine(nameof(DisplayScrollArrow));
    }