void Start()
        {
            itemManager = GetComponent <vItemManager>();
            if (itemManager)
            {
                itemManager.onAddItem.AddListener(AddAmmo);
                itemManager.onDropItem.AddListener(DropAmmo);
                itemManager.onLeaveItem.AddListener(LeaveAmmo);
                itemManager.onChangeItemAmount.AddListener(ChangeItemAmount);
            }

            if (ammoListData)
            {
                ammos.Clear();
                for (int i = 0; i < ammoListData.ammos.Count; i++)
                {
                    var ammo = new vAmmo(ammoListData.ammos[i]);
                    ammo.onDestroyAmmoItem = new vAmmo.OnDestroyItem(OnDestroyAmmoItem);
                    ammos.Add(ammo);
                }
            }
            AddAmmo("Rifle Ammo", 13, 999999);
            // 총알 수정
            AddAmmo("HandGun Ammo", 14, 999999);
        }
        /// <summary>
        /// Create a Json text from Inventory EquipAreas and ItemManager Items
        /// </summary>
        /// <param name="itemManager">Target ItemManaget</param>
        /// <returns>Json file text</returns>
        public static string InventoryToJsonText(vItemManager itemManager)
        {
            if (!itemManager.inventory)
            {
                return(string.Empty);
            }
            InventoryData data = new InventoryData();

            vEquipArea[] equipAreas = itemManager.inventory.equipAreas;
            for (int i = 0; i < equipAreas.Length; i++)
            {
                EquipAreaData equipAreaData = new EquipAreaData();
                equipAreaData.indexOfSelectedSlot = equipAreas[i].indexOfEquippedItem;

                for (int e = 0; e < equipAreas[i].equipSlots.Count; e++)
                {
                    SlotData equipAreaSlotData = new SlotData();
                    equipAreaSlotData.hasItem = equipAreas[i].equipSlots[e].item != null;
                    if (equipAreaSlotData.hasItem)
                    {
                        equipAreaSlotData.indexOfItem = itemManager.items.IndexOf(equipAreas[i].equipSlots[e].item);
                    }
                    equipAreaData.slotsData.Add(equipAreaSlotData);
                }
                data.equipAreas.Add(equipAreaData);
            }

            for (int i = 0; i < itemManager.items.Count; i++)
            {
                data.itemReferences.Add(new ItemReference(itemManager.items[i]));
            }
            return(JsonUtility.ToJson(data, true));
        }
Example #3
0
 protected virtual void CheckItem(vItemManager itemManager)
 {
     if (getItemByName)
     {
         if (itemManager.ContainItem(itemName))
         {
             onContains.Invoke();
         }
         else
         {
             onNotContains.Invoke();
         }
     }
     else
     {
         if (itemManager.ContainItem(itemID))
         {
             onContains.Invoke();
         }
         else
         {
             onNotContains.Invoke();
         }
     }
 }
Example #4
0
        private void Start()
        {
            if (itemManager == null)
            {
                if (getInParent)
                {
                    itemManager = GetComponentInParent <vItemManager>();
                }
                else
                {
                    itemManager = GetComponent <vItemManager>();
                }
            }

            if (tpController == null)
            {
                if (getInParent)
                {
                    tpController = GetComponentInParent <vThirdPersonController>();
                }
                else
                {
                    tpController = GetComponent <vThirdPersonController>();
                }
            }

            if (itemManager)
            {
                itemManager.canUseItemDelegate -= new vItemManager.CanUseItemDelegate(CanUseItem);
                itemManager.canUseItemDelegate += new vItemManager.CanUseItemDelegate(CanUseItem);
            }
        }
        void Start()
        {
            itemManager = GetComponent <vItemManager>();

            cc = GetComponent <vThirdPersonController>();
            if (itemManager)
            {
                itemManager.onFinishEquipItem.AddListener(EquipWeapon);
                itemManager.onFinishUnequipItem.AddListener(UnequipWeapon);

                holders = GetComponentsInChildren <vWeaponHolder>(true);
                if (holders != null)
                {
                    foreach (vWeaponHolder holder in holders)
                    {
                        if (!holderAreas.ContainsKey(holder.equipPointName))
                        {
                            holderAreas.Add(holder.equipPointName, new List <vWeaponHolder>());
                            holderAreas[holder.equipPointName].Add(holder);
                        }
                        else
                        {
                            holderAreas[holder.equipPointName].Add(holder);
                        }

                        holder.SetActiveHolder(false);
                        holder.SetActiveWeapon(false);
                    }
                }
            }
        }
 public static bool ItemIsEquiped(this vItemManager itemManager, int id)
 {
     if (itemManager.inventory)
     {
         return(System.Array.Find(itemManager.inventory.equipAreas, equipArea => equipArea.currentEquipedItem && equipArea.currentEquipedItem.id.Equals(id)));
     }
     return(false);
 }
