private void DrawItemControls(InventorySO inventory) { EditorGUILayout.BeginVertical("box"); item = (Item)EditorGUILayout.ObjectField("Item", item, typeof(Item), false); amount = EditorGUILayout.IntField("Amount", amount); var invName = "'" + inventory.name + "'"; var itemName = "'" + ((item != null) ? item.name : "(Item)") + "'"; EditorGUI.BeginDisabledGroup(item == null); if (GUILayout.Button("Check for " + itemName)) { Debug.Log(invName + " has " + inventory.value[item] + "x of " + itemName + "."); } if (GUILayout.Button("Check " + itemName + " >= " + amount)) { if (inventory.value[item] >= amount) { Debug.Log(invName + " has " + amount + " or more of " + itemName + "."); } else { Debug.Log("" + invName + " has less than " + amount + " of " + itemName + "."); } } if (GUILayout.Button("Set " + itemName + " to " + amount + "x")) { inventory.value[item] = amount; Debug.Log("Set " + invName + " " + itemName + " to " + amount + "x."); } if (GUILayout.Button("Add " + amount + "x " + itemName)) { inventory.value[item] += amount; Debug.Log("Added " + amount + "x " + itemName + " to " + invName + "."); } if (GUILayout.Button("Subtract " + amount + "x " + itemName)) { inventory.value[item] -= amount; Debug.Log("Removed " + amount + "x " + itemName + " from " + invName + "."); } if (GUILayout.Button("Remove all of " + itemName)) { if (inventory.value.Remove(item)) { Debug.Log("Removed all of " + itemName + " from " + invName + "."); } else { Debug.Log(invName + " does not have any of " + itemName + " to remove."); } } EditorGUI.EndDisabledGroup(); EditorGUILayout.EndVertical(); }
private void DrawDemoControls(InventorySO inventory) { EditorGUILayout.LabelField("Demo Controls", EditorStyles.boldLabel); if (GUILayout.Button("Clear Inventory")) { inventory.value.Clear(); Debug.Log("Cleared '" + inventory.name + "'."); } DrawItemControls(inventory); }
int ItemIndexFromController(InventorySO controller, string itemName) { // if (controller.inventoryEvents.Length == 0) // return -1; // if (string.IsNullOrEmpty(itemName)) // return -2; // for (int i = 0; i < controller.inventoryEvents.Length; i++) // { // if (controller.inventoryEvents[i].key == itemName) // return i; // } return(-3); }
void Start() { _equipment = Manager.instance.equipment; for (int i = 0; i < attributes.Length; i++) { attributes[i].SetParent(this); } for (int i = 0; i < _equipment.GetSlots.Length; i++) { _equipment.GetSlots[i].OnBeforeUpdate += OnBeforeSlotUpdate; _equipment.GetSlots[i].OnAfterUpdate += OnAfterSlotUpdate; } }
public override void OnInspectorGUI() { serializedObject.Update(); EditorGUILayout.PropertyField(m_TransitioningGameObjectProp); EditorGUILayout.PropertyField(m_TransitionTypeProp); EditorGUI.indentLevel++; if ((TransitionPoint.TransitionType)m_TransitionTypeProp.enumValueIndex == TransitionPoint.TransitionType.SameScene) { EditorGUILayout.PropertyField(m_DestinationTransformProp); } else { EditorGUILayout.PropertyField(m_NewSceneNameProp); EditorGUILayout.PropertyField(m_TransitionDestinationTagProp); } EditorGUI.indentLevel--; EditorGUILayout.PropertyField(m_TransitionWhenProp); EditorGUILayout.PropertyField(m_RequiresInventoryCheckProp); if (m_RequiresInventoryCheckProp.boolValue) { EditorGUI.indentLevel++; EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(m_InventoryControllerProp); if (EditorGUI.EndChangeCheck() || (m_InventoryControllerProp.objectReferenceValue != null && m_InventoryControllerItems.Length == 0)) { SetupInventoryItemGUI(); } if (m_InventoryControllerProp.objectReferenceValue != null) { InventorySO controller = m_InventoryControllerProp.objectReferenceValue as InventorySO; m_InventoryItemsProp.arraySize = EditorGUILayout.IntField("Inventory Items", m_InventoryItemsProp.arraySize); EditorGUI.indentLevel++; for (int i = 0; i < m_InventoryItemsProp.arraySize; i++) { SerializedProperty elementProp = m_InventoryItemsProp.GetArrayElementAtIndex(i); int itemIndex = ItemIndexFromController(controller, elementProp.stringValue); if (itemIndex == -1) { EditorGUILayout.LabelField("No items found in controller"); } else if (itemIndex == -2) { elementProp.stringValue = m_InventoryControllerItems[0].text; } else if (itemIndex == -3) { Debug.LogWarning("Previously listed item to check not found, resetting to item index 0"); elementProp.stringValue = m_InventoryControllerItems[0].text; } else { itemIndex = EditorGUILayout.Popup(new GUIContent("Item " + i), itemIndex, m_InventoryControllerItems); elementProp.stringValue = m_InventoryControllerItems[itemIndex].text; } } EditorGUI.indentLevel--; EditorGUILayout.PropertyField(m_OnHasItemProp); EditorGUILayout.PropertyField(m_OnDoesNotHaveItemProp); } else { for (int i = 0; i < m_InventoryItemsProp.arraySize; i++) { SerializedProperty elementProp = m_InventoryItemsProp.GetArrayElementAtIndex(i); elementProp.stringValue = ""; } } EditorGUI.indentLevel--; } serializedObject.ApplyModifiedProperties(); }
internal static void ConsumeItem(InventorySO inventory, ItemSO item) { inventory.items.ToList().First(it => it.itemId.Equals(item.itemId)).quantity -= 1; }
public SelectItemState(BattleSystem owner, InventorySO inventory, CommandParams commandParams) : base(owner) { this.commandParams = commandParams; this.inventory = inventory; itemSelector = GameObject.FindObjectOfType <BattleItemSelector>().GetComponent <BattleItemSelector>(); }