using System;
using System.Collections.Generic;
using System.Linq;
using StardewValley;
namespace StardewModdingAPI.Events
{
/// Event arguments for an event.
public class InventoryChangedEventArgs : EventArgs
{
/*********
** Accessors
*********/
/// The player whose inventory changed.
public Farmer Player { get; }
/// The added items.
public IEnumerable- Added { get; }
/// The removed items.
public IEnumerable
- Removed { get; }
/// The items whose stack sizes changed, with the relative change.
public IEnumerable QuantityChanged { get; }
/// Whether the affected player is the local one.
public bool IsLocalPlayer => this.Player.IsLocalPlayer;
/*********
** Public methods
*********/
/// Construct an instance.
/// The player whose inventory changed.
/// The inventory changes.
internal InventoryChangedEventArgs(Farmer player, ItemStackChange[] changedItems)
{
this.Player = player;
this.Added = changedItems
.Where(n => n.ChangeType == ChangeType.Added)
.Select(p => p.Item)
.ToArray();
this.Removed = changedItems
.Where(n => n.ChangeType == ChangeType.Removed)
.Select(p => p.Item)
.ToArray();
this.QuantityChanged = changedItems
.Where(n => n.ChangeType == ChangeType.StackChange)
.Select(change => new ItemStackSizeChange(
item: change.Item,
oldSize: change.Item.Stack - change.StackChange,
newSize: change.Item.Stack
))
.ToArray();
}
}
}