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

197 lines
5.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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