public void ShowCurrentDrama() { #region Current Scene Actors GUILayout.BeginArea(new Rect(480, 15, leftPanelWidth, 300)); GUILayout.BeginHorizontal(); GUILayout.Box("Current Scene Actors", titleText, GUILayout.Width(175), GUILayout.Height(20)); GUILayout.EndHorizontal(); bool addActor = false; if (curDrama.actors == null) { curDrama.actors = new List <DramaActor>(); } currentActorListScrollPos = GUILayout.BeginScrollView(actorListScrollPos, new GUIStyle("RL Background"), GUILayout.Width(180), GUILayout.Height(position.height - 450)); if (curDrama.actors != null && curDrama.actors.Count > 0) { List <string> actorNames = new List <string>(); for (int i = 0; i < curDramaStorage.actorStorage.Count; i++) { actorNames.Add(curDramaStorage.actorStorage[i].actorName); } int removeThisIdx = -1; for (int i = 0; i < curDrama.actors.Count; i++) { bool isRemoved = false; int selectedActor = (curDramaStorage.actorStorage != null && curDramaStorage.actorStorage.Count > 0) ? curDramaStorage.actorStorage.Count - 1 : -1; EditorGUILayout.BeginHorizontal(); if (curDramaStorage.actorStorage.Find(x => x.actorName == curDrama.actors[i].characterName) != null) { selectedActor = curDramaStorage.actorStorage.FindIndex(x => x.actorName == curDrama.actors[i].characterName); } if (selectedActor >= 0) { selectedActor = EditorGUILayout.Popup(selectedActor, actorNames.ToArray(), GUILayout.MaxWidth(130)); isRemoved = GUILayout.Button("-", GUILayout.Width(30)); if (isRemoved) { removeThisIdx = i; } } else { EditorGUILayout.LabelField("No Actor Available", GUILayout.MaxWidth(200)); } if (curDrama.actors[i].characterName != curDramaStorage.actorStorage[selectedActor].actorName) { curDrama.actors[i].characterName = curDramaStorage.actorStorage[selectedActor].actorName; curDrama.actors[i].characterPrefabPath = curDramaStorage.actorStorage[selectedActor].prefabPath; curDrama.actors[i].actorType = curDramaStorage.actorStorage[selectedActor].actorType; } EditorGUILayout.EndHorizontal(); } if (removeThisIdx != -1) { curDrama.actors.RemoveAt(removeThisIdx); } } GUILayout.EndScrollView(); GUILayout.BeginHorizontal(); addActor = GUILayout.Button("+", GUILayout.MaxWidth(50)); GUILayout.EndHorizontal(); if (addActor) { DramaActor newActor = new DramaActor(); newActor.characterName = curDramaStorage.actorStorage[0].actorName; newActor.characterPrefabPath = curDramaStorage.actorStorage[0].prefabPath; newActor.actorType = curDramaStorage.actorStorage[0].actorType; curDrama.actors.Add(newActor); } GUILayout.EndArea(); #endregion GUILayout.BeginArea(new Rect(15, 15, leftPanelWidth, 300)); if (curFrame == null) { curFrame = new DramaFrame(); } GUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Scenario Act Name:", EditorStyles.boldLabel, GUILayout.Width(80)); curDrama.scenarioName = EditorGUILayout.TextField(curDrama.scenarioName, GUILayout.MaxWidth(380)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Drama Type:", EditorStyles.boldLabel, GUILayout.Width(80)); curDrama.sceneType = (DramaSceneType)EditorGUILayout.EnumPopup(curDrama.sceneType, GUILayout.MaxWidth(200)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Box("Current Frame", titleText, GUILayout.Width(450), GUILayout.Height(20)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Description:", EditorStyles.boldLabel, GUILayout.Width(80)); curFrame.description = EditorGUILayout.TextField(curFrame.description, GUILayout.MaxWidth(367)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (curDrama != null && curDrama.actionsPerFrame != null) { if (selectedFrameIdx >= curDrama.actionsPerFrame.Count - 1) { curFrame.callNextStory = EditorGUILayout.Toggle(curFrame.callNextStory, GUILayout.MaxWidth(20)); GUILayout.Label("Call Next Story:", EditorStyles.boldLabel, GUILayout.Width(100)); if (curFrame.callNextStory) { curFrame.nextDramaTitle = EditorGUILayout.TextField(curFrame.nextDramaTitle, GUILayout.MaxWidth(325)); } } else { curFrame.callNextStory = false; curFrame.nextDramaTitle = ""; } } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Box("Frame List", titleText, GUILayout.Width(450), GUILayout.Height(20)); GUILayout.EndHorizontal(); frameListScrollPos = GUILayout.BeginScrollView(frameListScrollPos, new GUIStyle("RL Background"), GUILayout.Width(450), GUILayout.Height(position.height - 400)); if (curDrama.actionsPerFrame == null) { curDrama.actionsPerFrame = new List <DramaFrame>(); } if (curDrama.actionsPerFrame != null && curDrama.actionsPerFrame.Count > 0) { for (int i = 0; i < curDrama.actionsPerFrame.Count; i++) { GUILayout.BeginHorizontal(); bool isClicked = false; isClicked = GUILayout.Button(curDrama.actionsPerFrame[i].frameName, (selectedFrame != null && curDrama.actionsPerFrame[i].frameName == selectedFrame.frameName) ? selectedText : notSelectedText); GUILayout.Label("- " + curDrama.actionsPerFrame[i].description, GUILayout.MaxWidth(350)); GUILayout.EndHorizontal(); if (isClicked) { GUI.FocusControl(null); selectedFrameIdx = i; selectedFrame = curDrama.actionsPerFrame[selectedFrameIdx]; curFrame = selectedFrame; curAction = null; selectedAction = null; } } } GUILayout.EndScrollView(); GUILayout.EndArea(); GUILayout.BeginArea(new Rect(15, 320, leftPanelWidth, 300)); GUILayout.BeginHorizontal(); bool saveCurrentFrame = GUILayout.Button((curFrame != null && curFrame == selectedFrame) ? "Modify" : "Save", GUILayout.MaxWidth(100)); bool addNewFrame = GUILayout.Button("Create New", GUILayout.MaxWidth(100)); if (saveCurrentFrame) { GUI.FocusControl(null); if (string.IsNullOrEmpty(curFrame.description)) { return; } if (curFrame == selectedFrame) { int idx = curDrama.actionsPerFrame.FindIndex(x => x.frameName == curFrame.frameName); curDrama.actionsPerFrame[idx] = curFrame; } else { curFrame.frameName = "Frame#" + (curDrama.actionsPerFrame.Count + 1); curDrama.actionsPerFrame.Add(curFrame); curFrame = new DramaFrame(); selectedFrame = null; } Save(); } if (addNewFrame) { GUI.FocusControl(null); curFrame = new DramaFrame(); selectedFrame = null; } if (selectedFrame != null) { bool removeSelectedFrame = GUILayout.Button("-", GUILayout.MaxWidth(100)); if (removeSelectedFrame) { GUI.FocusControl(null); if (curDrama.actionsPerFrame.Find(x => x.frameName == selectedFrame.frameName) != null) { curDrama.actionsPerFrame.Remove(selectedFrame); selectedFrame = null; curFrame = new DramaFrame(); } } } GUILayout.EndHorizontal(); GUILayout.EndArea(); }
public void ShowActorList() { if (curDramaStorage.actorStorage == null) { curDramaStorage.actorStorage = new List <ActorStorageBay>(); } bool addEvent = false; bool saveEvent = false; bool removeEvent = false; GUILayout.BeginArea(new Rect(680, actorListPosY - 20, 400, position.height - 350)); ShowCurrentActor(); GUILayout.BeginHorizontal(); GUILayout.Box("Available Actors List", titleText, GUILayout.Width(295), GUILayout.Height(20)); GUILayout.EndHorizontal(); actorListScrollPos = GUILayout.BeginScrollView(actorListScrollPos, new GUIStyle("RL Background"), GUILayout.Width(300), GUILayout.Height(position.height - 400)); if (curDramaStorage.actorStorage != null && curDramaStorage.actorStorage.Count > 0) { for (int i = 0; i < curDramaStorage.actorStorage.Count; i++) { bool isClicked = false; string label = ""; switch (curDramaStorage.actorStorage[i].actorType) { case DramaActorType.Generic: label = "[G}"; break; case DramaActorType.Unique: label = "[U}"; break; case DramaActorType.Tools: label = "[TOOLS}"; break; case DramaActorType.SFX: label = "[SFX}"; break; default: break; } label += " -" + curDramaStorage.actorStorage[i].smallDescription + "."; GUILayout.BeginHorizontal(); isClicked = GUILayout.Button(curDramaStorage.actorStorage[i].actorName, (selectedActor != null && curDramaStorage.actorStorage[i].actorName == selectedActor.actorName) ? selectedText : notSelectedText, GUILayout.MinWidth(80)); GUILayout.Label(label); GUILayout.EndHorizontal(); if (isClicked) { GUI.FocusControl(null); if (curDramaStorage.actorStorage[i] != null) { selectedActor = curDramaStorage.actorStorage[i]; selectedActorIdx = i; curActor = selectedActor; } isClicked = false; } } } GUILayout.EndScrollView(); GUILayout.EndArea(); GUILayout.BeginArea(new Rect(680, actorListPosY + 240, 400, 225)); GUILayout.BeginHorizontal(); saveEvent = GUILayout.Button((curActor == selectedActor && selectedActor != null) ? "Modify" : "Save", GUILayout.MaxWidth(100)); if (curDramaStorage.actorStorage == null) { curDramaStorage.actorStorage = new List <ActorStorageBay>(); } if (curActor == null) { curActor = new ActorStorageBay(); } if (curDramaStorage.actorStorage.Count <= 0 || curActor != null && curDramaStorage.actorStorage.Find(x => x.actorName == curActor.actorName) != null) { addEvent = GUILayout.Button("Create New", GUILayout.MaxWidth(100)); } if (curDramaStorage.actorStorage.Find(x => x.actorName == curActor.actorName) != null) { removeEvent = GUILayout.Button("Remove", GUILayout.MaxWidth(100)); } GUILayout.EndHorizontal(); GUILayout.EndArea(); // ADD BUTTON if (addEvent) { curActor = new ActorStorageBay(); selectedActor = null; } // REMOVE BUTTON if (removeEvent) { GUI.FocusControl(null); removeEvent = false; if (selectedActor != null) { curDramaStorage.actorStorage.RemoveAt(selectedActorIdx); selectedActor = null; curActor = new ActorStorageBay(); } } // SAVE BUTTON if (saveEvent && !string.IsNullOrEmpty(curActor.actorName)) { GUI.FocusControl(null); if (curDramaStorage.actorStorage == null) { curDramaStorage.actorStorage = new List <ActorStorageBay>(); } if (curDramaStorage.actorStorage.Find(x => x.actorName == curActor.actorName) == null) { curDramaStorage.actorStorage.Add(curActor); curActor = new ActorStorageBay(); } else { // MODIFY CURRENT EVENT if ((curActor == selectedActor)) { curDramaStorage.actorStorage[selectedActorIdx] = curActor; curActor = new ActorStorageBay(); selectedActor = null; } else { Debug.LogError("MULTIPLE EVENTS WITH SAME TITLE OCCURRED, PLEACE CHECK LIST!"); } } saveEvent = false; Save(); } }