using GameAnalyticsSDK;
using UnityEngine;
using System.Collections.Generic;

/*
 在线参数类

若需新增一个在线参数：
1. 可新添加一行 ToukaOnlineParam 定义，参数为 umeng后台配的key 和 其本地默认值。
2. 把新定义的参数 加到 onlineParamsList 中
3. 使用在线参数：int.Parse(StaticOnlineParams.IV1_PerM_OnlineParam.DefaultValue);/ string.Parse(xxx.DefaultValue);

内部会处理，拿到一次在线参数后，缓存在本地，下次启动若没拿到在线参数，会用上次缓存的。以保证参数变量不会跳来跳去。在线参数缓存后，会更新为新的在线参数值。
在线参数没配的，直接走本地默认值。
 
 */
public partial class StaticOnlineParams {

    // ---------------------  SDK 内部封装到的 在线参数，默认值需根据需求修改 -----------------------

    // 新用户看N次广告上报
    public static ToukaOnlineParam NewUserAdsCountOnlineParams = new ToukaOnlineParam("NewUserAdsCount", 10.ToString());        // 新用户看N次广告上报
    
    // 插屏相关在线参数 IV1
    public static ToukaOnlineParam IV1_PreTimesN_OnlineParam = new ToukaOnlineParam("IV1_PreTimesN", 1.ToString());     // 前N次触发不弹插屏
    public static ToukaOnlineParam IV1_PerM_OnlineParam = new ToukaOnlineParam("IV1_PerM", 1.ToString());           // 每M次触发一次
    public static ToukaOnlineParam IV1_MinTimeL_OnlineParam = new ToukaOnlineParam("IV1_MinTimeL", 15.ToString());        // 和上次广告间隔15s

    // 插屏相关在线参数 IV2
    public static ToukaOnlineParam IV2_PreTimesN_OnlineParam = new ToukaOnlineParam("IV2_PreTimesN", 1.ToString());     // 前N次触发不弹插屏
    public static ToukaOnlineParam IV2_PerM_OnlineParam = new ToukaOnlineParam("IV2_PerM", 1.ToString());           // 每M次触发一次
    public static ToukaOnlineParam IV2_MinTimeL_OnlineParam = new ToukaOnlineParam("IV2_MinTimeL", 15.ToString());        // 和上次广告间隔15s

    // ---------------------  游戏新增 在线参数 (key, 默认值) -----------------------

    // ** 第一步：新增一行在线参数定义
    public static ToukaOnlineParam NewUserRVCountOnlineParams = new ToukaOnlineParam("NewUserRVCount", 6.ToString());       // 新用户看N次激励视频广告上报
    public static ToukaOnlineParam NewUserPassXLevelOnlineParams = new ToukaOnlineParam("NewUserPassXLevel", 15.ToString());        // 新用户通关第N关上报

    public static ToukaOnlineParam IsShowAuthViewOnlineParams = new ToukaOnlineParam("isShowAuthView", 0.ToString());        // 实名认证开关，默认关闭

    private List<ToukaOnlineParam> onlineParamsList = new List<ToukaOnlineParam>() {
        NewUserAdsCountOnlineParams,IV1_PerM_OnlineParam, IV1_MinTimeL_OnlineParam, IV1_PreTimesN_OnlineParam,
        IV2_PerM_OnlineParam, IV2_MinTimeL_OnlineParam, IV2_PreTimesN_OnlineParam
        };

    public void InitData()
    {
        // ** 第二步：添加到 在线参数列表里
        onlineParamsList.Add(NewUserRVCountOnlineParams);
        onlineParamsList.Add(NewUserPassXLevelOnlineParams);

        onlineParamsList.Add(IsShowAuthViewOnlineParams);
    }

    /// <summary>
    /// 初始化
    /// </summary>
    private void InitAllGameParams()
    {
        // init values
        foreach(ToukaOnlineParam tempParam in onlineParamsList)
        {
            tempParam.InitValue(GetOnlineValueFromLocal(tempParam.Key, tempParam.DefaultValue));        // 初始化，取本地缓存的值

            Debug.Log("[StaticOnlineParams] 初始化Umeng在线参数，本地缓存值key ：" + tempParam.Key + " , value : " + tempParam.DefaultValue);
        }
    }

    /// <summary>
    /// 解析在线参数
    /// </summary>
    public void parseGameOnlineConfig()
    {
        Debug.Log("[StaticOnlineParams] 开始解析Umeng回来的在线参数 ----------");

        // update values
        foreach (ToukaOnlineParam tempParam in onlineParamsList)
        {
            string tempValue = "";

            tempValue = TGTools.Instance.ConfigValueForKey(tempParam.Key);
            
            if (!string.IsNullOrEmpty(tempValue))
            {
                Debug.Log("[StaticOnlineParams] 拿到的Umeng在线参数， key ：" + tempParam.Key + " , value : " + tempValue);
                tempParam.UpdateValueByKey(tempValue);

                
            }
        }
    }
}