void ResetDialogFields() { dialogID = 0; dialogNext.Clear(); dialogNextID = -1; dialogOption = " "; dialogOutput = " "; dialogTriggerID = -1; dialogTriggerOnFinish = false; dialogType = NPCDialogType.Dialog; }
public NPCDialog(NPCDialog dialog) { this.DialogID = dialog.DialogID; this.DialogOption = dialog.DialogOption; this.DialogOutput = dialog.DialogOutput; this.DialogNext = dialog.DialogNext; // NYI: Requirements this.DialogType = dialog.DialogType; this.DialogTriggerID = dialog.DialogTriggerID; this.DialogTriggerOnFinish = dialog.DialogTriggerOnFinish; }
void GetDialogData() { dialogID = EditorGUILayout.IntField("ID: ", selectedDialog.DialogID, GUILayout.Width(295)); dialogOption = EditorGUILayout.TextField("Option: ", selectedDialog.DialogOption, GUILayout.Width(295)); EditorGUILayout.LabelField("Dialog text:"); dialogOutput = EditorGUILayout.TextArea(selectedDialog.DialogOutput, GUILayout.Width(350), GUILayout.MinHeight(90)); EditorGUILayout.Space(); // What the dialog links to... EditorGUILayout.LabelField("Dialog links to..."); for (int h = 0; h < selectedDialog.DialogNext.Count; h++) { dialogNext.Add(selectedDialog.DialogNext[h]); } for (int i = 0; i < dialogNext.Count; i++) { EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("X", GUILayout.Width(50))) { dialogNext.RemoveAt(i); break; } string label = string.Format("#{0}: ", dialogNext[i].ToString()); if (selectedNPC != null) { if (selectedNPC.HasDialogWithID(dialogNext[i])) { label += selectedNPC.GetDialogWithID(dialogNext[i]).DialogOption; } } EditorGUILayout.LabelField(label, GUILayout.ExpandHeight(true)); EditorGUILayout.EndHorizontal(); } EditorGUILayout.BeginHorizontal(); dialogNextID = EditorGUILayout.IntField("New Link: ", dialogNextID, GUILayout.Width(295)); if (GUILayout.Button("+", GUILayout.Width(50))) { dialogNext.Add(dialogNextID); dialogNextID = 0; } EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); // Dialog type, target item/quest... dialogType = (NPCDialogType)EditorGUILayout.EnumPopup("Type: ", selectedDialog.DialogType, GUILayout.Width(480)); switch (dialogType) { case (NPCDialogType.Dialog): break; case (NPCDialogType.Player_GiveItem): case (NPCDialogType.Player_ReceiveItem): EditorGUILayout.BeginHorizontal(); string itemLabel = string.Format("#{0}: ", dialogTriggerID.ToString()); if (_itemDatabase.Contains(dialogTriggerID)) { itemLabel += _itemDatabase.Item(dialogTriggerID).ItemName; } EditorGUILayout.LabelField(itemLabel); EditorGUILayout.EndHorizontal(); break; case (NPCDialogType.Quest_Start): case (NPCDialogType.Quest_Advance): case (NPCDialogType.Quest_Finish): EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("X", GUILayout.Width(50))) { dialogTriggerID = -1; break; } string questLabel = string.Format("#{0}: ", dialogTriggerID.ToString()); if (_questDatabase.Contains(dialogTriggerID)) { questLabel += _questDatabase.quest(dialogTriggerID); } EditorGUILayout.LabelField(questLabel); EditorGUILayout.EndHorizontal(); break; } dialogTriggerOnFinish = EditorGUILayout.Toggle("Trigger on Finish: ", selectedDialog.DialogTriggerOnFinish); dialogTriggerID = EditorGUILayout.IntField("Item/NPC ID: ", selectedDialog.DialogTriggerID, GUILayout.Width(295)); if (showEditDialog) { if (GUILayout.Button("Save Dialog", GUILayout.Width(300))) { if (selectedNPC.HasDialogWithID(dialogID)) { Debug.LogWarning("NPC already contains a dialog with ID " + dialogID); return; } selectedDialog.DialogID = dialogID; selectedDialog.DialogOption = dialogOption; selectedDialog.DialogOutput = dialogOutput; selectedDialog.DialogType = dialogType; selectedDialog.DialogTriggerOnFinish = dialogTriggerOnFinish; selectedDialog.DialogTriggerID = dialogTriggerID; List <int> _next = new List <int>(); for (int i = 0; i < dialogNext.Count; i++) { _next.Add(dialogNext[i]); } selectedDialog.SetDialogLinks(_next); // Sorts the list by dialog number then resets the fields. // npcDialog = npcDialog.OrderBy(o => o.DialogID).ToList(); ResetDialogFields(); selectedDialog = null; showEditDialog = false; } if (GUILayout.Button("Cancel", GUILayout.Width(300))) { ResetDialogFields(); selectedDialog = null; showEditDialog = false; } } else if (showAddDialog) { if (GUILayout.Button("Save Dialog", GUILayout.Width(300))) { if (selectedNPC.HasDialogWithID(dialogID)) { Debug.LogWarning("NPC already contains a dialog with ID " + dialogID); return; } NPCDialog _dialog = new NPCDialog(); _dialog.DialogID = dialogID; _dialog.DialogOption = dialogOption; _dialog.DialogOutput = dialogOutput; _dialog.DialogType = dialogType; _dialog.DialogTriggerOnFinish = dialogTriggerOnFinish; _dialog.DialogTriggerID = dialogTriggerID; _dialog.SetDialogLinks(dialogNext); List <int> _next = new List <int>(); for (int i = 0; i < dialogNext.Count; i++) { _next.Add(dialogNext[i]); } _dialog.SetDialogLinks(_next); // Sorts the list by dialog number then resets the fields. // npcDialog = npcDialog.OrderBy(o => o.DialogID).ToList(); ResetDialogFields(); selectedDialog = null; showEditDialog = false; } } }