Exemple #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);
 }
        int ItemIndexFromController(InventoryController controller, string itemName)
        {
            return(0);

            /*
             * 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;
             */
        }
        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);
        }
        // MonoBehaviour Messages - called by Unity internally.
        void Awake()
        {
            s_PlayerInstance = this;

            m_CharacterController2D = GetComponent <CharacterController2D>();
            m_Animator            = GetComponent <Animator>();
            m_Capsule             = GetComponent <CapsuleCollider2D>();
            m_Transform           = transform;
            m_InventoryController = GetComponent <InventoryController>();

            m_CurrentBulletSpawnPoint = spriteOriginallyFacesLeft ? facingLeftBulletSpawnPoint : facingRightBulletSpawnPoint;

            for (int i = 0; i < transform.childCount; i++)
            {
                if (transform.GetChild(i).name == "Anim_kiyohime_puppet")
                {
                    visuals       = transform.GetChild(i).gameObject;
                    defaultScaleX = visuals.transform.localScale.x;
                }
            }
        }
        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_ResetInputValuesOnTransitionProp);

            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();
        }