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


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

    <div class="list">
    @foreach ( var weapon in GetWeapons() )
    {
        <InventoryWeapon Weapon="@weapon" IsHovered="@(weapon == Hovered)" IsActive="@(weapon == Active)"></InventoryWeapon>
    }
    </div>

</root>

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

    public int Index { get; set; }

    IEnumerable<BaseWeapon> GetWeapons()
    {
        if (Inventory is null) return Enumerable.Empty<BaseWeapon>();

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

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

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

}