Пример #1
0
        /// <summary>
        ///
        /// </summary>
        public void SetItem(SavableItem item)
        {
            if (CurrentItem)
            {
                CurrentItem.PropertyChanged.RemoveListener(On_PropertyChanged);
                CurrentItem.StackChanged.RemoveListener(On_StackChanged);
            }

            CurrentItem = item;

            if (CurrentItem)
            {
                CurrentItem.PropertyChanged.AddListener(On_PropertyChanged);
                CurrentItem.StackChanged.AddListener(On_StackChanged);
            }

            Updated.Send(this);
        }
Пример #2
0
        public bool TryAddItem(ItemData itemData, int amount, out int added, List <ItemProperty.Value> customPropertyValues = null)
        {
            added = 0;

            if (HasItem && itemData.Id != CurrentItem.Id)
            {
                return(false);
            }

            if (!HasItem)
            {
                CurrentItem = new SavableItem(itemData, 1, customPropertyValues);
                CurrentItem.CurrentInStack = 0;
                CurrentItem.PropertyChanged.AddListener(On_PropertyChanged);
                CurrentItem.StackChanged.AddListener(On_StackChanged);
            }

            int oldValue       = CurrentItem.CurrentInStack;
            int surplus        = amount + oldValue - itemData.StackSize;
            int currentInStack = oldValue;

            if (surplus <= 0)
            {
                currentInStack += amount;
            }
            else
            {
                currentInStack = itemData.StackSize;
            }

            CurrentItem.CurrentInStack = currentInStack;
            added = currentInStack - oldValue;

            Updated.Send(this);

            return(added > 0);
        }