namespace pdinklag.CPW.Common
{
    /// <summary>
    /// Interface to control a wrestler's entrance.
    /// </summary>
    public interface IEntrance : IContext, ITargetContext
    {
        /// <summary>
        /// The number of entering wrestlers.
        /// </summary>
        int WrestlerCount { get; }

        /// <summary>
        /// Gets an entering wrestler.
        /// </summary>
        /// <param name="i">the number of the wrestler, must be less than <see cref="WrestlerCount"/></param>
        /// <returns>the wrestler</returns>
        IWrestler Wrestler(int i);

        /// <summary>
        /// Provides access to the arena.
        /// </summary>
        IArena Arena { get; }

        /// <summary>
        /// Provides control of the entrance camera.
        /// </summary>
        ICamera Camera { get; }

        /// <summary>
        /// Starts playing the wrestler's theme.
        /// </summary>
        void PlayTheme();

        /// <summary>
        /// The duration of the theme's intro in seconds.
        /// </summary>
        float ThemeIntroDuration { get; }

        /// <summary>
        /// The tempo of the theme in beats per minute.
        /// </summary>
        /// <value></value>
        float ThemeTempo { get; }

        /// <summary>
        /// Stops playing the wrestler's theme.
        /// </summary>
        void StopTheme();

        /// <summary>
        /// Shows the wrestler's nameplate for the specified duration.
        /// </summary>
        /// <param name="duration">the duration, in seconds, for which the nameplate is visible</param>
        void ShowNameplate(float duration);
    }
}
