Items/Gift.cs
using Clover.Data;
using Clover.Interactable;
using Clover.Persistence;
using Clover.Player;
namespace Clover.Items;
[Category( "Clover/Items" )]
public class Gift : Component, IInteract, IPersistent
{
[RequireComponent] public WorldItem WorldItem { get; private set; }
private IList<PersistentItem> Items { get; set; } = new List<PersistentItem>();
public void StartInteract( PlayerCharacter player )
{
if ( !Networking.IsHost )
{
Log.Error( "Only the host can use world altering items for now." );
return;
}
if ( Items.Count == 0 )
{
Log.Warning( "No items to pick up" );
return;
}
var freeSlots = player.Inventory.Container.FreeSlots;
if ( freeSlots < Items.Count )
{
Log.Warning( "Not enough space in inventory" );
return;
}
foreach ( var item in Items )
{
player.Inventory.PickUpItem( item );
}
WorldItem.RemoveFromWorld();
}
public void FinishInteract( PlayerCharacter player )
{
}
public string GetInteractName()
{
return "Open gift";
}
public void OnSave( PersistentItem item )
{
item.SetSaveData( "Items", Items );
}
public void OnLoad( PersistentItem item )
{
Items = item.GetSaveData<IList<PersistentItem>>( "Items" );
}
}