using Robust.Shared.GameObjects;
using Robust.Shared.Serialization;
using System;
using System.Collections.Generic;
namespace Content.Shared.GameObjects.Components.Storage
{
public abstract class SharedStorageComponent : Component
{
public override string Name => "Storage";
public override uint? NetID => ContentNetIDs.INVENTORY;
}
///
/// Updates the client component about what entities this storage is holding
///
[Serializable, NetSerializable]
public class StorageHeldItemsMessage : ComponentMessage
{
public readonly int StorageSizeMax;
public readonly int StorageSizeUsed;
public Dictionary StoredEntities;
public StorageHeldItemsMessage(Dictionary storedentities, int storageused, int storagemaxsize)
{
Directed = true;
StorageSizeMax = storagemaxsize;
StorageSizeUsed = storageused;
StoredEntities = storedentities;
}
}
///
/// Component message for removing a contained entity from the storage entity
///
[Serializable, NetSerializable]
public class RemoveEntityMessage : ComponentMessage
{
public EntityUid EntityUid;
public RemoveEntityMessage(EntityUid entityuid)
{
Directed = true;
EntityUid = entityuid;
}
}
///
/// Component message for opening the storage UI
///
[Serializable, NetSerializable]
public class OpenStorageUIMessage : ComponentMessage
{
public OpenStorageUIMessage()
{
Directed = true;
}
}
///
/// Component message for closing the storage UI.
/// E.g when the player moves too far away from the container.
///
[Serializable, NetSerializable]
public class CloseStorageUIMessage : ComponentMessage
{
public CloseStorageUIMessage()
{
Directed = true;
}
}
[NetSerializable]
[Serializable]
public enum StorageVisuals
{
Open
}
}