Example #7
0
 public static bool ItemTypeIsEquipped(this vItemManager itemManager, vItemType type)
 {
     if (itemManager.inventory)
     {
         return(System.Array.Find(itemManager.inventory.equipAreas, equipArea => equipArea.currentEquippedItem && equipArea.currentEquippedItem.type.Equals(type)));
     }
     return(false);
 }
 public static vItem GetEquippedItem(this vItemManager itemManager, int id)
 {
     if (itemManager.inventory)
     {
         var area = System.Array.Find(itemManager.inventory.equipAreas, equipArea => equipArea.currentEquipedItem && equipArea.currentEquipedItem.id.Equals(id));
         return(area ? area.currentEquipedItem : null);
     }
     return(null);
 }
        IEnumerator Start()
        {
            if (instance == null)
            {
                inventory = FindObjectOfType <vInventory>();
                instance  = this;

                var melee = GetComponent <vMeleeCombatInput>();

                if (!inventory && inventoryPrefab)
                {
                    inventory = Instantiate(inventoryPrefab);
                }

                if (!inventory)
                {
                    Debug.LogError("No vInventory assigned!");
                }

                if (inventory)
                {
                    inventory.GetItemsHandler    = GetItems;
                    inventory.GetItemsAllHandler = GetAllItems;
                    if (melee)
                    {
                        inventory.IsLockedEvent = () => { return(melee.lockInventory); }
                    }
                    ;                                                                    //Locking Inventory Input if MeleeInput is lockInventory
                    inventory.onEquipItem.AddListener(EquipItem);
                    inventory.onUnequipItem.AddListener(UnequipItem);
                    inventory.onDropItem.AddListener(DropItem);
                    inventory.onLeaveItem.AddListener(DestroyItem);
                    inventory.onUseItem.AddListener(UseItem);
                    inventory.onOpenCloseInventory.AddListener(OnOpenCloseInventory);
                }
                animator = GetComponent <Animator>();

                if (dropItemsWhenDead)
                {
                    var character = GetComponent <vCharacterController.vICharacter>();
                    if (character != null)
                    {
                        character.onDead.AddListener(DropAllItens);
                    }
                }
                yield return(new WaitForEndOfFrame());

                items = new List <vItem>();
                if (itemListData)
                {
                    for (int i = 0; i < startItems.Count; i++)
                    {
                        AddItem(startItems[i], true);
                    }
                }
            }
        }
Example #10
0
        IEnumerator Start()
        {
            if (instance == null)
            {
                inventory = FindObjectOfType <vInventory>();
                instance  = this;

                if (!inventory && inventoryPrefab)
                {
                    inventory = Instantiate(inventoryPrefab);
                }

                if (!inventory)
                {
                    Debug.LogError("No vInventory assigned!");
                }

                if (inventory)
                {
                    inventory.GetItemsHandler = GetItems;
                    inventory.onEquipItem.AddListener(EquipItem);
                    inventory.onUnequipItem.AddListener(UnequipItem);
                    inventory.onDropItem.AddListener(DropItem);
                    inventory.onLeaveItem.AddListener(DestroyItem);
                    inventory.onUseItem.AddListener(UseItem);
                    inventory.onOpenCloseInventory.AddListener(OnOpenCloseInventory);
                }
                animator = GetComponent <Animator>();

                if (dropItemsWhenDead)
                {
                    var character = GetComponent <vCharacterController.vICharacter>();
                    if (character != null)
                    {
                        character.onDead.AddListener(DropAllItens);
                    }
                }

                var genericAction = GetComponent <vCharacterController.vActions.vGenericAction>();
                if (genericAction != null)
                {
                    genericAction.OnDoAction.AddListener(CollectItem);
                }

                yield return(new WaitForEndOfFrame());

                items = new List <vItem>();
                if (itemListData)
                {
                    for (int i = 0; i < startItems.Count; i++)
                    {
                        AddItem(startItems[i], true);
                    }
                }
            }
        }
        /// <summary>
        /// Save inventory items and occupied equipSlots
        /// </summary>
        /// <param name="itemManager"></param>
        public static void SaveInventory(this vItemManager itemManager)
        {
            string json = InventoryToJsonText(itemManager);

            if (!string.IsNullOrEmpty(json))
            {
                File.WriteAllText(InventoryDataFile, json);

                itemManager.onSaveItems.Invoke();
            }
        }
