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> formulaDict = new Dictionary>(); public bool TryGetPointFormula(int job, out Dictionary dict) { return formulaDict.TryGetValue(job, out dict); } public bool ContainsProperty(int type) { Dictionary dict; return formulaDict.TryGetValue(PlayerDatas.Instance.baseData.Job, out dict) && dict.ContainsKey(type); } private Dictionary> suggestDict = new Dictionary>(); public bool TryGetPointSuggest(int job, out Dictionary dict) { return suggestDict.TryGetValue(job, out dict); } public int[] propertys { get; private set; } private Dictionary> initPointDict = new Dictionary>(); public bool TryGetPointInit(int job,out Dictionary 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 dic = ConfigParse.GetDic(config.Numerical1); formulaDict.Add(i, dic); } config = FuncConfigConfig.Get(string.Format("PointAdd{0}", i)); if (config != null) { Dictionary dic = ConfigParse.GetDic(config.Numerical1); suggestDict.Add(i, dic); } config = FuncConfigConfig.Get(string.Format("CreatRolePoint{0}", i)); if (config != null) { Dictionary dic = ConfigParse.GetDic(config.Numerical1); initPointDict.Add(i, dic); } } config = FuncConfigConfig.Get("PointAddAttr"); propertys = ConfigParse.GetMultipleStr(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); } } }