少年修仙传客户端代码仓库
client_Zxw
2018-08-30 51fab14cee367849d673ccf9a0809c68cac843fc
System/Skill/SkillModel.cs
@@ -47,6 +47,8 @@
        public Dictionary<int, Dictionary<int, List<SkillConfig>>> skillActDict { get; private set; }
        public List<int> betterPassSkills { get; private set; }
        public bool jumpToPass { get; set; }
        public int minTaskHole { get; private set; }
        public int maxTaskHole { get; private set; }
        void ParseConfig()
        {
            for (int i = 1; i <= 3; i++)
@@ -71,6 +73,14 @@
                    PassSkillLimit limit = JsonMapper.ToObject<PassSkillLimit>(jsonData[key].ToJson());
                    limit.hole = int.Parse(key);
                    passSkillLimits.Add(limit);
                    if (minTaskHole == 0 && limit.OpenSkillSlots > 0)
                    {
                        minTaskHole = limit.OpenSkillSlots;
                    }
                    if (limit.OpenSkillSlots > maxTaskHole)
                    {
                        maxTaskHole = limit.OpenSkillSlots;
                    }
                }
                passEquipCnt = int.Parse(funcCfg.Numerical2);
                taskHoleDict = ConfigParse.GetDic<int, int>(funcCfg.Numerical4);
@@ -290,7 +300,7 @@
        public event Action taskUnlockUpdate;
        public int taskHoleCondition { get; private set; }
        public uint taskHoleCondition { get; private set; }
        public const string TASKHOLEKEY = "OpenSkillSlots";
@@ -305,9 +315,10 @@
            if (task._DicTaskInformation.ContainsKey(1)
                && task._DicTaskInformation[1].ContainsKey(TASKHOLEKEY))
            {
                var value = 0;
                int.TryParse(task._DicTaskInformation[1][TASKHOLEKEY], out value);
                return value >= condition;
                uint value = 0;
                uint.TryParse(task._DicTaskInformation[1][TASKHOLEKEY], out value);
                return MathUtility.GetBitValue(value, (ushort)condition);
                //return value >= condition;
            }
            return false;
        }
@@ -319,11 +330,18 @@
                var dict = _Dic[1];
                if (dict.ContainsKey(TASKHOLEKEY))
                {
                    var result = 0;
                    int.TryParse(dict[TASKHOLEKEY], out result);
                    if (result != taskHoleCondition && playerLoginOk)
                    uint result = 0;
                    uint.TryParse(dict[TASKHOLEKEY], out result);
                    if (playerLoginOk)
                    {
                        UnlockPassHole = result;
                        for (int k = minTaskHole; k <= maxTaskHole; k++)
                        {
                            if (!MathUtility.GetBitValue(taskHoleCondition, (ushort)k)
                                && MathUtility.GetBitValue(result, (ushort)k))
                            {
                                UnlockPassHole = k;
                            }
                        }
                        if (taskUnlockUpdate != null)
                        {
                            taskUnlockUpdate();