少年修仙传客户端代码仓库
hch
2023-03-26 7144754dab3a386207822cb664740ecb25f6269f
9787 子 【BT9】成就系统 / 9785 【BT9】成就系统 - 成就按分组处理

# Conflicts:
# Utility/UIHelper.cs
3个文件已修改
86 ■■■■ 已修改文件
System/Achievement/AchievementModel.cs 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/LowSettingTip.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Welfare/SuccessBattlePassWin.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Achievement/AchievementModel.cs
@@ -4,6 +4,7 @@
using System;
using System.Text;
using System.Linq;
namespace Snxxz.UI
{
@@ -16,6 +17,9 @@
        Dictionary<int, Achievement> achievements = new Dictionary<int, Achievement>();
        Dictionary<int, List<int>> achievementCategorys = new Dictionary<int, List<int>>();//客户端必须按group分类
        public Dictionary<int, int> groupToType = new Dictionary<int, int>();
        public Dictionary<int, List<int>> typeToGroup = new Dictionary<int, List<int>>(); //所有的类型对应组别
        public Dictionary<int, int> typeToGroupBP = new Dictionary<int, int>(); //战令的类型对应组别
        VipModel vipModel { get { return ModelCenter.Instance.GetModel<VipModel>(); } }
        PackModel playerPack { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
@@ -23,7 +27,7 @@
        DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
        Dictionary<int, int> equipQualityItemIdTables = new Dictionary<int, int>() { { 1, 2110 }, { 2, 2111 }, { 3, 2112 }, { 4, 2113 }, { 5, 2114 } };
        public Dictionary<int, Redpoint> SuccessBPRedPoint = new Dictionary<int, Redpoint>();
        public string[] SuccessBPArray;
        public int[] SuccessBPArray;
        LogicUpdate logicUpdate = new LogicUpdate(0.4f);
        public Redpoint redpoint = new Redpoint(201, 20111);
@@ -32,7 +36,7 @@
        //修行之路
        public event Action OnUpdateBPDataEvent;
        public int BPCTGID = 117;
        private int m_selectSuccessType = 0;
        private int m_selectSuccessType = 0;    //记录的是group 不是type
        public event Action selectSuccessTypeRefresh;
        public int selectSuccessType 
        {
@@ -79,20 +83,19 @@
            {
                return;
            }
            foreach (var succType in SuccessBPArray)
            foreach (var succGroup in SuccessBPArray)
            {
                UpdateSuccessBPRedpoint(0, int.Parse(succType));
                UpdateSuccessBPRedpoint(0, groupToType[succGroup]);
            }
        }
        public void InitRedPoint()
        {
            SuccessBPRedPoint.Clear();
            foreach (var ids in SuccessBPArray)
            foreach (var succGroup in SuccessBPArray)
            {
                int id = int.Parse(ids);
                //按类型分红点
                SuccessBPRedPoint[id] = new Redpoint(20111, 20111*1000 + id);
                SuccessBPRedPoint[succGroup] = new Redpoint(20111, 20111*1000 + succGroup);
            }
        }
@@ -134,9 +137,12 @@
            foreach (int successType in refreshType)
            {
                if (!SuccessBPRedPoint.ContainsKey(successType))
                if (!typeToGroupBP.ContainsKey(successType))
                    continue;
                var idList = GetAchievementsByCategory(successType);
                var group = typeToGroupBP[successType];
                if (!SuccessBPRedPoint.ContainsKey(group))
                    continue;
                var idList = GetAchievementsByCategory(group);
                bool state = false;
                foreach (var successID in idList)
@@ -155,8 +161,8 @@
                        break;
                    }
                }
                SuccessBPRedPoint[successType].state = state == true ? RedPointState.Simple : RedPointState.None;
                if (successType == selectSuccessType)
                SuccessBPRedPoint[group].state = state == true ? RedPointState.Simple : RedPointState.None;
                if (selectSuccessType != 0 && group == selectSuccessType)
                {
                    if (OnUpdateBPDataEvent != null)
                        OnUpdateBPDataEvent();
@@ -621,6 +627,23 @@
            }
        }
        public List<int> GetAchievementsByType(int type)
        {
            List<int> allID = new List<int>();
            if (!typeToGroup.ContainsKey(type))
            {
                return allID;
            }
            foreach (var group in typeToGroup[type])
            {
                allID = allID.Union(new List<int>(achievementCategorys[group])).ToList<int>();
            }
            return allID;
        }
        private string GetHighestSorceEquipByPlace(List<int> _places)
        {
            var itemPackage = playerPack.GetSinglePack(PackType.Item);
@@ -872,6 +895,7 @@
            var allconfig = SuccessConfig.GetValues();
            foreach (var config in allconfig)
            {
                UpdateGroupType(config);
                this.achievements[config.ID] = new Achievement(config);
                List<int> achievements;
@@ -908,10 +932,28 @@
            }
            SuccessBPArray =  FuncConfigConfig.Get("PracticeSuccess").Numerical1.Split('|');
            SuccessBPArray =  GeneralDefine.GetIntArray("PracticeSuccess");
            for (int i = 0; i < SuccessBPArray.Length; i++)
            {
                typeToGroupBP[groupToType[SuccessBPArray[i]]] = SuccessBPArray[i];
            }
            SortAchievementCategorys();
        }
        void UpdateGroupType(SuccessConfig config)
        {
            groupToType[config.Group] = config.Type;
            if (!typeToGroup.ContainsKey(config.Type))
            {
                typeToGroup[config.Type] = new List<int>();
            }
            if (typeToGroup[config.Type].IndexOf(config.Group) == -1)
            {
                typeToGroup[config.Type].Add(config.Group);
            }
        }
        const string conditionPattern = "@Condition@";
        const string needCntPattern = "@NeedCnt@";
        const string skillPattern = "@SkillName@";
