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
            };
示例#2
0
        private void PlayerDataSocket_OnMessage(object sender, MessageEventArgs e)
        {
            SpeakerData currentSpeakerData = JsonConvert.DeserializeObject <SpeakerData>(e.Data);
            var         bitmap             = new BitmapImage();

            bitmap.BeginInit();
            bitmap.UriSource = currentSpeakerData.AvatarThumb;
            bitmap.EndInit();
            void Action()
            {
                //PlayerImage.Source = bitmap;
                PlayerName.Content = currentSpeakerData.Username;
                if (currentSpeakerData.RecentAveragePrice == -1 && currentSpeakerData.Value == -1)
                {
                    rap.Content   = $"The RAP isn't availaible due to {currentSpeakerData.Username} inventory being private";
                    value.Content = $"The value isn't availaible due to {currentSpeakerData.Username} inventory being private";
                }
                else
                {
                    rap.Content   = currentSpeakerData.RecentAveragePrice.ToString();
                    value.Content = currentSpeakerData.Value.ToString();
                }
                PlayerMessage.Text = currentSpeakerData.Message;
            }

            Application.Current.Dispatcher.Invoke(Action);
            PlayerToRender = currentSpeakerData.Username;
            rolimon_url    = "https://www.rolimons.com/player/" + currentSpeakerData.UserId;
        }
示例#3
0
    public override InstrumentData GetData()
    {
        SpeakerData data = new SpeakerData();

        data.deviceType = menuItem.deviceType.Speaker;
        GetTransformData(data);
        data.jackInID = input.transform.GetInstanceID();
        return(data);
    }
示例#4
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);
    }
    //adds a given SpeakerData scriptable object into the "speakerDatabase" dictionary
    public void AddSpeaker(SpeakerData data)
    {
        if (speakerDatabase.ContainsKey(data.speakerName))
        {
            Debug.LogWarningFormat("Attempting to add {0} into speaker database, but it already exists!");
            return;
        }

        speakerDatabase.Add(data.speakerName, data);
    }
 public IEnumerator Display(SpeakerData sd)
 {
     speaker.sprite = sd.speaker;
     speaker.SetNativeSize();
     for (int i = 0; i < sd.messages.Count; ++i)
     {
         message.text = sd.messages[i];
         arrow.SetActive(i + 1 < sd.messages.Count);
         yield return(null);
     }
 }
示例#7
0
    public IEnumerator Display(SpeakerData sd)
    {
        speaker.sprite = sd.speaker;
        speaker.SetNativeSize ();

        for(int i = 0; i < sd.messages.Count; i++) {
            message.text = sd.messages[i];
            arrow.SetActive(i + 1 < sd.messages.Count);
            yield return null;
        }
    }
示例#8
0
    public override void Load(InstrumentData d)
    {
        SpeakerData data = d as SpeakerData;

        transform.localPosition = data.position;
        transform.localRotation = data.rotation;
        transform.localScale    = data.scale;

        ID       = data.ID;
        input.ID = data.jackInID;
    }
示例#9
0
    //navigate through onfire events
    public IEnumerator Display(SpeakerData sd)
    {
        speaker.sprite = sd.speaker;
        speaker.SetNativeSize();

        for (int i = 0; i < sd.messages.Count; ++i)
        {
            //message.text = sd.messages[i];
            StartCoroutine(typeSentence(sd.messages[i]));
            arrow.SetActive(i + 1 < sd.messages.Count);
            yield return(null);
        }
    }
示例#10
0
    static void ParseConvs()
    {
        ConversationData ThisConversation = ScriptableObject.CreateInstance <ConversationData> ();       // new ConversationData () ;
        int    conversationCounter        = 0;
        string readPath = string.Format("{0}/Settings/testConv.txt", Application.dataPath);

        string[]   readText   = File.ReadAllLines(readPath);
        Sprite     lastSprite = null;
        TextAnchor lastAnchor = TextAnchor.MiddleCenter;

        for (int i = 1; i < readText.Length; ++i)           //skip first line
        {
            string[] elements = readText[i].Split('/');
            //PartsNiceConvs (readText [i]);
            //Debug.Log ("ASDF"+elements[2]);

            Sprite     curSprite   = GetSprite(elements[0]);
            TextAnchor curAnchor   = GetAnchor(elements [1]);
            string     thisMessage = elements [2];
            Debug.Log(thisMessage);
            if (curAnchor == lastAnchor && curSprite == lastSprite)
            {
                ThisConversation.list [conversationCounter - 1].messages.Add(thisMessage);
            }
            else
            {
                SpeakerData spkrData = new SpeakerData();
                spkrData.speaker = curSprite;
                spkrData.anchor  = curAnchor;
                Debug.Log("Message to send: " + thisMessage);
                Debug.Log("Speaker Data: " + spkrData);
                Debug.Log("string list: " + spkrData.messages);
                //spkrData.messages=new List <string>();
                spkrData.messages.Add(thisMessage);



                Debug.Log(ThisConversation);
                ThisConversation.list.Add(spkrData);
                conversationCounter++;
            }
            lastAnchor = curAnchor;
            lastSprite = curSprite;
        }

        string filePath = "Assets/Resources/Conversations/";
        string fileName = string.Format("{0}{1}.asset", filePath, "zzzz");

        AssetDatabase.CreateAsset(ThisConversation, fileName);
    }
示例#11
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);
        }
    }
示例#12
0
    public IEnumerator Display(SpeakerData sd)
    {
        // 말하는 사람의 이미지를 변경하고
        speaker.sprite = sd.speaker;

        // 해당 이미지의 크기를 원래 크기로 변경합니다.
        speaker.SetNativeSize();


        for (int i = 0; i < sd.messages.Count; ++i)
        {
            // 대화 내용을 저장하고.
            message.text = sd.messages[i];

            // 마지막 대사이면 화살표를 비활성화 시킨다.
            arrow.SetActive(i + 1 < sd.messages.Count);

            // 한 프레임 쉰다.
            yield return(null);
        }
    }
示例#13
0
    static void ParseDialogue()
    {
        string filePath = Application.dataPath + "/Data/Conversation_Test.csv";

        if (!File.Exists(filePath))
        {
            Debug.LogError("ERROR! Missing Conversation Data: " + filePath);
            return;
        }

        string[] readText = File.ReadAllLines("Assets/Data/Conversation_Test.csv");
        Debug.Log("readText: " + readText);
        filePath = "Assets/Data/Resources/";
        for (int i = 1; i < readText.Length; i++)
        {
            SpeakerData speakerData = ScriptableObject.CreateInstance <SpeakerData>();
            speakerData.Load(readText[1]);  // Load 1st line of actual data

            string fileName = string.Format("{0}{1}.asset", filePath, speakerData.speakerName);
            AssetDatabase.CreateAsset(speakerData, fileName);
        }
    }
    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);
        }
    }