private void CreateNewFile() { DialogueFile asset = ScriptableObject.CreateInstance <DialogueFile>(); asset.names = new List <string>(); asset.dialogue = new List <string>(); for (int i = 0; i < numberOfLines; i++) { asset.names.Add(newNames[i]); asset.dialogue.Add(newDialogue[i]); } AssetDatabase.CreateAsset(asset, "Assets/Dialogue/" + fileName + ".asset"); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); EditorUtility.FocusProjectWindow(); ClearLists(); }
// Changes the active file in the script public void ChangeFile(DialogueFile input) { file = input; Reset(); }
// The stuff that shows up in the window public void OnGUI() { deselectWindow = new Rect(0, 0, position.width, position.height); GUILayout.Space(15f); EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); tab = GUILayout.Toolbar(tab, new string[] { "Create New File", "Edit Existing File" }, GUILayout.MaxWidth(250f), GUILayout.MaxHeight(25f)); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); GUILayout.Space(5f); newNames.Add(""); newDialogue.Add(""); switch (tab) { // If Creating a new file case 0: GUILayout.Space(20); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("File Name:", GUILayout.MaxWidth(65f)); fileName = EditorGUILayout.TextField(fileName); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); GUILayout.Space(10f); // Displays the table headers EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("No:", GUILayout.MaxWidth(30f)); EditorGUILayout.LabelField("Character:", GUILayout.MaxWidth(200f)); EditorGUILayout.LabelField("Dialogue:", GUILayout.MinWidth(100f)); eventChoice = (EventOptions)EditorGUILayout.EnumPopup(eventChoice, GUILayout.MaxWidth(75f)); EditorGUILayout.EndHorizontal(); scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.Width(position.width), GUILayout.ExpandHeight(true)); // Displays the table for the number of lines added to the file for (int i = 0; i < numberOfLines; i++) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(i.ToString(), GUILayout.MaxWidth(30f)); newNames[i] = EditorGUILayout.TextField(newNames[i], GUILayout.MaxWidth(200f)); newDialogue[i] = EditorGUILayout.TextField(newDialogue[i]); GUILayout.Space(10f); GUI.backgroundColor = Color.yellow; if (GUILayout.Button("~", GUILayout.Width(25))) { string choice; switch (eventChoice) { case EventOptions.None: choice = ""; break; case EventOptions.Cinematic: choice = "###"; break; case EventOptions.Pause: choice = "@@@"; break; case EventOptions.ExitDial: choice = "***"; break; case EventOptions.Animation: choice = "^^^"; break; default: choice = ""; break; } // this is where the event would be set, might make a enum to select a tye of event in the future... newNames.Insert(i, choice); newDialogue.Insert(i, choice); } GUI.backgroundColor = Color.green; if (GUILayout.Button("+", GUILayout.Width(25))) { numberOfLines++; newNames.Insert(i + 1, ""); newDialogue.Insert(i + 1, ""); } GUI.backgroundColor = Color.red; if (GUILayout.Button("-", GUILayout.Width(25))) { if (i != 0) { numberOfLines--; newNames.RemoveAt(i); newDialogue.RemoveAt(i); } } GUI.backgroundColor = Color.white; EditorGUILayout.EndHorizontal(); } // Creates a new Dialogue File with the name and text inputted EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); GUI.backgroundColor = Color.green; if (GUILayout.Button("Create File", GUILayout.MaxWidth(100f))) { createFile = true; } GUI.backgroundColor = Color.white; if (GUILayout.Button("Reset File", GUILayout.MaxWidth(100f))) { ClearLists(); } GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndScrollView(); break; // If editing an exsisting file case 1: EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); GUILayout.Label("Here you can edit already exsisting files as if you were creating them."); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); GUILayout.Space(10); // Label & Box for the user to select the Dialogue FIle they wish to edit EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); EditorGUILayout.LabelField("Dialogue File: ", GUILayout.MaxWidth(80f)); currentFile = (DialogueFile)EditorGUILayout.ObjectField(currentFile, typeof(DialogueFile), false); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); if (currentFile != null) { GUILayout.Space(20); EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); EditorGUILayout.LabelField("Edit File Name:", GUILayout.MaxWidth(100f)); currentFile.name = EditorGUILayout.TextField(currentFile.name); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); GUILayout.Space(10); EditorGUILayout.LabelField("Contents of File:", GUILayout.MaxWidth(100f)); GUILayout.Space(5); // Table Headers EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("No:", GUILayout.MaxWidth(30f)); EditorGUILayout.LabelField("Character:", GUILayout.MaxWidth(200f)); EditorGUILayout.LabelField("Dialogue:", GUILayout.MinWidth(100f)); eventChoice = (EventOptions)EditorGUILayout.EnumPopup(eventChoice, GUILayout.MaxWidth(75f)); EditorGUILayout.EndHorizontal(); scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.Width(position.width), GUILayout.ExpandHeight(true)); // Displays the current file's dialogue in the correct boxes and allow it to be edited for (int i = 0; i < currentFile.names.Count; i++) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(i.ToString(), GUILayout.MaxWidth(30f)); currentFile.names[i] = EditorGUILayout.TextField(currentFile.names[i], GUILayout.MaxWidth(200f)); currentFile.dialogue[i] = EditorGUILayout.TextField(currentFile.dialogue[i], GUILayout.MaxWidth(400f)); GUILayout.Space(10); GUI.backgroundColor = Color.yellow; if (GUILayout.Button("~", GUILayout.Width(25))) { string Choice; switch (eventChoice) { case EventOptions.None: Choice = ""; break; case EventOptions.Cinematic: Choice = "###"; break; case EventOptions.Pause: Choice = "@@@"; break; case EventOptions.ExitDial: Choice = "***"; break; case EventOptions.Animation: Choice = "^^^"; break; default: Choice = ""; break; } // this is where the event would be set, might make a enum to select a tye of event in the future... newNames.Insert(i, Choice); newDialogue.Insert(i, Choice); } GUI.backgroundColor = Color.green; if (GUILayout.Button("+", GUILayout.Width(25))) { numberOfLines++; currentFile.names.Insert(i + 1, ""); currentFile.dialogue.Insert(i + 1, ""); Debug.Log("Adding new line"); } GUI.backgroundColor = Color.red; if (GUILayout.Button("-", GUILayout.Width(25))) { if (i != 0) { numberOfLines--; currentFile.names.RemoveAt(i); currentFile.dialogue.RemoveAt(i); } } GUI.backgroundColor = Color.white; EditorGUILayout.EndHorizontal(); } EditorGUILayout.EndScrollView(); } else { EditorGUILayout.LabelField("No Dialogue File Selected!"); } break; default: break; } // Makes it so you can deselect elements in the window by adding a button the size of the window that you can't see under everything //make sure the following code is at the very end of OnGUI Function if (GUI.Button(deselectWindow, "", GUIStyle.none)) { GUI.FocusControl(null); } }