namespace Guru
{
    using System.Collections.Generic;
    using System.Text;
    /// 
    /// 启动参数配置
    /// 
    public partial class GuruSDKInitConfig
    {
        /// 
        /// 使用自定义的ConsentFlow启动流程
        /// 
        public bool UseCustomConsent = false;
        /// 
        /// SDK初始化完成后自动加载广告
        /// 
        public bool AutoLoadWhenAdsReady = true;
        /// 
        /// 使用IAP支付插件功能
        /// 
        public bool IAPEnabled = true;
        /// 
        /// 自动记录完成的关卡
        /// 
        public bool AutoRecordFinishedLevels = true;
        /// 
        /// 自定义 Service 云控 Key
        /// 
        public string CustomServiceKey = "";
        /// 
        /// Banner 背景颜色 Hex 值
        /// 
        public string BannerBackgroundColor = "#00000000";
        /// 
        /// 已购买去广告道具
        /// 
        public bool IsBuyNoAds = false;
        /// 
        /// Debug模式(默认关闭)
        /// 
        public bool DebugMode = false;
        /// 
        /// 云控参数的默认配置
        /// 
        /// 
        public Dictionary DefaultRemoteData = new Dictionary();
        
        /// 
        /// 支付初始化Keys
        /// 
        public byte[] GoogleKeys;       // 数据取自 GooglePlayTangle.Data();
        public byte[] AppleRootCerts;   // 数据取自 AppleTangle.Data();
        
        #region Initialization
        
        /// 
        /// 构建启动配置
        /// 
        /// 
        public static GuruSDKInitConfig Build(
            bool useCustomConsent = false, 
            bool autoLoadAds = true, 
            bool iapEnabled = true, 
            bool autoRecordFinishedLevels = true, 
            bool isBuyNoAds = false,
            string bannerBackgroundColor = "#00000000",
            bool debugMode = false,
            Dictionary defaultRemoteData = null,
            byte[] googleKeys = null,
            byte[] appleRootCerts = null)
        {
            // 创建启动用参数
            GuruSDKInitConfig config = new GuruSDKInitConfig()
            {
                UseCustomConsent = useCustomConsent,
                AutoLoadWhenAdsReady = autoLoadAds,
                IAPEnabled = iapEnabled,
                AutoRecordFinishedLevels = autoRecordFinishedLevels,
                IsBuyNoAds = isBuyNoAds,
                BannerBackgroundColor = bannerBackgroundColor,
                DebugMode = debugMode,
                GoogleKeys = googleKeys,
                AppleRootCerts = appleRootCerts,
                DefaultRemoteData = defaultRemoteData ?? new Dictionary(),
            };
#if UNITY_EDITOR
            config.DebugMode = true;
#endif
            return config;
        }
        
        #endregion
        #region Print
        public override string ToString()
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendLine($"------- Custom init Config -------");
            sb.AppendLine($"\tUseCustomConsent: {UseCustomConsent}");
            sb.AppendLine($"\tAutoLoadWhenAdsReady: {AutoLoadWhenAdsReady}");
            sb.AppendLine($"\tIAPEnabled: {IAPEnabled}");
            sb.AppendLine($"\tShowDebugLog: {DebugMode}");
            sb.AppendLine($"------- Custom init Config -------");
            return sb.ToString();
        }
        #endregion
    }
}