/// <summary>
        /// 解析分段的字符串
        /// </summary>
        /// <param name="manyTimeDmage"></param>
        /// <returns></returns>
        private static List <ManyTimeDmageItem> ParseItems(int id, string manyTimeDmage)
        {
            List <ManyTimeDmageItem> manyTimeDmageItemsList = new List <ManyTimeDmageItem>();

            string[] fields = manyTimeDmage.Split('|');
            for (int i = 0; i < fields.Length; i++)
            {
                string[] fields2 = fields[i].Split(',');
                if (fields2.Length != 2)
                {
                    LogManager.WriteLog(LogTypes.Error, string.Format("解析技能项的多段伤害配置时,个数配置错误, ID={0}", id));
                    continue;
                }

                ManyTimeDmageItem manyTimeDmageItem = new ManyTimeDmageItem()
                {
                    InjuredSeconds = Global.SafeConvertToInt32(fields2[0]),
                    InjuredPercent = Global.SafeConvertToDouble(fields2[1]),
                    manyRangeIndex = i,
                };

                manyTimeDmageItemsList.Add(manyTimeDmageItem);
            }

            return(manyTimeDmageItemsList);
        }
예제 #2
0
        /// <summary>
        /// 获取可以执行的项
        /// </summary>
        /// <returns></returns>
        public ManyTimeDmageMagicItem GetCanExecItemsEx(out ManyTimeDmageItem subItem)
        {
            ManyTimeDmageMagicItem magicItem = null;

            subItem = null;
            long ticks = TimeUtil.NowEx();

            lock (mutex)
            {
                List <ManyTimeDmageMagicItem> removeList = null;
                foreach (var item in execItemDict)
                {
                    if (ticks > item.execTicks)
                    {
                        magicItem = item;
                        subItem   = magicItem.Get();
                        if (!magicItem.Next())
                        {
                            if (null == removeList)
                            {
                                removeList = new List <ManyTimeDmageMagicItem>();
                            }

                            removeList.Add(item);
                        }

                        break;
                    }
                }

                if (null != removeList)
                {
                    foreach (var item in removeList)
                    {
                        execItemDict.Remove(item);
                    }
                }
            }

            return(magicItem);
        }