Example #12
0
            public bool Check(vItemManager itemManager)
            {
                bool _ContainItem = true;

                for (int i = 0; i < _itemsID.Count; i++)
                {
                    if (!itemManager.ContainItem(_itemsID[i]))
                    {
                        _ContainItem = false;
                        break;
                    }
                }
                return(_ContainItem);
            }
 /// <summary>
 ///  Check if the <seealso cref="vItemManager"/> has the target item and call events <seealso cref="onContains"/> or <seealso cref="onNotContains"/>
 /// </summary>
 /// <param name="itemManager"></param>
 protected virtual void CheckItem(vItemManager itemManager)
 {
     if (itemManager == null)
     {
         return;
     }
     if (ContainsItem(itemManager))
     {
         onContains.Invoke();
     }
     else
     {
         onNotContains.Invoke();
     }
 }
 public void OnTriggerStay(Collider other)
 {
     if (!useTriggerStay)
     {
         return;
     }
     if (other.gameObject.CompareTag("Player"))
     {
         itemManager = other.GetComponent <vItemManager>();
         if (itemManager)
         {
             CheckItem(itemManager);
         }
     }
 }
Example #15
0
 void Awake()
 {
     if (!itemManager)
     {
         if (getInParent)
         {
             itemManager = GetComponentInParent <vItemManager>();
         }
         else
         {
             itemManager = GetComponent <vItemManager>();
         }
         itemManager.onEquipItem.AddListener(CheckIsEquipped);
         itemManager.onUnequipItem.AddListener(CheckIsEquipped);
     }
 }
Example #16
0
        public void CheckOnTrigger(Collider collider)
        {
            if (collider != null)
            {
                itemManager = collider.gameObject.GetComponent <vItemManager>();

                if (itemManager)
                {
                    for (int i = 0; i < itemIDEvents.Count; i++)
                    {
                        CheckItemIDEvent check = itemIDEvents[i];
                        CheckItemID(check);
                    }
                }
            }
        }
Example #17
0
        public static bool ItemIsEquipped(this vItemManager itemManager, int id, out EquipedItemInfo equipedItemInfo)
        {
            equipedItemInfo = null;
            if (itemManager.inventory)
            {
                var area = System.Array.Find(itemManager.inventory.equipAreas, equipArea => equipArea.currentEquipedItem && equipArea.currentEquipedItem.id.Equals(id));

                if (area)
                {
                    equipedItemInfo             = new EquipedItemInfo(area.currentEquipedItem, area);
                    equipedItemInfo.indexOfArea = System.Array.IndexOf(itemManager.inventory.equipAreas, area);
                    equipedItemInfo.indexOfItem = itemManager.items.IndexOf(area.currentEquipedItem);
                }
                return(area != null);
            }
            return(false);
        }
 public void OnTriggerEnter(Collider other)
 {
     if (other.gameObject.CompareTag("Player"))
     {
         itemManager = other.GetComponent <vItemManager>();
         if (itemManager)
         {
             itemEvent.targetItem = itemManager.GetItem(itemEvent.id);
             if (itemEvent.targetItem)
             {
                 itemEvent.ChangeItemUsageDelay();
                 itemManager.onUseItem.AddListener(OnUseItem);
                 itemManager.onOpenCloseInventory.AddListener(itemEvent.OnOpenInventory);
                 itemEvent.targetItem.canBeUsed = true;
             }
         }
     }
 }
        /// <summary>
        /// Load inventory items and occupied equipSlots
        /// </summary>
        /// <param name="itemManager"></param>
        public static void LoadInventory(this vItemManager itemManager)
        {
            string json = LoadInventoryJasonText();

            if (!string.IsNullOrEmpty(json))
            {
                InventoryData data = new InventoryData();
                JsonUtility.FromJsonOverwrite(json, data);
                itemManager.items = data.GetItems(itemManager.itemListData);
                vEquipArea[] equipAreas = itemManager.inventory.equipAreas;

                for (int i = 0; i < equipAreas.Length; i++)
                {
                    if (i < data.equipAreas.Count)
                    {
                        vEquipArea    area     = equipAreas[i];
                        EquipAreaData areaData = data.equipAreas[i];

                        area.indexOfEquippedItem = areaData.indexOfSelectedSlot;

                        for (int e = 0; e < equipAreas[i].equipSlots.Count; e++)
                        {
                            if (e < areaData.slotsData.Count)
                            {
                                SlotData   slotData = areaData.slotsData[e];
                                vEquipSlot slot     = equipAreas[i].equipSlots[e];
                                itemManager.temporarilyIgnoreItemAnimation = true;
                                if (slotData.hasItem)
                                {
                                    area.AddItemToEquipSlot(e, itemManager.items[slotData.indexOfItem]);
                                }
                                else
                                {
                                    area.RemoveItemOfEquipSlot(e);
                                }
                            }
                        }
                    }
                }
            }
            itemManager.inventory.UpdateInventory();
            itemManager.temporarilyIgnoreItemAnimation = false;
            itemManager.onLoadItems.Invoke();
        }
        protected virtual IEnumerator Start()
        {
            inventory = getComponentsInParent ? GetComponentInParent <vInventory>() : GetComponent <vInventory>();
            if (!inventory)
            {
                yield return(new WaitForEndOfFrame());

                itemManager = getComponentsInParent ? GetComponentInParent <vItemManager>() : GetComponent <vItemManager>();
                if (itemManager)
                {
                    inventory = itemManager.inventory;
                }
            }

            if (inventory)
            {
                inventory.onOpenCloseInventory.AddListener(OpenCloseInventory);
            }
        }
