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;        // 赋值 | |||
|  |         } | |||
|  |     } | |||
|  | } |