private void InvInteractionGUI() { EditorGUILayout.BeginVertical("Button"); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Inventory interactions", EditorStyles.boldLabel); if (GUILayout.Button(addContent, EditorStyles.miniButtonRight, buttonWidth)) { Undo.RecordObject(_target, "Create inventory interaction"); _target.invButtons.Add(new Button()); _target.provideInvInteraction = true; } EditorGUILayout.EndHorizontal(); if (_target.provideInvInteraction) { if (inventoryManager) { // Create a string List of the field's names (for the PopUp box) List <string> labelList = new List <string>(); int invNumber; if (inventoryManager.items.Count > 0) { foreach (InvItem _item in inventoryManager.items) { labelList.Add(_item.label); } foreach (Button invButton in _target.invButtons) { invNumber = -1; int j = 0; string invName = ""; foreach (InvItem _item in inventoryManager.items) { // If an item has been removed, make sure selected variable is still valid if (_item.id == invButton.invID) { invNumber = j; invName = _item.label; break; } j++; } if (invNumber == -1) { // Wasn't found (item was deleted?), so revert to zero ACDebug.Log("Previously chosen item no longer exists!"); invNumber = 0; invButton.invID = 0; } EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal(); invNumber = CustomGUILayout.Popup("Inventory item:", invNumber, labelList.ToArray(), "", "The inventory item associated with the interaction"); // Re-assign variableID based on PopUp selection invButton.invID = inventoryManager.items[invNumber].id; if (settingsManager != null && settingsManager.CanGiveItems()) { if (_target.GetComponent <Char>() != null || _target.GetComponentInParent <Char>() != null) { invButton.selectItemMode = (SelectItemMode)EditorGUILayout.EnumPopup(invButton.selectItemMode, GUILayout.Width(70f)); } } if (GUILayout.Button("", CustomStyles.IconCog)) { SideMenu("Inv", _target.invButtons.Count, _target.invButtons.IndexOf(invButton)); } EditorGUILayout.EndHorizontal(); if (invName != "") { string label = invName; if (_target.GetComponent <Char>() && settingsManager != null && settingsManager.CanGiveItems()) { label = invButton.selectItemMode.ToString() + " " + label; } ButtonGUI(invButton, label, _target.interactionSource, true); } else { ButtonGUI(invButton, "Inventory", _target.interactionSource, true); } GUILayout.Box("", GUILayout.ExpandWidth(true), GUILayout.Height(1)); } } else { EditorGUILayout.LabelField("No inventory items exist!"); for (int i = 0; i < _target.invButtons.Count; i++) { _target.invButtons[i].invID = -1; } } } else { ACDebug.LogWarning("An InventoryManager is required to run the game properly - please open the Adventure Creator wizard and set one."); } } EditorGUILayout.EndVertical(); }