using System.Collections.Generic; using UnityEngine; using GameAnalyticsSDK; using Touka.GameLogic; namespace Touka { public class StaticOnlineParams : ToukaSingletonMonoBehaviour { public void Init() { // init all params, from local saved InitAllParams(); } private void InitAllParams() { InitAllGameParams(); } #region Save & Get value /// /// save online value by string /// /// /// public void SaveOnlineValue2Local(string _key, string _value) { ToukaUtils.SavePlayerPrefsStringByKeyValue(_key, _value); } /// /// get online value by string /// /// /// /// public string GetOnlineValueFromLocal(string _key, string _defaultValue) { string tempValue = ToukaUtils.GetPlayerPrefsStringByKey(_key, _defaultValue); return tempValue; } #endregion private List onlineParamsList = new List(); 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())); } } /// /// 初始化 /// 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); } } /// /// 解析在线参数 /// 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; } /// /// 拿到在线参数后,更新数据 /// /// public void UpdateValueByKey(string newValue) { DefaultValue = newValue; // 赋值 if (needUploadDirectly) // 若需要,则上报 { ToukaAnalyticsManager.Instance.LogEventByUmeng(string.Format("{0}_{1}", Key, newValue)); } StaticOnlineParams.Instance.SaveOnlineValue2Local(Key, newValue); // 本地缓存 } /// /// 初始化参数 /// /// public void InitValue(string _newValue) { DefaultValue = _newValue; // 赋值 } } }