public static void AddEvent(MissionEventContainer cont, Type t, Mission miss = null) { MissionEvent evt = null; evt = Activator.CreateInstance(t) as MissionEvent; if (evt == null) { return; } cont.allEvents.Add(evt); cont.Save(); }
public static MissionEventEditor Create(MissionEvent evt, Mission miss) { MissionEventEditor editor = null; System.Type type = evt.GetType(); if (type == typeof(ME_KillCharacter)) { editor = new ME_KillCharacterEditor() as MissionEventEditor; } else if (type == typeof(ME_GiveItem)) { editor = new ME_GiveItemsEditor() as MissionEventEditor; } else if (type == typeof(ME_Visu16)) { editor = new ME_Visu16Editor() as MissionEventEditor; } if (editor != null) { editor.initialize(evt, miss); } return(editor); }
private void initialize(MissionEvent evt, Mission miss) { this.target = evt; this.miss = miss; }
public static void OnGUI(this MissionEventContainer cont, Dictionary <MissionEvent, MissionEventEditor> editors, Mission miss = null) { EditorGUILayout.BeginHorizontal(); cont.MainFold = EditorGUILayout.Foldout(cont.MainFold, cont.editorName, true); EditorGUI.BeginChangeCheck(); if (GUILayout.Button("+", GUILayout.Width(25))) { GenericMenu CreateMenu = new GenericMenu(); CreateMenu.AddItem(new GUIContent("Kill Character"), false, AddEventMenu, new object[] { cont, typeof(ME_KillCharacter), miss }); CreateMenu.AddItem(new GUIContent("Give Item"), false, AddEventMenu, new object[] { cont, typeof(ME_GiveItem), miss }); CreateMenu.AddItem(new GUIContent("Visu 16"), false, AddEventMenu, new object[] { cont, typeof(ME_Visu16), miss }); CreateMenu.ShowAsContext(); } EditorGUILayout.EndHorizontal(); if (cont.MainFold) { EditorGUI.indentLevel++; MissionCondition.ConditionType t = cont.cond == null ? MissionCondition.ConditionType.Custom : cont.cond.conditionType; miss.ConditionSelector("Trigger when", ref cont.conditionFold, ref cont.cond, ref t); EditorGUILayout.Space(); EditorGUILayout.LabelField("Events", EditorStyles.boldLabel); for (int i = 0; i < cont.allEvents.Count; i++) { if (!cont.EditorFolds.ContainsKey(cont.allEvents[i])) { cont.UpdateDictionary(); } } int deleteIndex = -1; for (int i = 0; i < cont.allEvents.Count; i++) { if (cont.allEvents[i] != null) { EditorGUILayout.BeginHorizontal(); cont.EditorFolds[cont.allEvents[i]] = EditorGUILayout.Foldout(cont.EditorFolds[cont.allEvents[i]], cont.allEvents[i].editorName + " (" + (cont.allEvents[i]).GetType().Name + ")"); GUILayout.FlexibleSpace(); if (GUILayout.Button("X", GUILayout.Width(20))) { deleteIndex = i; } EditorGUI.BeginDisabledGroup(i == 0); if (GUILayout.Button("^", GUILayout.Width(20))) { cont.allEvents[i].listIndex--; cont.allEvents[i - 1].listIndex++; MissionEvent evt = cont.allEvents[i]; cont.allEvents[i] = cont.allEvents[i - 1]; cont.allEvents[i - 1] = evt; } EditorGUI.EndDisabledGroup(); EditorGUI.BeginDisabledGroup(i == cont.allEvents.Count - 1); if (GUILayout.Button("v", GUILayout.Width(20))) { cont.allEvents[i].listIndex++; cont.allEvents[i + 1].listIndex--; MissionEvent evt = cont.allEvents[i]; cont.allEvents[i] = cont.allEvents[i + 1]; cont.allEvents[i + 1] = evt; } EditorGUI.EndDisabledGroup(); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUI.indentLevel++; GUILayout.Space(20 * EditorGUI.indentLevel); if (cont.EditorFolds[cont.allEvents[i]]) { EditorGUILayout.BeginVertical(EditorStyles.helpBox); editors[cont.allEvents[i]].OnGUI(); EditorGUILayout.EndVertical(); } EditorGUI.indentLevel--; EditorGUILayout.EndHorizontal(); } } if (deleteIndex != -1) { cont.EditorFolds.Remove(cont.allEvents[deleteIndex]); cont.allEvents.RemoveAt(deleteIndex); cont.Save(); } EditorGUI.indentLevel--; } }