Example #1
0
 public bool CheckInventory(InventoryController inventory)
 {
     if (inventory != null)
     {
         for (var i = 0; i < inventoryItems.Length; i++)
         {
             if (!inventory.HasItem(inventoryItems[i]))
             {
                 OnDoesNotHaveItem.Invoke();
                 return(false);
             }
         }
         OnHasItem.Invoke();
         return(true);
     }
     return(false);
 }
Example #2
0
            public bool CheckInventory(InventoryController inventory) //校对库存(带入库存控制器的一个“库存”)
            {
                if (inventory != null)                                //如果这个量不为空
                {
                    for (var i = 0; i < inventoryItems.Length; i++)   //当i<库存项目的长度时
//var可以理解为匿名类型,它是一个声明变量的占位符。它主要用于在声明变量时,无法确定数据类型时使用
                    {
                        if (!inventory.HasItem(inventoryItems[i])) //如果库存项目中的i对应的与控制器中的不同
                        {
                            OnDoesNotHaveItem.Invoke();            //执行ODNHI
                            return(false);                         //返回false
                        }
                    }
                    OnHasItem.Invoke(); //如果一样,执行OHI
                    return(true);       //返回true
                }
                return(false);          //如果这个量为空,返回false
            }
Example #3
0
        int ItemIndexFromController(InventoryController 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);
        }
Example #4
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)
                {
                    InventoryController controller = m_InventoryControllerProp.objectReferenceValue as InventoryController;
                    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();
        }