namespace DownKyi.Core.Settings
{
    public partial class SettingsManager
    {
        // 是否屏蔽顶部弹幕
        private readonly AllowStatus danmakuTopFilter = AllowStatus.NO;

        // 是否屏蔽底部弹幕
        private readonly AllowStatus danmakuBottomFilter = AllowStatus.NO;

        // 是否屏蔽滚动弹幕
        private readonly AllowStatus danmakuScrollFilter = AllowStatus.NO;

        // 是否自定义分辨率
        private readonly AllowStatus isCustomDanmakuResolution = AllowStatus.NO;

        // 分辨率-宽
        private readonly int danmakuScreenWidth = 1920;

        // 分辨率-高
        private readonly int danmakuScreenHeight = 1080;

        // 弹幕字体
        private readonly string danmakuFontName = "黑体";

        // 弹幕字体大小
        private readonly int danmakuFontSize = 50;

        // 弹幕限制行数
        private readonly int danmakuLineCount = 0;

        // 弹幕布局算法
        private readonly DanmakuLayoutAlgorithm danmakuLayoutAlgorithm = DanmakuLayoutAlgorithm.SYNC;


        /// <summary>
        /// 获取是否屏蔽顶部弹幕
        /// </summary>
        /// <returns></returns>
        public AllowStatus GetDanmakuTopFilter()
        {
            appSettings = GetSettings();
            if (appSettings.Danmaku.DanmakuTopFilter == 0)
            {
                // 第一次获取,先设置默认值
                SetDanmakuTopFilter(danmakuTopFilter);
                return danmakuTopFilter;
            }
            return appSettings.Danmaku.DanmakuTopFilter;
        }

        /// <summary>
        /// 设置是否屏蔽顶部弹幕
        /// </summary>
        /// <param name="danmakuFilter"></param>
        /// <returns></returns>
        public bool SetDanmakuTopFilter(AllowStatus danmakuFilter)
        {
            appSettings.Danmaku.DanmakuTopFilter = danmakuFilter;
            return SetSettings();
        }

        /// <summary>
        /// 获取是否屏蔽底部弹幕
        /// </summary>
        /// <returns></returns>
        public AllowStatus GetDanmakuBottomFilter()
        {
            appSettings = GetSettings();
            if (appSettings.Danmaku.DanmakuBottomFilter == 0)
            {
                // 第一次获取,先设置默认值
                SetDanmakuBottomFilter(danmakuBottomFilter);
                return danmakuBottomFilter;
            }
            return appSettings.Danmaku.DanmakuBottomFilter;
        }

        /// <summary>
        /// 设置是否屏蔽底部弹幕
        /// </summary>
        /// <param name="danmakuFilter"></param>
        /// <returns></returns>
        public bool SetDanmakuBottomFilter(AllowStatus danmakuFilter)
        {
            appSettings.Danmaku.DanmakuBottomFilter = danmakuFilter;
            return SetSettings();
        }

        /// <summary>
        /// 获取是否屏蔽滚动弹幕
        /// </summary>
        /// <returns></returns>
        public AllowStatus GetDanmakuScrollFilter()
        {
            appSettings = GetSettings();
            if (appSettings.Danmaku.DanmakuScrollFilter == 0)
            {
                // 第一次获取,先设置默认值
                SetDanmakuScrollFilter(danmakuScrollFilter);
                return danmakuScrollFilter;
            }
            return appSettings.Danmaku.DanmakuScrollFilter;
        }

        /// <summary>
        /// 设置是否屏蔽滚动弹幕
        /// </summary>
        /// <param name="danmakuFilter"></param>
        /// <returns></returns>
        public bool SetDanmakuScrollFilter(AllowStatus danmakuFilter)
        {
            appSettings.Danmaku.DanmakuScrollFilter = danmakuFilter;
            return SetSettings();
        }

        /// <summary>
        /// 获取是否自定义分辨率
        /// </summary>
        /// <returns></returns>
        public AllowStatus IsCustomDanmakuResolution()
        {
            appSettings = GetSettings();
            if (appSettings.Danmaku.IsCustomDanmakuResolution == 0)
            {
                // 第一次获取,先设置默认值
                IsCustomDanmakuResolution(isCustomDanmakuResolution);
                return isCustomDanmakuResolution;
            }
            return appSettings.Danmaku.IsCustomDanmakuResolution;
        }

        /// <summary>
        /// 设置是否自定义分辨率
        /// </summary>
        /// <param name="isCustomResolution"></param>
        /// <returns></returns>
        public bool IsCustomDanmakuResolution(AllowStatus isCustomResolution)
        {
            appSettings.Danmaku.IsCustomDanmakuResolution = isCustomResolution;
            return SetSettings();
        }

