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