namespace SWB.Shared; public interface IInventory { public NetList Items { get; set; } public GameObject Active { get; set; } public void Add( GameObject gameObject, bool makeActive = false ); public GameObject AddClone( GameObject gamePrefab, bool makeActive = true ); public bool Has( GameObject gameObject ); public void SetActive( GameObject gameObject ); public void SetActive( string name ); public void Clear(); } public interface IInventoryItem : IValid { /// Inventory slot public int Slot { get; set; } /// Image that represent the item on the HUD public string Icon { get; set; } /// Name that represent the item on the HUD public string DisplayName { get; set; } /// Called on the GameObject that will be the new active one (Broadcast for networked gameObjects!) public void OnCarryStart(); /// Called when the GameObject stops being the active one (Broadcast for networked gameObjects!) public void OnCarryStop(); /// Can the GameObject be switched out public bool CanCarryStop(); }