コード例 #1
0
        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();
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
    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;
        }
    }
コード例 #5
0
        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();
        }
コード例 #6
0
 internal static void ConsumeItem(InventorySO inventory, ItemSO item)
 {
     inventory.items.ToList().First(it => it.itemId.Equals(item.itemId)).quantity -= 1;
 }
コード例 #7
0
 public SelectItemState(BattleSystem owner, InventorySO inventory, CommandParams commandParams) : base(owner)
 {
     this.commandParams = commandParams;
     this.inventory     = inventory;
     itemSelector       = GameObject.FindObjectOfType <BattleItemSelector>().GetComponent <BattleItemSelector>();
 }