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
{
}
}