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