72 lines
1.7 KiB
Plaintext
72 lines
1.7 KiB
Plaintext
@using Sasalka
|
|
@inherits PanelComponent
|
|
@namespace Sasalka.Ui
|
|
|
|
<root class="inventory @( Inventar.IsInventoryOpen ? "" : "hidden" )">
|
|
<div class="inventory-panel">
|
|
@if ( PlayerInventory != null )
|
|
{
|
|
<div class="inventory-header">
|
|
<div class="inventory-title">Инвентарь</div>
|
|
@if ( !PlayerInventory.UnlimitedSlots )
|
|
{
|
|
<div class="inventory-slots">
|
|
@PlayerInventory.GetUsedSlots() / @PlayerInventory.MaxInventorySlots слотов
|
|
<div class="inventory-usage-bar">
|
|
<div class="inventory-usage-fill" style="width: @(PlayerInventory.GetInventoryUsagePercentage())%"></div>
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
|
|
@if ( PlayerInventory.Items.Count > 0 )
|
|
{
|
|
@foreach ( var item in PlayerInventory.Items )
|
|
{
|
|
<Sasalka.Ui.InventoryItem Item="@item" OnItemClick="@( UseItem )" OnItemRightClick="@( DropItem )"/>
|
|
}
|
|
}
|
|
else
|
|
{
|
|
<div class="inventory-empty">Инвентарь пуст</div>
|
|
}
|
|
}
|
|
</div>
|
|
</root>
|
|
|
|
@code {
|
|
Dedugan Player => Dedugan.Local;
|
|
Inventar PlayerInventory => Player?.Inventory;
|
|
|
|
|
|
void UseItem( Sasalka.InventoryItem item )
|
|
{
|
|
Player?.Inventory?.EquipItem( item );
|
|
}
|
|
|
|
void DropItem( Sasalka.InventoryItem item )
|
|
{
|
|
Player?.Inventory?.DropItem( item, Player.CameraPivot.WorldPosition + Player.Camera.LocalRotation.Right * 50 );
|
|
}
|
|
|
|
protected override void OnUpdate()
|
|
{
|
|
if ( Input.Pressed( "Score" ) )
|
|
{
|
|
Inventar.IsInventoryOpen = !Inventar.IsInventoryOpen;
|
|
}
|
|
}
|
|
|
|
protected override int BuildHash()
|
|
{
|
|
if ( !Inventar.IsInventoryOpen || PlayerInventory == null )
|
|
return -1;
|
|
|
|
var hash = new HashCode();
|
|
hash.Add( Inventar.IsInventoryOpen );
|
|
|
|
return hash.ToHashCode();
|
|
}
|
|
|
|
}
|