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