﻿using UnityEngine;

namespace JLGames.RocketDriver.Games.PanelManager
{
    /// <summary>
    /// Background mode
    /// 背景模式
    /// </summary>
    public enum PanelBackgroundMode
    {
        /// <summary>
        /// None,
        /// 无，不处理
        /// </summary>
        None,

        /// <summary>
        /// Color background
        /// 纯色背景
        /// </summary>
        Color,

        /// <summary>
        /// Image background
        /// 图片背景
        /// </summary>
        Image,

        /// <summary>
        /// Screenshot background
        /// 截屏背景
        /// </summary>
        Screenshot
    }

    public interface IPanelBackgroundSettings
    {
        /// <summary>
        /// Background mode
        /// 背景类型
        /// </summary>
        PanelBackgroundMode Mode { get; }

        /// <summary>
        /// Background meta object reference Key.
        /// Use the key, we can get the object from the IPanelRegister instance.
        /// 背景元对象引用Key
        /// 可以通过Key从IPanelRegister实例中取得对象
        /// </summary>
        string OriginKey { get; }

        /// <summary>
        /// Background meta object info.
        /// 背景元对象信息
        /// </summary>
        BackgroundInfo OriginInfo { get; }

        /// <summary>
        /// Background color, used in mode "color"
        /// 背景颜色, 在color模式下被使用
        /// </summary>
        Color Color { get; }

        /// <summary>
        /// Background image bundle name
        /// 背景图片
        /// </summary>
        string ImageBundle { get; }

        /// <summary>
        /// Background image asset path
        /// 背景图片
        /// </summary>
        string ImagePath { get; }

        /// <summary>
        /// Background image sprite
        /// 背景图片
        /// </summary>
        Sprite ImageSprite { get; }

        /// <summary>
        /// Blur coefficient
        /// 模糊系数
        /// </summary>
        float BlurFactor { get; }

        /// <summary>
        /// Screenshot Imanage blur coefficient
        /// 截屏图像模糊系数
        /// </summary>
        float ScreenshotFactor { get; }
        
        /// <summary>
        /// Set which register to use
        /// 设置使用哪个注册表
        /// </summary>
        /// <param name="register"></param>
        void SetRegister(IPanelRegister register);
    }
}