少年修仙传客户端代码仓库
System/Role/TitleModel.cs
@@ -2,6 +2,7 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using UnityEngine;
namespace Snxxz.UI
{
@@ -10,20 +11,31 @@
    {
        const string TITLEKEY = "Title";
        public int selectTitleId; //点击升星的称号ID  和 presentSelectTitle 不一样用处
        public bool reikiPointRemindSymble { get; private set; }
        ReikiRootModel reikiRootModel { get { return ModelCenter.Instance.GetModel<ReikiRootModel>(); } }
        public Dictionary<int, int> titleStarDict = new Dictionary<int, int>(); //称号ID:星级
        public event Action OnTitleStarUpdate;
        public Dictionary<int, Redpoint> titleStarRedpoints = new Dictionary<int, Redpoint>();
        ReikiRootModel reikiRootModel { get { return ModelCenter.Instance.GetModel<ReikiRootModel>(); } }
        PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
        public override void Init()
        {
            GlobalTimeEvent.Instance.secondEvent += SecondEvent;
            //GlobalTimeEvent.Instance.secondEvent += SecondEvent;
            StageLoad.Instance.onStageLoadFinish += OnStageLoadFinish;
            WindowCenter.Instance.windowAfterOpenEvent += WindowAfterOpenEvent;
            foreach (var _id in TitleStarUpConfig.titleIDToIDs.Keys)
            {
                titleStarRedpoints.Add(_id, new Redpoint(1010104, 1010104*1000 + _id));
            }
        }
        public override void UnInit()
        {
            GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
            //GlobalTimeEvent.Instance.secondEvent -= SecondEvent;
            StageLoad.Instance.onStageLoadFinish -= OnStageLoadFinish;
            WindowCenter.Instance.windowAfterOpenEvent -= WindowAfterOpenEvent;
        }
@@ -39,29 +51,28 @@
            roletitles.Clear();
        }
        private void SecondEvent()
        {
            foreach (var _id in roletitles.Keys)
            {
                if (!IsTitleGain(_id) && !roletitles[_id].outTimeNotify)
                {
                    roletitles[_id].outTimeNotify = true;
                    if (roletitles[_id].isEquiped)
                    {
                        var hero = PlayerDatas.Instance.hero;
                        if (hero != null)
                        {
                            hero.RequestName();
                        }
                    }
                    if (OnRefreshGainTitle != null)
                    {
                        OnRefreshGainTitle();
                    }
                    UpdateRedpoint();
                }
            }
        }
        //private void SecondEvent()
        //{
        //    foreach (var _id in roletitles.Keys)
        //    {
        //        if (!IsTitleGain(_id) && !roletitles[_id].outTimeNotify)
        //        {
        //            roletitles[_id].outTimeNotify = true;
        //            if (roletitles[_id].isEquiped)
        //            {
        //                var hero = PlayerDatas.Instance.hero;
        //                if (hero != null)
        //                {
        //                    hero.RequestName();
        //                }
        //            }
        //            if (OnRefreshGainTitle != null)
        //            {
        //                OnRefreshGainTitle();
        //            }
        //        }
        //    }
        //}
        public event Action OnRefreshGainTitle;
        private Dictionary<int, TitleData> roletitles = new Dictionary<int, TitleData>();
@@ -166,6 +177,8 @@
                roletitles.Remove(id);
                title = null;
            }
            if (OnRefreshGainTitle != null)
            {
                OnRefreshGainTitle();
@@ -298,6 +311,11 @@
            {
                TryOpenReikiRootPointRemind();
            }
            if (window is KnapSackWin)
            {
                UpdateRedpoint();
            }
        }
        void TryOpenReikiRootPointRemind()
@@ -325,6 +343,35 @@
            }
        }
        public void UpdateTitleStarInfo(HA3CE_tagMCTitleStarInfo netPack)
        {
            for (int i = 0; i < netPack.TitleStarList.Length; i++)
            {
                titleStarDict[(int)netPack.TitleStarList[i].TitleID] = netPack.TitleStarList[i].Star;
            }
            OnTitleStarUpdate?.Invoke();
            UpdateRedpoint();
        }
        public int GetTitleStar(int titleId)
        {
            int star = 0;
            titleStarDict.TryGetValue(titleId, out star);
            return star;
        }
        public bool IsStarRedpoint(int titleID)
        {
            if (titleStarRedpoints.ContainsKey(titleID))
            {
                return titleStarRedpoints[titleID].state == RedPointState.Simple;
            }
            return false;
        }
        #region 红点
        private Redpoint m_TitleRedpoint=new Redpoint(10101, 1010104);
        public Redpoint titleRedpoint
@@ -341,10 +388,21 @@
            }
            foreach (var _key in roletitles.Keys)
            {
                if (IsNewGet(_key))
                //物品足够升星则显示红点
                if (TitleStarUpConfig.titleIDToIDs.ContainsKey(_key))
                {
                    titleRedpoint.state = RedPointState.Simple;
                    break;
                    var star = GetTitleStar(_key);
                    var maxStar = TitleStarUpConfig.titleIDToIDs[_key].Count;
                    titleStarRedpoints[_key].state = RedPointState.None;
                    if (star < maxStar)
                    {
                        var id = TitleStarUpConfig.titleIDToIDs[_key][star];
                        var config = TitleStarUpConfig.Get(id);
                        if (packModel.GetItemCountByID(PackType.Item, config.StarUpNeedItemList[0][0]) >= config.StarUpNeedItemList[0][1])
                        {
                            titleStarRedpoints[_key].state = RedPointState.Simple;
                        }
                    }
                }
            }
        }