public void OnGUI(object asset, ItemDatabaseWindow itemDBWindow) { GUILayout.BeginVertical(); EquipmentAsset itemAsset = asset as EquipmentAsset; GUILayout.BeginHorizontal(EditorStyles.toolbar); GUILayout.Label(" ", EditorStyles.toolbarButton, GUILayout.Width(30)); GUILayout.Label("Type", EditorStyles.toolbarButton); GUILayout.Button("StatId", EditorStyles.toolbarButton); GUILayout.Label("Value", EditorStyles.toolbarButton, GUILayout.Width(50)); GUILayout.Label("Stacks", EditorStyles.toolbarButton, GUILayout.Width(50)); /*bool clicked = GUILayout.Toggle (i == itemDBWindow.SelectedEffectIndex, modifier.GetType ().Name, ToggleButtonStyle, GUILayout.Width(150)); * if (clicked != (i == itemDBWindow.SelectedEffectIndex)) { * if (clicked) { * itemDBWindow.SelectedEffectIndex = i; * GUI.FocusControl (null); * } else { * itemDBWindow.SelectedEffectIndex = -1; * } * }*/ GUILayout.EndHorizontal(); for (int i = 0; i < itemAsset.Mods.Count; i++) { RPGStatModifierAsset modifier = itemAsset.Mods[i]; GUILayout.BeginHorizontal(EditorStyles.toolbar); if (GUILayout.Button("-", EditorStyles.toolbarButton, GUILayout.Width(30)) && EditorUtility.DisplayDialog("Remove modifier", "Are you sure you want to delete the modifier?", "Delete", "Cancel")) { itemAsset.Mods.RemoveAt(i); } GUILayout.Label(modifier.GetType().Name, EditorStyles.toolbarButton); //modifier.AssignedStatId = EditorGUILayout.IntField (modifier.AssignedStatId); var statType = RPGStatTypeDatabase.Instance.Get(modifier.AssignedStatId, true); if (GUILayout.Button(statType == null ? "Assign Stat" : statType.Name, EditorStyles.toolbarButton)) { XmlDatabaseEditorUtility.ShowContext(RPGStatTypeDatabase.Instance, (statTypeAsset) => { modifier.AssignedStatId = statTypeAsset.Id; Debug.Log("Assigning stat to stat type " + statTypeAsset.Id); }, typeof(RPGStatTypeWindow)); } modifier.Value = EditorGUILayout.FloatField(modifier.Value, GUILayout.Width(50)); modifier.Stacks = EditorGUILayout.Toggle(modifier.Stacks, GUILayout.Width(50)); /*bool clicked = GUILayout.Toggle (i == itemDBWindow.SelectedEffectIndex, modifier.GetType ().Name, ToggleButtonStyle, GUILayout.Width(150)); * if (clicked != (i == itemDBWindow.SelectedEffectIndex)) { * if (clicked) { * itemDBWindow.SelectedEffectIndex = i; * GUI.FocusControl (null); * } else { * itemDBWindow.SelectedEffectIndex = -1; * } * }*/ GUILayout.EndHorizontal(); } if (GUILayout.Button("Add Modifier", EditorStyles.toolbarButton)) { XmlDatabaseEditorUtility.GetGenericMenu(RPGStatModifierEditorUtility.GetNames(), (selectedIndex) => { itemAsset.Mods.Add(RPGStatModifierEditorUtility.CreateAsset(selectedIndex)); }).ShowAsContext(); } GUILayout.EndVertical(); }
public void OnGUI(object asset, ItemDatabaseWindow itemDBWindow) { GUILayout.BeginVertical(); UsableItemAsset itemAsset = asset as UsableItemAsset; for (int i = 0; i < itemAsset.Effects.Count; i++) { EffectAsset effect = itemAsset.Effects[i]; GUILayout.BeginHorizontal(EditorStyles.toolbar); if (GUILayout.Button("-", EditorStyles.toolbarButton, GUILayout.Width(30)) && EditorUtility.DisplayDialog("Remove effect", "Are you sure you want to delete the effect?", "Delete", "Cancel")) { itemAsset.Effects.RemoveAt(i); } bool clicked = GUILayout.Toggle(i == itemDBWindow.SelectedEffectIndex, effect.GetType().Name, ToggleButtonStyle, GUILayout.Width(150)); if (clicked != (i == itemDBWindow.SelectedEffectIndex)) { if (clicked) { itemDBWindow.SelectedEffectIndex = i; GUI.FocusControl(null); } else { itemDBWindow.SelectedEffectIndex = -1; } } GUILayout.EndHorizontal(); if (itemDBWindow.SelectedEffectIndex == i) { GUILayout.BeginVertical(); foreach (var extension in EffectEditorUtility.GetExtensions()) { if (extension.CanHandleType(effect.GetType())) { extension.OnGUI(effect); } } GUILayout.EndVertical(); } } if (GUILayout.Button("Add Effect", EditorStyles.toolbarButton)) { Debug.Log(itemAsset.GetType().ToString()); if (typeof(PositionUsableItemAsset).IsAssignableFrom(itemAsset.GetType())) { XmlDatabaseEditorUtility.GetGenericMenu(EffectEditorUtility.GetPositionEffectNames(), (index) => { var itemEffectAsset = EffectEditorUtility.CreatePositionEffectAsset(index); itemAsset.Effects.Add(itemEffectAsset); EditorWindow.FocusWindowIfItsOpen <ItemDatabaseWindow> (); }).ShowAsContext(); } else if (typeof(TargetUsableItemAsset).IsAssignableFrom(itemAsset.GetType())) { XmlDatabaseEditorUtility.GetGenericMenu(EffectEditorUtility.GetTargetEffectNames(), (index) => { var itemEffectAsset = EffectEditorUtility.CreateTargetEffectAsset(index); itemAsset.Effects.Add(itemEffectAsset); EditorWindow.FocusWindowIfItsOpen <ItemDatabaseWindow> (); }).ShowAsContext(); } else { XmlDatabaseEditorUtility.GetGenericMenu(EffectEditorUtility.GetNames(), (index) => { var skillEffectAsset = EffectEditorUtility.CreateAsset(index); itemAsset.Effects.Add(skillEffectAsset); EditorWindow.FocusWindowIfItsOpen <ItemDatabaseWindow> (); }).ShowAsContext(); } } GUILayout.EndVertical(); }