/// <summary> /// /// </summary> float DoItemsFoldout(Rect pos, SerializedProperty prop) { m_InitialY = pos.y; pos.height = 16; vp_Inventory inventory = ((vp_Inventory)prop.serializedObject.targetObject); pos.x += 4; bool prev = inventory.CapsEnabled; inventory.CapsEnabled = EditorGUI.Toggle(pos, "Enabled", inventory.CapsEnabled); if (prev != inventory.CapsEnabled) { inventory.Refresh(); } pos.y += 16; GUI.enabled = inventory.CapsEnabled; prev = inventory.AllowOnlyListed; inventory.AllowOnlyListed = EditorGUI.Toggle(pos, "Allow only listed types", inventory.AllowOnlyListed); if (prev != inventory.AllowOnlyListed) { inventory.Refresh(); } pos.y += ((inventory.m_ItemCapInstances.Count > 0) ? 16 : 11); pos.x += 16; pos.width -= 15; // --- draw item caps --- for (int v = 0; v < inventory.m_ItemCapInstances.Count; v++) { vp_Inventory.ItemCap itemCap = inventory.m_ItemCapInstances[v]; if ((itemCap != null) && (itemCap.Type != null)) { string name = itemCap.Type.ToString(); int NO_VALUE = -1; vp_PropertyDrawerUtility.ItemCard(pos, itemCap.Type.Icon, name, itemCap.Type, ref itemCap.Cap, "Cap", delegate() { inventory.SetItemCap(itemCap.Type, itemCap.Cap); if (itemCap.Type is vp_UnitType) { inventory.Refresh(); } }, ref NO_VALUE, null, null, delegate() { m_CapToRemove = itemCap; }); pos.y += 21; } } // --- draw 'add object' box --- pos.y += 16; vp_PropertyDrawerUtility.AddObjectBox(pos, "n ItemType", typeof(vp_ItemType), delegate(Object itemType) { if (inventory.GetItemCap((vp_ItemType)itemType) != -1 && !inventory.AllowOnlyListed) { EditorUtility.DisplayDialog(m_ItemCapAlreadyExistsCaption, string.Format(m_ItemCapAlreadyExistsMessage, itemType), "OK"); } int defaultCap = 10; if (itemType is vp_UnitBankType) { defaultCap = 1; } else if (itemType is vp_UnitType) { defaultCap = 100; } inventory.SetItemCap((vp_ItemType)itemType, defaultCap); inventory.Refresh(); }); pos.y += vp_PropertyDrawerUtility.CalcAddObjectBoxHeight - 5; // handle removed item caps if (m_CapToRemove != null) { inventory.m_ItemCapInstances.Remove(m_CapToRemove); m_CapToRemove = null; } GUI.enabled = true; return(pos.y - m_InitialY); }
/// <summary> /// /// </summary> float DoItemsFoldout(Rect pos, SerializedProperty prop) { m_InitialY = pos.y; pos.height = 16; vp_Inventory inventory = ((vp_Inventory)prop.serializedObject.targetObject); pos.x += 4; bool prev = inventory.CapsEnabled; inventory.CapsEnabled = EditorGUI.Toggle(pos, "Enabled", inventory.CapsEnabled); if (prev != inventory.CapsEnabled) inventory.Refresh(); pos.y += 16; GUI.enabled = inventory.CapsEnabled; prev = inventory.AllowOnlyListed; inventory.AllowOnlyListed = EditorGUI.Toggle(pos, "Allow only listed types", inventory.AllowOnlyListed); if (prev != inventory.AllowOnlyListed) inventory.Refresh(); pos.y += ((inventory.m_ItemCapInstances.Count > 0) ? 16 : 11); pos.x += 16; pos.width -= 15; // --- draw item caps --- for (int v = 0; v < inventory.m_ItemCapInstances.Count; v++) { vp_Inventory.ItemCap itemCap = inventory.m_ItemCapInstances[v]; string name = itemCap.Type.ToString(); int NO_VALUE = -1; vp_PropertyDrawerUtility.ItemCard(pos, itemCap.Type.Icon, name, itemCap.Type, ref itemCap.Cap, "Cap", delegate() { inventory.SetItemCap(itemCap.Type, itemCap.Cap); if (itemCap.Type is vp_UnitType) inventory.Refresh(); }, ref NO_VALUE, null, null, delegate() { m_CapToRemove = itemCap; }); pos.y += 21; } // --- draw 'add object' box --- pos.y += 16; vp_PropertyDrawerUtility.AddObjectBox(pos, "n ItemType", typeof(vp_ItemType), delegate(Object itemType) { if (inventory.GetItemCap((vp_ItemType)itemType) != -1 && !inventory.AllowOnlyListed) EditorUtility.DisplayDialog(m_ItemCapAlreadyExistsCaption, string.Format(m_ItemCapAlreadyExistsMessage, itemType), "OK"); int defaultCap = 10; if (itemType is vp_UnitBankType) defaultCap = 1; else if (itemType is vp_UnitType) defaultCap = 100; inventory.SetItemCap((vp_ItemType)itemType, defaultCap); inventory.Refresh(); }); pos.y += vp_PropertyDrawerUtility.CalcAddObjectBoxHeight - 5; // handle removed item caps if (m_CapToRemove != null) { inventory.m_ItemCapInstances.Remove(m_CapToRemove); m_CapToRemove = null; } GUI.enabled = true; return (pos.y - m_InitialY); }