mergemilitary/Assets/TKGSDK/UnitySDK/Scripts/AnalyticsScripts/ToukaSDK/internal/Settings/StaticOnlineParams.cs

197 lines
5.8 KiB
C#
Raw Normal View History

2022-05-23 13:39:59 +00:00
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; // 赋值
}
}
}