197 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			197 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System.Collections.Generic;
 | ||
| using UnityEngine;
 | ||
| using GameAnalyticsSDK;
 | ||
| using Touka.GameLogic;
 | ||
| 
 | ||
| namespace Touka
 | ||
| {
 | ||
|     public class StaticOnlineParams : ToukaSingletonMonoBehaviour<StaticOnlineParams>
 | ||
|     {
 | ||
|         public void Init()
 | ||
|         {
 | ||
|             // init all params, from local saved
 | ||
|             InitAllParams();
 | ||
|         }
 | ||
| 
 | ||
|         private void InitAllParams()
 | ||
|         {
 | ||
|             InitAllGameParams();
 | ||
|         }
 | ||
| 
 | ||
|         #region Save & Get value
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// save online value by string
 | ||
|         /// </summary>
 | ||
|         /// <param name="_key"></param>
 | ||
|         /// <param name="_value"></param>
 | ||
|         public void SaveOnlineValue2Local(string _key, string _value)
 | ||
|         {
 | ||
|             ToukaUtils.SavePlayerPrefsStringByKeyValue(_key, _value);
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// get online value by string
 | ||
|         /// </summary>
 | ||
|         /// <param name="_key"></param>
 | ||
|         /// <param name="_defaultValue"></param>
 | ||
|         /// <returns></returns>
 | ||
|         public string GetOnlineValueFromLocal(string _key, string _defaultValue)
 | ||
|         {
 | ||
|             string tempValue = ToukaUtils.GetPlayerPrefsStringByKey(_key, _defaultValue);
 | ||
|             return tempValue;
 | ||
|         }
 | ||
| 
 | ||
|         #endregion
 | ||
| 
 | ||
|         private List<ToukaOnlineParam> onlineParamsList = new List<ToukaOnlineParam>();
 | ||
| 
 | ||
|         public void InitData()
 | ||
|         {
 | ||
|             //加入内置参数列表
 | ||
|             foreach(string tKey in ToukaInnerParams.OnlineParamDic.Keys)
 | ||
|             {
 | ||
|                 onlineParamsList.Add(new ToukaOnlineParam(tKey, ToukaInnerParams.OnlineParamDic[tKey].ToString()));
 | ||
|             }
 | ||
| 
 | ||
|             //加入自定义参数列表
 | ||
|             foreach (string tKey in TKGParams.OnlineParamDic.Keys)
 | ||
|             {
 | ||
|                 onlineParamsList.Add(new ToukaOnlineParam(tKey, TKGParams.OnlineParamDic[tKey].ToString()));
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         /// <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);
 | ||
| 
 | ||
| 
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         public string GetOnlineValue(string pKey)
 | ||
|         {
 | ||
|             ToukaOnlineParam tParam = onlineParamsList.Find(pItem => pItem.Key.Equals(pKey));
 | ||
|             if (tParam != null)
 | ||
|             {
 | ||
|                 return tParam.DefaultValue;
 | ||
|             }
 | ||
| 
 | ||
|             return "";
 | ||
|         }
 | ||
| 
 | ||
|         public int GetOnlineInt(string pKey)
 | ||
|         {
 | ||
|             if (int.TryParse(GetOnlineValue(pKey), out int tValue))
 | ||
|             {
 | ||
|                 return tValue;
 | ||
|             }
 | ||
| 
 | ||
|             return 0;
 | ||
|         }
 | ||
| 
 | ||
|         public float GetOnlineFloat(string pKey)
 | ||
|         {
 | ||
|             if (float.TryParse(GetOnlineValue(pKey), out float tValue))
 | ||
|             {
 | ||
|                 return tValue;
 | ||
|             }
 | ||
| 
 | ||
|             return 0f;
 | ||
|         }
 | ||
| 
 | ||
|         public bool GetOnlineBool(string pKey)
 | ||
|         {
 | ||
|             return GetOnlineInt(pKey) == 1;
 | ||
|         }
 | ||
|     }
 | ||
| 
 | ||
|     public class ToukaOnlineParam
 | ||
|     {
 | ||
|         public string Key;      // key
 | ||
|         public bool needUploadDirectly = true;          // 获取到在线参数后是否立刻上传,默认:是
 | ||
| 
 | ||
|         private string defaultValue;
 | ||
|         public string DefaultValue      // value
 | ||
|         {
 | ||
|             get
 | ||
|             {
 | ||
|                 string tempOnlineValue = TGTools.Instance.ConfigValueForKey(Key);
 | ||
|                 Debug.Log("value ----- tempOnlineValue : " + tempOnlineValue);
 | ||
|                 if (!string.IsNullOrEmpty(tempOnlineValue))        // 实时取一下在线参数
 | ||
|                 {
 | ||
|                     UpdateValueByKey(tempOnlineValue);
 | ||
|                 }
 | ||
| 
 | ||
|                 return defaultValue;
 | ||
|             }
 | ||
|             set
 | ||
|             {
 | ||
|                 defaultValue = value;
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         public ToukaOnlineParam(string _key, string _defaultValue, bool _uploadDirectly = true)
 | ||
|         {
 | ||
|             Key = _key;
 | ||
|             DefaultValue = _defaultValue;
 | ||
|             needUploadDirectly = _uploadDirectly;
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 拿到在线参数后,更新数据
 | ||
|         /// </summary>
 | ||
|         /// <param name="newValue"></param>
 | ||
|         public void UpdateValueByKey(string newValue)
 | ||
|         {
 | ||
|             DefaultValue = newValue;        // 赋值
 | ||
| 
 | ||
|             if (needUploadDirectly)        // 若需要,则上报
 | ||
|             {
 | ||
|                 ToukaAnalyticsManager.Instance.LogEventByUmeng(string.Format("{0}_{1}", Key, newValue));
 | ||
|             }
 | ||
| 
 | ||
|             StaticOnlineParams.Instance.SaveOnlineValue2Local(Key, newValue);        // 本地缓存
 | ||
|         }
 | ||
| 
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 初始化参数
 | ||
|         /// </summary>
 | ||
|         /// <param name="_newValue"></param>
 | ||
|         public void InitValue(string _newValue)
 | ||
|         {
 | ||
|             DefaultValue = _newValue;        // 赋值
 | ||
|         }
 | ||
|     }
 | ||
| } |