Display() public method

public Display ( Queue pages ) : void
pages Queue
return void
	IEnumerator Sequence(ConversationData data)
	{
		for (int i = 0; i<data.list.Count; ++i)
		{
			SpeakerData sd = data.list[i];

			ConversationPanel currentPanel = (sd.anchor == TextAnchor.UpperLeft || sd.anchor == TextAnchor.MiddleLeft || sd.anchor == TextAnchor.LowerLeft) ? leftPanel : rightPanel;
			IEnumerator presenter = currentPanel.Display(sd);
			presenter.MoveNext();

			string show, hide;
			if (sd.anchor == TextAnchor.UpperLeft || sd.anchor == TextAnchor.UpperCenter || sd.anchor == TextAnchor.UpperRight)
			{
				show = ShowTop;
				hide = HideTop;
			}
			else
			{
				show = ShowBottom;
				hide = HideBottom;
			}

			currentPanel.panel.SetPosition(hide, false);
			MovePanel(currentPanel, show);

			yield return null;
			while (presenter.MoveNext())
				yield return null;

			MovePanel(currentPanel, hide);
            transition.completedEvent += delegate (object sender, EventArgs e) {
                conversation.MoveNext();
<<<<<<< HEAD
            };
Esempio n. 2
0
    IEnumerator Sequence(ConversationData data)
    {
        for (int i = 0; i < data.list.Count; ++i)
        {
            SpeakerData sd = data.list[i];

            ConversationPanel currentPanel =
                (sd.anchor == TextAnchor.UpperLeft ||
                 sd.anchor == TextAnchor.MiddleLeft || sd.anchor ==
                 TextAnchor.LowerLeft) ? leftPanel : rightPanel;

            IEnumerator presenter = currentPanel.Display(sd);
            presenter.MoveNext();

            string show, hide;
            if (sd.anchor == TextAnchor.UpperLeft ||
                sd.anchor == TextAnchor.UpperCenter ||
                sd.anchor == TextAnchor.UpperRight)
            {
                show = ShowTop;
                hide = HideTop;
            }
            else
            {
                show = ShowBottom;
                hide = HideBottom;
            }

            currentPanel.panel.SetPosition(hide, false);
            MovePanel(currentPanel, show);

            yield return(null);

            while (presenter.MoveNext())
            {
                yield return(null);
            }

            MovePanel(currentPanel, hide);

            this.AddObserver(
                delegate(object sender, object args)
            {
                conversation.MoveNext();
            },
                Notifications.CONVERSATION_COMPLETED
                );

            yield return(null);
        }

        canvas.gameObject.SetActive(false);
        //if (completeEvent != null)
        //completeEvent(this, EventArgs.Empty);

        this.PostNotification(Notifications.CONVERSATION_COMPLETED);
    }
Esempio n. 3
0
    /// <summary>
    /// Loops over all the speakers in a conversation, in a nested loop, iterates over each
    /// speaker's messages via another IEnumerator from the current panel
    /// </summary>
    /// <param name="data">ConversationData</param>
    IEnumerator Sequence(ConversationData data)
    {
        for (int i = 0; i < data.speakerDataList.Count; i++)
        {
            SpeakerData sd = data.speakerDataList[i];

            ConversationPanel currentPanel = (sd.anchor == TextAnchor.UpperLeft ||
                                              sd.anchor == TextAnchor.MiddleLeft || sd.anchor == TextAnchor.LowerLeft) ?
                                             leftPanel : rightPanel;
            IEnumerator presenter = currentPanel.Display(sd);
            presenter.MoveNext();

            string show, hide;
            if (sd.anchor == TextAnchor.UpperLeft || sd.anchor == TextAnchor.UpperCenter ||
                sd.anchor == TextAnchor.UpperRight)
            {
                show = ShowTop;
                hide = HideTop;
            }
            else
            {
                show = ShowBottom;
                hide = HideBottom;
            }

            currentPanel.panel.SetPosition(hide, false);
            MovePanel(currentPanel, show);

            yield return(null);     // Pause in the sequence

            while (presenter.MoveNext())
            {
                yield return(null);
            }

            MovePanel(currentPanel, hide);
            transition.easingControl.completedEvent += delegate(object sender, EventArgs e) {
                conversation.MoveNext();
            };

            yield return(null);      // Pause in the sequence
        }

        canvas.gameObject.SetActive(false);
        if (completeEvent != null)
        {
            completeEvent(this, EventArgs.Empty);
        }
    }
    IEnumerator Sequence(ConversationData data)
    {
        // 해당 대화 이벤트에서 서로 주고받는
        // 대화 수 만큼 반복문을 돌림.
        for (int i = 0; i < data.list.Count; ++i)
        {
            // 대사마다 필요한 정보를 차례대로 불러온다.
            SpeakerData sd = data.list[i];

            // 대화상자의 위치를 지정한다. (왼쪽대화상자? 오른쪽 대화상자?)
            // 오른쪽은 Player, 왼쪽은 상대방
            ConversationPanel currentPanel
                = (sd.anchor == TextAnchor.UpperLeft || sd.anchor == TextAnchor.MiddleLeft || sd.anchor == TextAnchor.LowerLeft) ? leftPanel : rightPanel;

            // ConversationPanel.Display 는
            // 대사 내용, 아바타 이미지, 화살표 연출 여부 등을
            // 처리한다.
            IEnumerator presenter = currentPanel.Display(sd);

            // Display 코루틴 재생
            // MoveNext() 는  yield return 을 받기 전까지만 재생시킨다.
            presenter.MoveNext();

            string show, hide;

            // 어떤 키값으로 UI 연출을 할 것인지 체크
            if (sd.anchor == TextAnchor.UpperLeft || sd.anchor == TextAnchor.UpperCenter || sd.anchor == TextAnchor.UpperRight)
            {
                show = ShowTop;
                hide = HideTop;
            }
            else
            {
                show = ShowBottom;
                hide = HideBottom;
            }

            // 처음 대화 상자가 나오면 아래에서 위로 올라오는 연출이
            // 진행된다.
            currentPanel.panel.SetPosition(hide, false);
            MovePanel(currentPanel, show);

            // MoveNext(); 를 다시 전달 받기 전에는
            // 아래 코드를 진행하지 않는다.
            yield return(null);

            // currentPanel.Display(sd);
            // 전달받은 SpeakerData의 모든 대화 내용을
            // 하나씩 출력하고 멈추고
            // 다시 MoveNext()가 호출될때까지 기다리는 것을
            // 반복한다.
            while (presenter.MoveNext())
            {
                yield return(null);
            }


            // 대사 내용이 종료되면
            // 해당 대화 상자를 아래로 내리는 연출을 진행한다.
            MovePanel(currentPanel, hide);

            // EasingControl의 completedEvent 이벤트에 델리게이트를 등록시킨다.
            transition.completedEvent += delegate(object sender, EventArgs e) {
                conversation.MoveNext();
            };


            yield return(null);
        }

        // 모든 대사가 종료되면 canvas를 비활성화
        canvas.gameObject.SetActive(false);

        // completedEvent 에 등록된
        // 델리게이트를 호출한다. (*씬을 바꾸는 함수가 등록될 예정)
        if (completeEvent != null)
        {
            completeEvent(this, EventArgs.Empty);
        }
    }