UI/InventorySlot.razor
@using Sandbox;
@using Sandbox.UI;
@inherits Panel

@if ( GetWeapons().Count() < 1 )
{
    return;
}

<root>
    <div class="index">
        <label>@(Index+1)</label>
    </div>

    <div class="list">
    @foreach ( var weapon in GetWeapons() )
    {
        <InventoryWeapon Carryable="@weapon" [email protected]() IsHovered="@(weapon == Hovered)" />
    }
    </div>

</root>

@code
{
    public PlayerInventory Inventory { get; set; }
    public Carryable Active { get; set; }
    public Carryable Hovered { get; set; }

    public int Index { get; set; }

    IEnumerable<Carryable> GetWeapons()
    {
        if (!Inventory.IsValid()) return Enumerable.Empty<Carryable>();

        return Inventory.Carryables.Where(x => x.InventorySlot == Index).OrderBy(x => x.InventoryOrder);
    }

    public override void Tick()
    {
        base.Tick();

        SetClass("active", Hovered?.InventorySlot == Index || Active?.InventorySlot == Index);
    }

	protected override int BuildHash() => HashCode.Combine( GetWeapons().Count() );

}