using System; using System.Collections.Generic; using System.Linq; using System.Text; using Crestron.SimplSharp; using PepperDash.Core; namespace PepperDash.Essentials.Interfaces.Components { /// /// Describes a room comprised of components /// public interface IComponentRoom : IKeyed { List Components { get; } List Activities { get; } List GetRoomComponentsOfType(Type type); List GetOrderedActvities(); } /// /// Describes a component /// public interface IComponent : IKeyed { } /// /// Describes a room component /// public interface IRoomComponent : IComponent { IComponentRoom Parent { get; } } /// /// Describes a room activity component /// public interface IRoomActivityComponent : IRoomComponent { string Label { get; } string Icon { get; } IRoomComponent Component { get; } int Order { get; } void StartActivity(); void EndActivity(); } /// /// Describes a room component that can be "used" by a user /// public interface IUsableRoomComponent { bool InUse { get; } void StartUse(); void EndUse(); } /// /// Describes a room behaviour component /// public interface IRoomBehaviourComponent : IUsableRoomComponent { } /// /// Describes a room device component /// public interface IRoomDeviceComponent : IUsableRoomComponent { } }