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 };
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; }
public override InstrumentData GetData() { SpeakerData data = new SpeakerData(); data.deviceType = menuItem.deviceType.Speaker; GetTransformData(data); data.jackInID = input.transform.GetInstanceID(); return(data); }
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); } }
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; } }
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; }
//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); } }
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); }
/// <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); } }
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); } }
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); } }