        /// <summary>
        /// 获取分辨率-宽
        /// </summary>
        /// <returns></returns>
        public int GetDanmakuScreenWidth()
        {
            appSettings = GetSettings();
            if (appSettings.Danmaku.DanmakuScreenWidth == 0)
            {
                // 第一次获取,先设置默认值
                SetDanmakuScreenWidth(danmakuScreenWidth);
                return danmakuScreenWidth;
            }
            return appSettings.Danmaku.DanmakuScreenWidth;
        }

        /// <summary>
        /// 设置分辨率-宽
        /// </summary>
        /// <param name="screenWidth"></param>
        /// <returns></returns>
        public bool SetDanmakuScreenWidth(int screenWidth)
        {
            appSettings.Danmaku.DanmakuScreenWidth = screenWidth;
            return SetSettings();
        }

        /// <summary>
        /// 获取分辨率-高
        /// </summary>
        /// <returns></returns>
        public int GetDanmakuScreenHeight()
        {
            appSettings = GetSettings();
            if (appSettings.Danmaku.DanmakuScreenHeight == 0)
            {
                // 第一次获取,先设置默认值
                SetDanmakuScreenHeight(danmakuScreenHeight);
                return danmakuScreenHeight;
            }
            return appSettings.Danmaku.DanmakuScreenHeight;
        }

        /// <summary>
        /// 设置分辨率-高
        /// </summary>
        /// <param name="screenHeight"></param>
        /// <returns></returns>
        public bool SetDanmakuScreenHeight(int screenHeight)
        {
            appSettings.Danmaku.DanmakuScreenHeight = screenHeight;
            return SetSettings();
        }

        /// <summary>
        /// 获取弹幕字体
        /// </summary>
        /// <returns></returns>
        public string GetDanmakuFontName()
        {
            appSettings = GetSettings();
            if (appSettings.Danmaku.DanmakuFontName == null)
            {
                // 第一次获取,先设置默认值
                SetDanmakuFontName(danmakuFontName);
                return danmakuFontName;
            }
            return appSettings.Danmaku.DanmakuFontName;
        }

        /// <summary>
        /// 设置弹幕字体
        /// </summary>
        /// <param name="danmakuFontName"></param>
        /// <returns></returns>
        public bool SetDanmakuFontName(string danmakuFontName)
        {
            appSettings.Danmaku.DanmakuFontName = danmakuFontName;
            return SetSettings();
        }

        /// <summary>
        /// 获取弹幕字体大小
        /// </summary>
        /// <returns></returns>
        public int GetDanmakuFontSize()
        {
            appSettings = GetSettings();
            if (appSettings.Danmaku.DanmakuFontSize == 0)
            {
                // 第一次获取,先设置默认值
                SetDanmakuFontSize(danmakuFontSize);
                return danmakuFontSize;
            }
            return appSettings.Danmaku.DanmakuFontSize;
        }

        /// <summary>
        /// 设置弹幕字体大小
        /// </summary>
        /// <param name="danmakuFontSize"></param>
        /// <returns></returns>
        public bool SetDanmakuFontSize(int danmakuFontSize)
        {
            appSettings.Danmaku.DanmakuFontSize = danmakuFontSize;
            return SetSettings();
        }

        /// <summary>
        /// 获取弹幕限制行数
        /// </summary>
        /// <returns></returns>
        public int GetDanmakuLineCount()
        {
            appSettings = GetSettings();
            if (appSettings.Danmaku.DanmakuLineCount == 0)
            {
                // 第一次获取,先设置默认值
                SetDanmakuLineCount(danmakuLineCount);
                return danmakuLineCount;
            }
            return appSettings.Danmaku.DanmakuLineCount;
        }

        /// <summary>
        /// 设置弹幕限制行数
        /// </summary>
        /// <param name="danmakuLineCount"></param>
        /// <returns></returns>
        public bool SetDanmakuLineCount(int danmakuLineCount)
        {
            appSettings.Danmaku.DanmakuLineCount = danmakuLineCount;
            return SetSettings();
        }

        /// <summary>
        /// 获取弹幕布局算法
        /// </summary>
        /// <returns></returns>
        public DanmakuLayoutAlgorithm GetDanmakuLayoutAlgorithm()
        {
            appSettings = GetSettings();
            if (appSettings.Danmaku.DanmakuLayoutAlgorithm == 0)
            {
                // 第一次获取,先设置默认值
                SetDanmakuLayoutAlgorithm(danmakuLayoutAlgorithm);
                return danmakuLayoutAlgorithm;
            }
            return appSettings.Danmaku.DanmakuLayoutAlgorithm;
        }

        /// <summary>
        /// 设置弹幕布局算法
        /// </summary>
        /// <param name="danmakuLayoutAlgorithm"></param>
        /// <returns></returns>
        public bool SetDanmakuLayoutAlgorithm(DanmakuLayoutAlgorithm danmakuLayoutAlgorithm)
        {
            appSettings.Danmaku.DanmakuLayoutAlgorithm = danmakuLayoutAlgorithm;
            return SetSettings();
        }

    }
}