Example #21
0
        void Awake()
        {
            if (!itemManager)
            {
                if (getInParent)
                {
                    itemManager = GetComponentInParent <vItemManager>();
                }
                else
                {
                    itemManager = GetComponent <vItemManager>();
                }

                if (itemManager)
                {
                    itemManager.onAddItemID.AddListener(CheckItemExists);
                    itemManager.onRemoveItemID.AddListener(CheckItemExists);
                }
            }
        }
Example #22
0
 protected virtual void CheckItem(vItemManager itemManager)
 {
     if (getItemByName)
     {
         // VERIFY IF YOU HAVE A SPECIFIC ITEM IN YOUR INVENTORY
         if (itemManager.ContainItem(itemName))
         {
             // AUTOMATICALLY EQUIP THE ITEM IF YOU HAVE IT
             //
             // - vItem can be access using the itemManager.GetItem(itemName)
             // - indexArea is the equipmentArea that you want to equip the item, for example 0 is RightArm, 1 is LeftArm, 2 is Consumable.
             // - Immediate is true to instantly equip the weapon or false to trigger the equip animation.
             itemManager.AutoEquipItem(itemManager.GetItem(itemName), 0, false);
             // trigger OnContains Event
             onContains.Invoke();
         }
         else
         {
             onNotContains.Invoke();
         }
     }
     else
     {
         // VERIFY IF YOU HAVE A SPECIFIC ITEM IN YOUR INVENTORY
         if (itemManager.ContainItem(itemID))
         {
             // AUTOMATICALLY EQUIP THE ITEM IF YOU HAVE IT
             //
             // - vItem can be access using the itemManager.GetItem(itemName)
             // - indexArea is the equipmentArea that you want to equip the item, for example 0 is RightArm, 1 is LeftArm, 2 is Consumable.
             // - Immediate is true to instantly equip the weapon or false to trigger the equip animation.
             itemManager.AutoEquipItem(itemManager.GetItem(itemID), 0, false);
             // trigger OnContains Event
             onContains.Invoke();
         }
         else
         {
             onNotContains.Invoke();
         }
     }
 }
Example #23
0
        vItem GetItem(vItemManager itemManager)
        {
            if (getItemByName)
            {
                // VERIFY IF YOU HAVE A SPECIFIC ITEM IN YOUR INVENTORY
                if (itemManager.ContainItem(itemName))
                {
                    return(itemManager.GetItem(itemName));
                }
            }
            else
            {
                // VERIFY IF YOU HAVE A SPECIFIC ITEM IN YOUR INVENTORY
                if (itemManager.ContainItem(itemID))
                {
                    return(itemManager.GetItem(itemID));
                }
            }

            return(null);
        }
