public void StartConversation(GameObject sender, ConversationList.Characters character, ConversationList.Conversations conversation) { Reset(); currentCharacter = character; currentConversation = conversation; StartCoroutine(_ActiveConversation(sender, character, conversation)); }
public void AddPage(ConversationList.Conversations conversation) { ConversationList.Pages newPage = new ConversationList.Pages(); newPage.name = inputPageName; conversation.pages.Add(newPage); //Get target CheckEventsPage(conversation); }
public void CheckEventsPage(ConversationList.Conversations conversation) { if (targetObject == null) { return; } ChatEventObject chatScript = targetObject.GetComponent <ChatEventObject> (); //Set ID here too for (int i = 0; i < conversation.pages.Count; i++) { ChatEventObject.EventPages eventPage = new ChatEventObject.EventPages(); chatScript.conversationEvents [currentConversation].eventPages.Add(eventPage); } }
public void AddConversation() { if (_character == null) { return; } ConversationList.Conversations convo = new ConversationList.Conversations(); _character.conversations.Add(convo); convo.name = _character.conversations.Count.ToString() + ": " + inputConversationName; //Make template page //AddPage (convo); Deselect(); }
IEnumerator _ActiveConversation(GameObject sender, ConversationList.Characters character, ConversationList.Conversations conversation) { while (pageIndex < currentConversation.pages.Count) { textBox.text = ""; yield return(null); } CloseConversation(); }
public void DisplayPageList(ConversationList.Conversations conversation) { GUILayout.BeginVertical(); GUILayout.Space(20); GUILayout.Box("Pages", GUI.skin.GetStyle("title")); for (int i = 0; i < conversation.pages.Count; i++) { GUILayout.BeginHorizontal(); if (GUILayout.Button("X", GUILayout.Width(smallButtonSize))) { conversation.pages.RemoveAt(i); Deselect(); return; } if (GUILayout.Button("" + i + ": " + conversation.pages [i].name)) { conversation.pages [i].isActive = !conversation.pages [i].isActive; } if (GUILayout.Button("v", GUILayout.Width(smallButtonSize))) { if (i == conversation.pages.Count - 1) { return; } ConversationList.Pages temp = conversation.pages [i + 1]; conversation.pages [i + 1] = conversation.pages [i]; conversation.pages [i] = temp; MoveEventPage(i, -1); Deselect(); } if (GUILayout.Button("^", GUILayout.Width(smallButtonSize))) { if (i == 0) { return; } ConversationList.Pages temp = conversation.pages [i - 1]; conversation.pages [i - 1] = conversation.pages [i]; conversation.pages [i] = temp; MoveEventPage(i, 1); Deselect(); } GUILayout.EndHorizontal(); //LOGIC if (conversation.pages [i].isActive) { GUILayout.BeginVertical(EditorStyles.helpBox); DisplayEvents(i); GUILayout.EndVertical(); //Show pages GUILayout.BeginHorizontal(); GUILayout.Space(20); GUI.skin = defaultSkin; //List of images GUILayout.BeginVertical(); string[] moodStrings = GetMoodStringsFromCharacter(); conversation.pages [i].moodIndex = EditorGUILayout.Popup("", conversation.pages [i].moodIndex, moodStrings, GUILayout.Width(texture2DSize)); if (conversation.pages [i].moodIndex == moodStrings.Length - 1) { conversation.pages [i].image = (Texture2D)EditorGUILayout.ObjectField("", conversation.pages [i].customImage, typeof(Texture2D), false, GUILayout.Width(texture2DSize), GUILayout.Height(texture2DSize)); conversation.pages [i].customImage = conversation.pages [i].image; } else { conversation.pages [i].image = (Texture2D)EditorGUILayout.ObjectField("", _character.characterImages [conversation.pages [i].moodIndex].image, typeof(Texture2D), false, GUILayout.Width(texture2DSize), GUILayout.Height(texture2DSize)); } //conversation.pages [i].image = (Texture2D)EditorGUILayout.ObjectField ("", conversation.pages [i].image, typeof(Texture2D), GUILayout.Width (texture2DSize), GUILayout.Height (texture2DSize)); GUILayout.EndVertical(); GUI.skin = editorSkin; DisplayLineList(conversation.pages [i]); GUILayout.EndHorizontal(); } } //END GUILayout.BeginHorizontal(EditorStyles.helpBox); GUILayout.Label("Name: "); inputPageName = GUILayout.TextField(inputPageName); if (GUILayout.Button("Add Page", GUILayout.Width(mediumButtonSize))) { AddPage(conversation); } GUILayout.EndHorizontal(); GUILayout.Space(20); GUILayout.EndVertical(); }
public void DisplayConversationList() { if (_character == null) { return; } if (_character.conversations == null) { return; } _character.playType = (PlayType)EditorGUILayout.EnumPopup("Play Type", _character.playType); for (int i = 0; i < _character.conversations.Count; i++) { currentConversation = i; #region CONVERSATION TITLE LINE GUILayout.BeginHorizontal(); //ALL COVEDRED if (GUILayout.Button("X", GUILayout.Width(smallButtonSize))) { _character.conversations.RemoveAt(i); Deselect(); GUILayout.EndHorizontal(); return; } if (GUILayout.Button(_character.conversations [i].name)) { _character.conversations [i].isActive = !_character.conversations [i].isActive; } if (GUILayout.Button("v", GUILayout.Width(smallButtonSize))) { if (i == _character.conversations.Count - 1) { GUILayout.EndHorizontal(); return; } ConversationList.Conversations temp = _character.conversations [i + 1]; _character.conversations [i + 1] = _character.conversations [i]; _character.conversations [i] = temp; MoveConversationEvent(i, -1); Deselect(); } if (GUILayout.Button("^", GUILayout.Width(smallButtonSize))) { if (i == 0) { GUILayout.EndHorizontal(); return; } ConversationList.Conversations temp = _character.conversations [i - 1]; _character.conversations [i - 1] = _character.conversations [i]; _character.conversations [i] = temp; MoveConversationEvent(i, 1); Deselect(); } GUILayout.EndHorizontal(); #endregion //LOGIC if (_character.conversations [i].isActive) { _character.conversations [i].name = EditorGUILayout.TextField(_character.conversations [i].name); if (_character.playType == PlayType.byEvent) { string[] characterStrings = GetCharacterStrings(conversationList.chapters, false, AssetType.story); _character.conversations [i].playOnIndex = EditorGUILayout.Popup("Play On Chapter", _character.conversations [i].playOnIndex, characterStrings, GUILayout.Width(500)); } GUILayout.Space(20); #region Add Button if (eventTargetType != EventTargetTypes.target) { if (targetObject == null) { GUILayout.Box("Events"); GUILayout.BeginHorizontal(); GUILayout.Label("A scene character is required to use events"); GUILayout.FlexibleSpace(); if (GUILayout.Button("Add", GUILayout.Width(mediumButtonSize))) { GameObject newTarget = new GameObject(); newTarget.name = _character.name; newTarget.AddComponent <ChatEventObject> (); newTarget.GetComponent <ChatEventObject> ().characterIndex = characterIndex; ChatEventObject chatScript = newTarget.GetComponent <ChatEventObject> (); chatScript.assetType = assetType; targetObject = newTarget; eventTargetType = EventTargetTypes.target; } GUILayout.EndHorizontal(); } } #endregion DisplayEventTips(); #region Display Conversation Events if (eventTargetType == EventTargetTypes.target) { if (Selection.activeGameObject != targetObject) { return; } if (targetObject != null) { if (_character.conversations.Count > targetObject.GetComponent <ChatEventObject> ().conversationEvents.Count) { Debug.Log("Recreating"); } else { CheckEventsPage(_character.conversations [currentConversation]); } } GUILayout.BeginHorizontal(); GUILayout.Label("Target Object"); targetObject = EditorGUILayout.ObjectField(targetObject, typeof(GameObject), true) as GameObject; GUILayout.EndHorizontal(); if (targetObject == null) { FindTarget(); } Selection.activeObject = targetObject.transform; Selection.activeTransform = targetObject.transform; ChatEventObject chatScript = targetObject.GetComponent <ChatEventObject> (); if (chatScript == null) { GUILayout.Box("Please add the'ChatEvent' component"); return; } if (chatScript.onPageProp == null) { Redraw(); return; } if (chatScript.conversationEvents != null) { if (chatScript.conversationEvents.Count < _character.conversations.Count) { Debug.Log("Had to redraw"); Redraw(); return; } } else { Debug.Log("No event page"); } try { SerializedObject sObject = GetSereializedObject(); if (currentConversation > sObject.FindProperty("conversationEvents").arraySize) { Debug.Log("waiting"); Redraw(); return; } SerializedProperty sProp = sObject.FindProperty("conversationEvents").GetArrayElementAtIndex(currentConversation); sObject.Update(); //pageProp = chatScript.onPageProp.GetArrayElementAtIndex (currentConversation); it = sProp.Copy(); //Debug.Log ("begin searchign for conversation events page"); while (it.Next(true)) { if (it.name == "conversationEventPage") { break; } } //Debug.Log ("finished searchign for conversation events page"); chatScript.onStartObject = sObject; chatScript.onStartObject.Update(); chatScript.onPageProp = sProp; GUI.skin = defaultSkin; EditorGUILayout.PropertyField(it, true); GUI.skin = editorSkin; sObject.ApplyModifiedProperties(); chatScript.onStartObject.ApplyModifiedProperties(); } catch { //Basically happens when you are not highlighting the object Redraw(); } } #endregion if (targetObject != null) { //if (_character.conversations.Count > targetObject.GetComponent<ChatEventObject> ().conversationEvents.Count) //RecreateAllEvents (); } //Show pages //Very awkward here GUILayout.BeginHorizontal(); GUILayout.Space(20); DisplayPageList(_character.conversations [i]); GUILayout.EndHorizontal(); } } }