AI захватит мир
This commit is contained in:
@@ -1,24 +1,54 @@
|
||||
using Sandbox.Gravity;
|
||||
using Sandbox.UI;
|
||||
using Sasalka;
|
||||
using System;
|
||||
using System.Linq;
|
||||
|
||||
namespace Sandbox.UI;
|
||||
namespace Sasalka;
|
||||
|
||||
[Icon( "skip_next" )]
|
||||
public sealed class PickupItem : InteractionButton
|
||||
{
|
||||
[Property] public override string Label { get; set; } = "E";
|
||||
|
||||
protected override void OnStart()
|
||||
{
|
||||
base.OnStart();
|
||||
|
||||
// Устанавливаем правильную метку для предмета
|
||||
if ( GameObject.Components.TryGet<InventoryItem>( out var inventoryItem ) )
|
||||
{
|
||||
Label = inventoryItem.Definition?.Name ?? "Подобрать";
|
||||
}
|
||||
}
|
||||
|
||||
public override bool Press( IPressable.Event e )
|
||||
{
|
||||
base.Press( e );
|
||||
|
||||
if ( e.Source.Components.TryGet<Dedugan>( out var dedugan ) )
|
||||
{
|
||||
dedugan.Inventory.AddItem( Components.Get<InventoryItem>() );
|
||||
RpcDestroy();
|
||||
var inventoryItem = Components.Get<InventoryItem>();
|
||||
|
||||
if ( inventoryItem != null && dedugan.Inventory != null )
|
||||
{
|
||||
// Пытаемся добавить предмет в инвентарь, остаток остаётся на земле
|
||||
int left = dedugan.Inventory.AddItem( inventoryItem );
|
||||
if ( left <= 0 )
|
||||
{
|
||||
RpcDestroy();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
inventoryItem.Count = left;
|
||||
// Оставляем предмет с новым количеством на земле
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
[Rpc.Broadcast]
|
||||
|
||||
Reference in New Issue
Block a user