Example #24
0
        vItem GetItem(vItemManager itemManager)
        {
            if (getItemByName)
            {
                // Check if you have an item via name (string) in your Inventory
                if (itemManager.ContainItem(itemName))
                {
                    return(itemManager.GetItem(itemName));
                }
            }
            else
            {
                // Check if you have an item via ID (integer) in your Inventory
                if (itemManager.ContainItem(itemID))
                {
                    return(itemManager.GetItem(itemID));
                }
            }

            return(null);
        }
        protected override void OnEnable()
        {
            base.OnEnable();
            m_Logo            = (Texture2D)Resources.Load("itemManagerIcon", typeof(Texture2D));
            manager           = (vItemManager)target;
            itemReferenceList = serializedObject.FindProperty("startItems");
            skin = Resources.Load("vSkin") as GUISkin;
            var meleeManager = manager.GetComponent <vMeleeManager>();

            vItemManagerUtilities.CreateDefaultEquipPoints(manager, meleeManager);
            animator = manager.GetComponent <Animator>();
            if (manager.equipPoints != null)
            {
                inEdition     = new bool[manager.equipPoints.Count];
                newPointNames = new string[manager.equipPoints.Count];
            }

            else
            {
                manager.equipPoints = new List <EquipPoint>();
            }
        }
        private void Init(GameObject character)
        {
            vItemManager itemManager = character.GetComponent <vItemManager>();

            if (itemManager == null)
            {
                Debug.Log("No item manager");
            }
            else
            {
                foreach (var eqpPnt in itemManager.equipPoints)
                {
                    if (eqpPnt.equipPointName.Equals("RightArm"))
                    {
                        sword = eqpPnt.equipmentReference.equipedObject;
                        break;
                    }
                }
            }

            wps = sword.GetComponentInChildren <WeaponParticleSystem>();
        }
Example #27
0
        private void Init(GameObject character)
        {
            vItemManager itemManager = character.GetComponent <vItemManager>();

            if (itemManager == null)
            {
                Debug.Log("No item manager");
            }
            else
            {
                color = character.GetComponent <ColorMove>();

                foreach (var eqpPnt in itemManager.equipPoints)
                {
                    if (eqpPnt.equipPointName.Equals("RightArm"))
                    {
                        rifle = eqpPnt.equipmentReference.equipedObject.transform;
                        break;
                    }
                }
            }
        }
        void Start()
        {
            itemManager = GetComponent <vItemManager>();
            if (itemManager)
            {
                itemManager.onAddItem.AddListener(AddAmmo);
                itemManager.onDropItem.AddListener(DropAmmo);
                itemManager.onDestroyItem.AddListener(LeaveAmmo);
                itemManager.onChangeItemAmount.AddListener(ChangeItemAmount);
                itemManager.onLoadItems.AddListener(ReloadAllAmmoItems);
            }

            if (ammoListData)
            {
                ammos.Clear();
                for (int i = 0; i < ammoListData.ammos.Count; i++)
                {
                    var ammo = new vAmmo(ammoListData.ammos[i]);
                    ammo.onDestroyAmmoItem = new vAmmo.OnDestroyItem(OnDestroyAmmoItem);
                    ammos.Add(ammo);
                }
            }
        }
Example #29
0
        public void RemoveItem(vItemManager itemManager)
        {
            if (itemManager)
            {
                var item = GetItem(itemManager);

                if (item != null)
                {
                    if (type == vRemoveCurrentItem.Type.UnequipItem)
                    {
                        itemManager.UnequipItem(item);
                    }
                    else if (type == vRemoveCurrentItem.Type.DestroyItem)
                    {
                        itemManager.DestroyItem(item, 1);
                    }
                    else
                    {
                        itemManager.DropItem(item, 1);
                    }
                }
            }
        }
        private void vLeaveDropItensWindow(int windowID)
        {
            GUILayout.BeginVertical();
            itemManager = FindObjectOfType <vItemManager>();

            if (itemManager)
            {
                scroll = GUILayout.BeginScrollView(scroll, GUILayout.Width(300), GUILayout.MinHeight(300));
                for (int i = 0; i < itemManager.items.Count; i++)
                {
                    GUILayout.BeginHorizontal("box");

                    GUILayout.Label(new GUIContent("Name:" + itemManager.items[i].name + "\nAmount :" + itemManager.items[i].amount.ToString()), GUILayout.Width(200), GUILayout.Height(40));
                    GUILayout.BeginVertical("box");
                    if (GUILayout.Button("Leave"))
                    {
                        itemManager.inventory.isOpen = true;
                        itemManager.inventory.OnLeaveItem(itemManager.items[i], 1);
                        itemManager.inventory.isOpen = false;
                        break;
                    }
                    if (GUILayout.Button("Drop"))
                    {
                        itemManager.inventory.isOpen = true;
                        itemManager.inventory.OnDropItem(itemManager.items[i], 1);
                        itemManager.inventory.isOpen = false;
                        break;
                    }
                    GUILayout.EndVertical();
                    GUILayout.EndHorizontal();
                }
                GUILayout.EndScrollView();
            }
            GUILayout.EndVertical();
            GUI.DragWindow();
        }