UI/Vitals/AmmoPickupFeed.razor
@using Sandbox;
@using Sandbox.UI;
@namespace Sandbox
@inherits Panel

<root>
    @if ( Hud.IsVisible( HudElement.AmmoPickups ) )
    {
        @foreach ( var notice in VisibleNotices() )
        {
            <AmmoPickupRow Notice=@notice @key="notice" />
        }
    }
</root>

@code
{
    IEnumerable<PlayerInventory.AmmoPickupNotice> VisibleNotices()
    {
        var inventory = Player.FindLocalPlayer()?.GetComponent<PlayerInventory>();
        if ( !inventory.IsValid() ) return Enumerable.Empty<PlayerInventory.AmmoPickupNotice>();
        return inventory.AmmoPickupNotices.Where( notice => notice.ExpiresAt > RealTime.Now );
    }

    protected override int BuildHash()
    {
        var hash = new HashCode();
        hash.Add( Hud.IsVisible( HudElement.AmmoPickups ) );
        foreach ( var notice in VisibleNotices() )
        {
            hash.Add( notice );
            hash.Add( notice.Amount );
        }
        return hash.ToHashCode();
    }
}