public static void CreateWindow(vItemListData itemList, int firtItemSelected) { vItemListWindow window = (vItemListWindow)EditorWindow.GetWindow(typeof(vItemListWindow), false, "ItemList Editor"); Instance = window; window.itemList = itemList; window.skin = Resources.Load("vSkin") as GUISkin; Instance.Init(firtItemSelected); }
public static void CreateWindow(vItemListData itemList, int firtItemSelected) { vItemListWindow window = (vItemListWindow)EditorWindow.GetWindow(typeof(vItemListWindow), false, "ItemList Editor"); Instance = window; window.itemList = itemList; LoadSkin(window); Instance.Init(firtItemSelected); }
void OnGUI() { if (!skin) { skin = Resources.Load("skin") as GUISkin; } GUI.skin = skin; this.minSize = rect; this.titleContent = new GUIContent("Inventory System", null, "ItemManager Creator Window"); m_Logo = Resources.Load("icon_v2") as Texture2D; GUILayout.BeginVertical("ItemManager Creator Window", "window"); GUILayout.Label(m_Logo, GUILayout.MaxHeight(25)); GUILayout.Space(5); GUILayout.BeginVertical("box"); inventoryPrefab = EditorGUILayout.ObjectField("Inventory Prefab: ", inventoryPrefab, typeof(vInventory), false) as vInventory; itemListData = EditorGUILayout.ObjectField("Item List Data: ", itemListData, typeof(vItemListData), false) as vItemListData; if (inventoryPrefab != null && inventoryPrefab.GetComponent <vInventory>() == null) { EditorGUILayout.HelpBox("Please select a Inventory Prefab that contains the vInventory script", MessageType.Warning); } GUILayout.EndVertical(); GUILayout.BeginHorizontal("box"); EditorGUILayout.LabelField("Need to know how it works?"); if (GUILayout.Button("Video Tutorial")) { //Application.OpenURL("https://www.youtube.com/watch?v=1aA_PU9-G-0&index=3&list=PLvgXGzhT_qehtuCYl2oyL-LrWoT7fhg9d"); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (inventoryPrefab != null && itemListData != null) { if (Selection.activeGameObject != null && Selection.activeGameObject.GetComponent <vThirdPersonController>() != null) { if (GUILayout.Button("Create")) { Create(); } } else { EditorGUILayout.HelpBox("Please select the Player to add this component", MessageType.Warning); } } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.EndVertical(); }
void OnGUI() { if (!skin) { skin = Resources.Load("vSkin") as GUISkin; } GUI.skin = skin; this.minSize = rect; m_Logo = Resources.Load("icon_v2") as Texture2D; GUILayout.BeginVertical("ITEM MANAGER CREATOR", "window", GUILayout.MaxHeight(100), GUILayout.MaxWidth(490)); GUILayout.Label(m_Logo, GUILayout.MaxHeight(25)); GUILayout.BeginVertical("box"); EditorGUILayout.HelpBox("Go to the folder Invector/ItemManager/Prefabs to select a Inventory prefab", MessageType.Info); inventoryPrefab = EditorGUILayout.ObjectField("Inventory Prefab: ", inventoryPrefab, typeof(GameObject), false) as GameObject; EditorGUILayout.HelpBox("Go to the folder Invector/ItemManager/ItemListData to select a ItemListData or create a new one in the Inventory menu", MessageType.Info); itemListData = EditorGUILayout.ObjectField("Item List Data: ", itemListData, typeof(vItemListData), false) as vItemListData; if (inventoryPrefab != null) { EditorGUILayout.HelpBox("Please select a Inventory Prefab, you can find one at the Inventory/Prefabs Folder", MessageType.Warning); } GUILayout.EndVertical(); GUILayout.BeginHorizontal("box"); EditorGUILayout.LabelField("Need to know how it works?"); if (GUILayout.Button("Video Tutorial")) { Application.OpenURL("https://www.youtube.com/watch?v=1aA_PU9-G-0&index=3&list=PLvgXGzhT_qehtuCYl2oyL-LrWoT7fhg9d"); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (inventoryPrefab != null && itemListData != null) { if (Selection.activeGameObject != null && Selection.activeGameObject.GetComponent <vThirdPersonController>() != null) { if (GUILayout.Button("Create")) { Create(); } } else { EditorGUILayout.HelpBox("Please select the Player to add this component", MessageType.Warning); } } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.EndVertical(); }
public static void CreateWindow(vItemListData itemList, System.Action <int> OnSelectItem) { vItemListWindow window = (vItemListWindow)EditorWindow.CreateInstance <vItemListWindow>(); // Instance = window; window.itemList = itemList; window.skin = Resources.Load("vSkin") as GUISkin; window.OnSelectItem = OnSelectItem; window.titleContent = new GUIContent("ItemList Selector"); window.Show(); window.Init(); }
/// <summary> /// Get <seealso cref="vItem"/> from <seealso cref="ItemReference"/> /// </summary> /// <param name="itemListData"></param> /// <returns></returns> public List <vItem> GetItems(vItemListData itemListData) { List <vItem> items = new List <vItem>(); for (int i = 0; i < itemReferences.Count; i++) { vItem item = itemListData.items.Find(a => a.id.Equals(itemReferences[i].id)); item = GameObject.Instantiate(item); item.amount = itemReferences[i].amount; item.attributes = itemReferences[i].attributes; item.name = item.name.Replace("(Clone)", string.Empty); items.Add(item); } return(items); }
static void CreateNewListData() { vItemListData listData = ScriptableObject.CreateInstance <vItemListData>(); AssetDatabase.CreateAsset(listData, "Assets/ItemListData.asset"); }
void OnEnable() { itemList = (vItemListData)target; skin = Resources.Load("vSkin") as GUISkin; m_Logo = (Texture2D)Resources.Load("icon_v2", typeof(Texture2D)); }
public void OnGUI() { if (skin) { GUI.skin = skin; } var _color = GUI.color; if (OnSelectItem != null) { GUI.color = Color.red; } GUILayout.BeginVertical("Item List", "window"); GUI.color = _color; GUILayout.Label(m_Logo, GUILayout.MaxHeight(25)); GUILayout.BeginVertical("box"); GUI.enabled = !Application.isPlaying; itemList = EditorGUILayout.ObjectField("ItemListData", itemList, typeof(vItemListData), false) as vItemListData; if (serializedObject == null && itemList != null) { serializedObject = new SerializedObject(itemList); } else if (itemList == null) { GUILayout.EndVertical(); return; } serializedObject.Update(); if (OnSelectItem == null) { if (!inAddItem && GUILayout.Button("Create New Item")) { addItem = ScriptableObject.CreateInstance <vItem>(); addItem.name = "New Item"; currentItemDrawer = null; inAddItem = true; } if (inAddItem) { DrawAddItem(); } if (GUILayout.Button("Open ItemEnums Editor")) { vItemEnumsWindow.CreateWindow(); } } GUILayout.Space(10); GUILayout.EndVertical(); GUILayout.Box(itemList.items.Count.ToString("00") + " Items"); scroolView = GUILayout.BeginScrollView(scroolView, GUILayout.ExpandWidth(true)); for (int i = 0; i < itemList.items.Count; i++) { if (itemList.items[i] != null) { Color color = GUI.color; GUI.color = currentItemDrawer != null && currentItemDrawer.item == itemList.items[i] ? Color.green : color; GUILayout.BeginVertical("box"); { GUI.color = color; GUILayout.BeginHorizontal(); { var texture = itemList.items[i].iconTexture; var name = " ID " + itemList.items[i].id.ToString("00") + "\n - " + itemList.items[i].name + "\n - " + itemList.items[i].type.ToString(); var content = new GUIContent(name, texture, currentItemDrawer != null && currentItemDrawer.item == itemList.items[i] ? "Click to Close" : "Click to Open"); GUIStyle boxStyle = new GUIStyle(GUI.skin.box); GUI.skin.box.alignment = TextAnchor.UpperLeft; GUI.skin.box.fontStyle = FontStyle.Italic; GUI.skin.box.fontSize = 11; if (GUILayout.Button(content, "box", GUILayout.Height(50), GUILayout.MinWidth(50))) { if (OnSelectItem != null) { OnSelectItem.Invoke(i); OnSelectItem = null; this.Close(); } else { GUI.FocusControl("clearFocus"); scroolView.y = 1 + i * 60; currentItemDrawer = currentItemDrawer != null ? currentItemDrawer.item == itemList.items[i] ? null : new vItemDrawer(itemList.items[i]) : new vItemDrawer(itemList.items[i]); } } if (OnSelectItem == null) { EditorGUIUtility.AddCursorRect(GUILayoutUtility.GetLastRect(), MouseCursor.Link); GUI.skin.box = boxStyle; var duplicateImage = Resources.Load("duplicate") as Texture; if (GUILayout.Button(new GUIContent("", duplicateImage, "Duplicate Item"), GUILayout.MaxWidth(45), GUILayout.Height(45))) { if (EditorUtility.DisplayDialog("Duplicate the " + itemList.items[i].name, "Are you sure you want to duplicate this item? ", "Duplicate", "Cancel")) { DuplicateItem(itemList.items[i]); GUILayout.EndHorizontal(); Repaint(); break; } } if (GUILayout.Button(new GUIContent("x", "Delete Item"), GUILayout.MaxWidth(20), GUILayout.Height(45))) { if (EditorUtility.DisplayDialog("Delete the " + itemList.items[i].name, "Are you sure you want to delete this item? ", "Delete", "Cancel")) { var item = itemList.items[i]; itemList.items.RemoveAt(i); DestroyImmediate(item, true); OrderByID(); AssetDatabase.SaveAssets(); serializedObject.ApplyModifiedProperties(); EditorUtility.SetDirty(itemList); GUILayout.EndHorizontal(); Repaint(); break; } } } } GUILayout.EndHorizontal(); GUI.color = color; if (currentItemDrawer != null && currentItemDrawer.item == itemList.items[i] && itemList.items.Contains(currentItemDrawer.item)) { currentItemDrawer.DrawItem(ref itemList.items, false); } } GUILayout.EndVertical(); } } GUILayout.EndScrollView(); GUILayout.EndVertical(); if (GUI.changed || serializedObject.ApplyModifiedProperties()) { EditorUtility.SetDirty(itemList); } }
public virtual void OnGUI() { if (skin) { GUI.skin = skin; } var _color = GUI.color; if (OnSelectItem != null) { GUI.color = Color.red; } GUILayout.BeginVertical("Item List", "window"); GUI.color = _color; GUILayout.Label(m_Logo, GUILayout.MaxHeight(25)); GUILayout.BeginVertical("box"); GUI.enabled = !Application.isPlaying; itemList = EditorGUILayout.ObjectField("ItemListData", itemList, typeof(vItemListData), false) as vItemListData; this.minSize = new Vector2(250, minSize.y); if (serializedObject == null && itemList != null) { serializedObject = new SerializedObject(itemList); } else if (itemList == null) { GUILayout.EndVertical(); return; } serializedObject.Update(); if (OnSelectItem == null) { if (!inDragItens && GUILayout.Button("Add Items")) { inDragItens = true; } if (!inAddItem && GUILayout.Button("Create New Item")) { addItem = ScriptableObject.CreateInstance <vItem>(); addItem.name = "New Item"; currentItemDrawer = null; inAddItem = true; } if (inDragItens) { GUILayout.BeginVertical("window"); EditorGUILayout.HelpBox("You can add items from other lists by selecting other lists in the ProjectWindow, click on 'Show items in Hierarchy' and drag & drop the item to the field bellow", MessageType.Info); EditorGUILayout.HelpBox("New items will have their IDs modified if Same ID exits in Items List", MessageType.Warning); DrawDragBox(ref newItems); GUILayout.BeginVertical(); newItemsScrool = GUILayout.BeginScrollView(newItemsScrool, false, false, GUILayout.MaxHeight(Mathf.Clamp(newItems.Count * 25, 0, 500))); OrderByID(ref newItems); for (int i = 0; i < newItems.Count; i++) { GUILayout.BeginHorizontal(); if (itemList.items.Find(it => it.name.ToClearUpper().Equals(newItems[i].name.ToClearUpper()))) { GUI.color = Color.red; GUILayout.Label("EXIST"); EditorGUILayout.ObjectField(newItems[i], typeof(vItem), false); } else { GUI.color = Color.white; EditorGUILayout.ObjectField(newItems[i], typeof(vItem), false); } GUI.color = Color.white; if (GUILayout.Button("x", EditorStyles.miniButton, GUILayout.Width(20))) { newItems.RemoveAt(i); i--; } GUILayout.EndHorizontal(); } GUILayout.EndScrollView(); GUILayout.EndVertical(); GUILayout.BeginHorizontal(); GUI.enabled = newItems.Count > 0; if (GUILayout.Button("ADD", GUILayout.MinWidth(50), GUILayout.MaxWidth(100))) { AddItem(newItems); newItems.Clear(); inDragItens = false; } GUI.enabled = true; GUILayout.FlexibleSpace(); if (GUILayout.Button("CLEAR", GUILayout.MinWidth(50), GUILayout.MaxWidth(100))) { newItems.Clear(); } GUILayout.FlexibleSpace(); if (GUILayout.Button("CANCEL", GUILayout.MinWidth(50), GUILayout.MaxWidth(100))) { inDragItens = false; } GUILayout.EndHorizontal(); GUILayout.EndVertical(); } if (inAddItem) { DrawAddItem(); } if (GUILayout.Button("Open ItemEnums Editor")) { vItemEnumsWindow.CreateWindow(); } } GUILayout.Space(10); GUILayout.EndVertical(); GUILayout.Box(itemList.items.Count.ToString("00") + " Items"); DrawFilter(); scroolView = GUILayout.BeginScrollView(scroolView, GUILayout.ExpandWidth(true)); int count = 0; for (int i = 0; i < itemList.items.Count; i++) { if (itemList.items[i] != null && FilterItems(itemList.items[i])) { Color color = GUI.color; GUI.color = currentItemDrawer != null && currentItemDrawer.item == itemList.items[i] ? Color.green : color; GUILayout.BeginVertical("box"); { GUI.color = color; GUILayout.BeginHorizontal(); { var texture = itemList.items[i].iconTexture; var name = " ID " + itemList.items[i].id.ToString("00") + "\n - " + itemList.items[i].name + "\n - " + itemList.items[i].type.ToString(); var content = new GUIContent(name, texture, currentItemDrawer != null && currentItemDrawer.item == itemList.items[i] ? "Click to Close" : "Click to Open"); GUIStyle boxStyle = new GUIStyle(GUI.skin.box); GUI.skin.box.alignment = TextAnchor.UpperLeft; GUI.skin.box.fontStyle = FontStyle.Italic; GUI.skin.box.fontSize = 11; if (GUILayout.Button(content, "label", GUILayout.Height(60), GUILayout.MinWidth(60))) { if (OnSelectItem != null) { OnSelectItem.Invoke(i); OnSelectItem = null; this.Close(); } else { GUI.FocusControl("clearFocus"); scroolView.y = 1 + count * 60; GetItemDrawer(i); } } if (OnSelectItem == null) { EditorGUIUtility.AddCursorRect(GUILayoutUtility.GetLastRect(), MouseCursor.Link); GUI.skin.box = boxStyle; var duplicateImage = Resources.Load("duplicate") as Texture; if (GUILayout.Button(new GUIContent("", duplicateImage, "Duplicate Item"), GUILayout.MaxWidth(45), GUILayout.Height(45))) { if (EditorUtility.DisplayDialog("Duplicate the " + itemList.items[i].name, "Are you sure you want to duplicate this item? ", "Duplicate", "Cancel")) { DuplicateItem(itemList.items[i]); GUILayout.EndHorizontal(); Repaint(); break; } } if (GUILayout.Button(new GUIContent("x", "Delete Item"), GUILayout.MaxWidth(20), GUILayout.Height(45))) { if (EditorUtility.DisplayDialog("Delete the " + itemList.items[i].name, "Are you sure you want to delete this item? ", "Delete", "Cancel")) { var item = itemList.items[i]; itemList.items.RemoveAt(i); DestroyImmediate(item, true); OrderByID(ref itemList.items); AssetDatabase.SaveAssets(); serializedObject.ApplyModifiedProperties(); EditorUtility.SetDirty(itemList); GUILayout.EndHorizontal(); Repaint(); break; } } } } GUILayout.EndHorizontal(); GUI.color = color; if (currentItemDrawer != null && currentItemDrawer.item == itemList.items[i] && itemList.items.Contains(currentItemDrawer.item)) { currentItemDrawer.DrawItem(ref itemList.items, false); } } GUILayout.EndVertical(); count++; } } GUILayout.EndScrollView(); GUILayout.EndVertical(); if (GUI.changed || serializedObject.ApplyModifiedProperties()) { EditorUtility.SetDirty(itemList); } }