using System;
|
using System.Collections.Generic;
|
|
namespace Snxxz.UI
|
{
|
[XLua.LuaCallCSharp]
|
public class RolePointModel : Model,IPlayerLoginOk
|
{
|
public override void Init()
|
{
|
ParseConfig();
|
FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
|
PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent;
|
}
|
|
public override void UnInit()
|
{
|
FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
|
PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= PlayerDataRefreshInfoEvent;
|
}
|
|
public void OnPlayerLoginOk()
|
{
|
UpdateRedPoint();
|
}
|
|
private void PlayerDataRefreshInfoEvent(PlayerDataRefresh refreshType)
|
{
|
if (refreshType == PlayerDataRefresh.FreePoint)
|
{
|
UpdateRedPoint();
|
}
|
}
|
|
private void OnFuncStateChangeEvent(int func)
|
{
|
if ((FuncOpenEnum)func == FuncOpenEnum.AddPoint)
|
{
|
UpdateRedPoint();
|
}
|
}
|
|
private Dictionary<int, Dictionary<int, string>> formulaDict = new Dictionary<int, Dictionary<int, string>>();
|
public bool TryGetPointFormula(int job, out Dictionary<int, string> dict)
|
{
|
return formulaDict.TryGetValue(job, out dict);
|
}
|
|
public bool ContainsProperty(int type)
|
{
|
Dictionary<int, string> dict;
|
return formulaDict.TryGetValue(PlayerDatas.Instance.baseData.Job, out dict) && dict.ContainsKey(type);
|
}
|
|
private Dictionary<int, Dictionary<int, float>> suggestDict = new Dictionary<int, Dictionary<int, float>>();
|
public bool TryGetPointSuggest(int job, out Dictionary<int, float> dict)
|
{
|
return suggestDict.TryGetValue(job, out dict);
|
}
|
|
public int[] propertys { get; private set; }
|
|
private Dictionary<int, Dictionary<int, int>> initPointDict = new Dictionary<int, Dictionary<int, int>>();
|
public bool TryGetPointInit(int job,out Dictionary<int, int> dict)
|
{
|
return initPointDict.TryGetValue(job, out dict);
|
}
|
|
private void ParseConfig()
|
{
|
FuncConfigConfig config;
|
for (int i = 1; i <= 3; i++)
|
{
|
config = FuncConfigConfig.Get(string.Format("PointAttr{0}", i));
|
if (config != null)
|
{
|
Dictionary<int, string> dic = ConfigParse.GetDic<int, string>(config.Numerical1);
|
formulaDict.Add(i, dic);
|
}
|
config = FuncConfigConfig.Get(string.Format("PointAdd{0}", i));
|
if (config != null)
|
{
|
Dictionary<int, float> dic = ConfigParse.GetDic<int, float>(config.Numerical1);
|
suggestDict.Add(i, dic);
|
}
|
config = FuncConfigConfig.Get(string.Format("CreatRolePoint{0}", i));
|
if (config != null)
|
{
|
Dictionary<int, int> dic = ConfigParse.GetDic<int, int>(config.Numerical1);
|
initPointDict.Add(i, dic);
|
}
|
}
|
config = FuncConfigConfig.Get("PointAddAttr");
|
propertys = ConfigParse.GetMultipleStr<int>(config.Numerical1);
|
}
|
|
public Redpoint redpoint = new Redpoint(10101, 1010101);
|
|
public void UpdateRedPoint()
|
{
|
if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.AddPoint))
|
{
|
return;
|
}
|
redpoint.state = PlayerDatas.Instance.baseData.FreePoint > 0 ? RedPointState.Simple : RedPointState.None;
|
}
|
|
public void SendAddPoint(int type, int point)
|
{
|
C0301_tagCAddPoint pak = new C0301_tagCAddPoint();
|
pak.Type = (byte)type;
|
pak.Point = (ushort)point;
|
GameNetSystem.Instance.SendInfo(pak);
|
}
|
}
|
}
|