/// <summary>
        /// Add item by it's config id.
        /// </summary>
        /// <param name="id">the config id of item.</param>
        /// <returns></returns>
        private bool AddItem(InteractItemType kind, int id, int count)
        {
            int index = GetAvailableIndex(id, count);

            if (index == InvalidIndex)
            {
                return(false);
            }

            AddItemAtIndex(kind, id, index, count);

            return(true);
        }
        /// <summary>
        /// Add item to index, check the item must be the same type
        /// if there are already an item exist there.
        /// </summary>
        /// <param name="id"></param>
        /// <param name="index"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        public int AddItemAtIndex(InteractItemType kind, int id, int index, int count)
        {
            if (!IsValidAtIndex(id, index))
            {
                return(0);
            }

            int countLeft = 0;

            InteractItem bbi = GetItemByIndex(index);

            if (!System.Object.ReferenceEquals(null, bbi))
            {
                bbi.Count += count;

                if (bbi.Count > bbi.MaxCount)
                {
                    countLeft = bbi.Count - bbi.MaxCount;
                    bbi.Count = bbi.MaxCount;
                }
            }
            else
            {
                bbi       = new InteractItem();
                bbi.CfgID = id;
                bbi.Index = index;

                ItemConfig ic = ConfigDataMgr.Instance.ItemCfgLoader.GetDataByID(id);
                bbi.IconID = ic.IconID;

                bbi.Count += count;
                bbi.Kind   = InteractItemType.Item;

                Items.Add(bbi);
            }

            IndexRecorder[index] = 1;

            if (!System.Object.ReferenceEquals(null, OnAddItem))
            {
                OnAddItem(index);
            }

            return(countLeft);
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="id">now it's the config id of the item.</param>
 public bool Add(InteractItemType kind, int id, int count)
 {
     return(AddItem(kind, id, count));
 }
        public int AddItemAtIndex(InteractItemType kind, int id, int index, int count)
        {
            if (!IsValidAtIndex(id, index, count))
            {
                return(0);
            }

            InteractItem bbi = GetItemByIndex(index);

            int left = 0;

            if (kind == InteractItemType.Item) // item
            {
                if (!System.Object.ReferenceEquals(null, bbi))
                {
                    bbi.Count += count;

                    if (bbi.Count > bbi.MaxCount)
                    {
                        left      = bbi.Count - bbi.MaxCount;
                        bbi.Count = bbi.MaxCount;
                    }
                }
                else
                {
                    bbi       = new InteractItem();
                    bbi.CfgID = id;
                    bbi.Index = index;
                    bbi.Kind  = kind;

                    ItemConfig ic =
                        ConfigDataMgr.Instance.ItemCfgLoader.GetDataByID(id);
                    bbi.IconID = ic.IconID;

                    bbi.Count += count;

                    Items.Add(bbi);
                }
            }
            else if (kind == InteractItemType.Skill)  // skill
            {
                if (!System.Object.ReferenceEquals(null, bbi))
                {
                    // handle cool down.
                    bbi.Count = 1;
                }
                else
                {
                    bbi       = new InteractItem();
                    bbi.CfgID = id;
                    bbi.Index = index;
                    bbi.Kind  = kind;

                    //ItemConfig ic =
                    //    ConfigDataMgr.Instance.ItemCfgLoader.GetDataByID(id);

                    SkillConfig sc =
                        ConfigDataMgr.Instance.SkillCfgLoader.GetDataByID(id);
                    bbi.IconID = sc.IconID;

                    bbi.Count = 1;

                    Items.Add(bbi);
                }
            }

            IndexRecorder[index] = 1;

            if (!System.Object.ReferenceEquals(null, OnAddItem))
            {
                OnAddItem(index);
            }

            return(left);
        }
 public List <InteractItem_Base> GetItemList(InteractItemType type)
 {
     return(AllInteractItems[(int)type]);
 }
Exemple #6
0
 public Mission_GetResource(InteractItemType resourceType, InteractItemType storage)
 {
     ResourceType     = resourceType;
     Storage          = storage;
     AchivementCounts = 2;
 }
 public Mission_UseItem(InteractItemType itemType)
 {
     ItemType = itemType;
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="id">now it's the config id of the item.</param>
 public void Add(InteractItemType kind, int id, int count)
 {
     AddItem(kind, id, count);
 }