System/MainInterfacePanel/LowSettingTip.cs
@@ -31,6 +31,7 @@
        [SerializeField] Button m_JadeDynastyBtn;//情缘
        [SerializeField] Button m_SpiritEquBtn;//灵器按钮
        [SerializeField] Button m_FaQiBtn;//法器按钮
        [SerializeField] Button m_Achievement;//成就按钮
        TreasureModel treasureModel { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } }
        ComposeWinModel composeModel { get { return ModelCenter.Instance.GetModel<ComposeWinModel>(); } }
@@ -53,6 +54,7 @@
            m_SpiritEquBtn.AddListener(OnSpiritEquBtnDown);
            _Jingjie1Btn.onClick.AddListener(Jingjie1Button);
            m_FaQiBtn.AddListener(OpenFaqi);
            m_Achievement.AddListener(OpenAchievement);
        }
        public void UnInit()
@@ -239,6 +241,12 @@
            MainPositionTween.SetRecoverToSkillTimer();
            WindowCenter.Instance.Open("FaQiWin");
        }
        void OpenAchievement()
        {
            MainPositionTween.SetRecoverToSkillTimer();
            WindowCenter.Instance.Open("NewAchievementActivityWin");
        }
    }
}
System/Welfare/SuccessBattlePassWin.cs
@@ -44,12 +44,12 @@
            model.selectSuccessTypeRefresh += OnSelectSuccessTypeRefresh;
            model.selectSuccessType = GetDefaultSuccesType();
            m_SuccessType.Refresh();
            foreach (var successType in model.SuccessBPArray)
            foreach (var successGroup in model.SuccessBPArray)
            {
                m_SuccessType.AddCell(ScrollerDataType.Header, int.Parse(successType));
                m_SuccessType.AddCell(ScrollerDataType.Header, successGroup);
            }
            m_SuccessType.Restart();
            m_SuccessType.JumpIndex(Array.IndexOf(model.SuccessBPArray, model.selectSuccessType.ToString()));
            m_SuccessType.JumpIndex(Array.IndexOf(model.SuccessBPArray, model.selectSuccessType));
            ShowBuyButton();
            m_SuccessLine.m_Scorller.RefreshActiveCellViews();
@@ -81,7 +81,7 @@
            //Array.IndexOf(SuccessBPArray, 1);
            if (model.redpoint.state == RedPointState.None)
            {
                return int.Parse(model.SuccessBPArray[0]);
                return model.SuccessBPArray[0];
            }
            foreach (var point in model.SuccessBPRedPoint)
            {
@@ -90,7 +90,7 @@
                return point.Key;
            }
            return int.Parse(model.SuccessBPArray[0]);
            return model.SuccessBPArray[0];
        }
        protected override void OnAfterOpen()
@@ -128,7 +128,7 @@
            Achievement achievementX;
            model.TryGetAchievement(x, out achievementX);
            Achievement achievementY;
            model.TryGetAchievement(x, out achievementY);
            model.TryGetAchievement(y, out achievementY);
            if (achievementX.completedBP == achievementY.completedBP)
            {