Exemple #1
0
        /// <summary>
        /// 返回受影响的卡槽
        /// </summary>
        /// <param name="info">受影响的队列信息</param>
        /// <returns>卡槽对应的属性</returns>
        public Dictionary <Guid, PartAttr> CalcAttr(SlotCalcObj info)
        {
            var result = new Dictionary <Guid, PartAttr>();

            foreach (var hero in info.ChangeSlotList)
            {
                var pa = new PartAttr(AttrType);
                result[hero.ID] = pa;

                // 增加属性调用pa.AddValue()就ok;
                // todo 临时加一个测试
                pa.AddValue(new Dictionary <Int32, Int32>()
                {
                    { 201, 100 }
                });
            }

            return(result);
        }
Exemple #2
0
        /// <summary>
        /// 计算卡槽属性
        /// </summary>
        /// <param name="heroList">武将集合</param>
        public static void CalcAllPartAttr(List <Hero> heroList)
        {
            SlotCalcObj info = new SlotCalcObj()
            {
                ChangeSlotList = heroList,
            };

            // 计算各个模块属性,以及额外的属性
            foreach (SlotAttrTypeEnum attrType in Enum.GetValues(typeof(SlotAttrTypeEnum)))
            {
                var resultChangeSlotDict = partAttrMethodDict[attrType].CalcAttr(info);
                foreach (var resultItem in resultChangeSlotDict)
                {
                    var tempHero = info.ChangeSlotList.FirstOrDefault(item => item.ID == resultItem.Key);
                    if (tempHero == null)
                    {
                        continue;
                    }

                    tempHero.PartAttrs[attrType] = resultItem.Value;
                }
            }

            // 汇总属性
            foreach (var hero in info.ChangeSlotList)
            {
                // 合并基本属性
                MergeBaseAttr(hero); // 这里写了三个方法,自己可以酌情合并方法,一定要按照这个步奏来处理,有些百分比加成要在所有属性之后处理的

                /**
                 * 这里可以进行其他处理
                 *
                 *
                 **/

                SaveAttr(hero);
            }
        }