/// <summary>
        /// 生成一条箱子里面的物品
        /// </summary>
        /// <param name="DateId">传入箱子物品</param>
        /// <returns></returns>
        public static bool CreateItemBox(int DateId, List <ItemInfo> itemInfos, ref int gold, ref int point, ref int giftToken, ref int medal)
        {
            #region 生成物品
            List <ItemBoxInfo> FiltInfos   = new List <ItemBoxInfo>();
            List <ItemBoxInfo> unFiltInfos = FindItemBox(DateId);
            if (unFiltInfos == null)
            {
                return(false);
            }
            FiltInfos = unFiltInfos.Where(s => s.IsSelect == true).ToList();
            int dropItemCount             = 1;//设置掉落数量
            int maxRound                  = Bussiness.ThreadSafeRandom.NextStatic(unFiltInfos.Where(s => s.IsSelect == false).Select(s => s.Random).Max());
            List <ItemBoxInfo> RoundInfos = unFiltInfos.Where(s => s.IsSelect == false && s.Random >= maxRound).ToList();
            int maxItems                  = RoundInfos.Count();
            if (maxItems > 0)
            {
                dropItemCount = dropItemCount > maxItems ? maxItems : dropItemCount;
                int[] randomArray = GetRandomUnrepeatArray(0, maxItems - 1, dropItemCount);
                foreach (int i in randomArray)
                {
                    ItemBoxInfo item = RoundInfos[i];
                    if (FiltInfos == null)
                    {
                        FiltInfos = new List <ItemBoxInfo>();
                    }
                    FiltInfos.Add(item);
                }
            }
            #endregion

            #region 输出物品
            foreach (ItemBoxInfo info in FiltInfos)
            {
                if (info == null)
                {
                    return(false);
                }
                switch (info.TemplateId)
                {
                case -100:
                    gold += info.ItemCount;
                    break;

                case -200:
                    point += info.ItemCount;
                    break;

                case -300:
                    giftToken += info.ItemCount;
                    break;

                case 11408:
                    medal += info.ItemCount;
                    break;

                default:
                    ItemTemplateInfo temp = Bussiness.Managers.ItemMgr.FindItemTemplate(info.TemplateId);
                    ItemInfo         item = ItemInfo.CreateFromTemplate(temp, info.ItemCount, 101);
                    if (item == null)
                    {
                        continue;
                    }
                    item.IsBinds         = info.IsBind;
                    item.ValidDate       = info.ItemValid;
                    item.StrengthenLevel = info.StrengthenLevel;
                    item.AttackCompose   = info.AttackCompose;
                    item.DefendCompose   = info.DefendCompose;
                    item.AgilityCompose  = info.AgilityCompose;
                    item.LuckCompose     = info.LuckCompose;
                    if (itemInfos == null)
                    {
                        itemInfos = new List <ItemInfo>();
                    }
                    itemInfos.Add(item);
                    break;
                }
            }
            return(true);

            #endregion
        }
Exemple #2
0
        public static bool CreateItemBox(int DateId, List <ItemInfo> itemInfos, ref int gold, ref int point, ref int giftToken, ref int gp)
        {
            List <ItemBoxInfo> FiltInfos   = new List <ItemBoxInfo>();
            List <ItemBoxInfo> unFiltInfos = ItemBoxMgr.FindItemBox(DateId);
            bool result;

            if (unFiltInfos == null)
            {
                result = false;
            }
            else
            {
                FiltInfos = (
                    from s in unFiltInfos
                    where s.IsSelect
                    select s).ToList <ItemBoxInfo>();
                int dropItemCount = 1;
                int maxRound      = 0;
                foreach (ItemBoxInfo boxInfo in unFiltInfos)
                {
                    if (!boxInfo.IsSelect && maxRound < boxInfo.Random)
                    {
                        maxRound = boxInfo.Random;
                    }
                }
                maxRound = ItemBoxMgr.random.Next(maxRound);
                List <ItemBoxInfo> RoundInfos = (
                    from s in unFiltInfos
                    where !s.IsSelect && s.Random >= maxRound
                    select s).ToList <ItemBoxInfo>();
                int maxItems = RoundInfos.Count <ItemBoxInfo>();
                if (maxItems > 0)
                {
                    dropItemCount = ((dropItemCount > maxItems) ? maxItems : dropItemCount);
                    int[] randomArray = ItemBoxMgr.GetRandomUnrepeatArray(0, maxItems - 1, dropItemCount);
                    int[] array       = randomArray;
                    for (int j = 0; j < array.Length; j++)
                    {
                        int         i    = array[j];
                        ItemBoxInfo item = RoundInfos[i];
                        if (FiltInfos == null)
                        {
                            FiltInfos = new List <ItemBoxInfo>();
                        }
                        FiltInfos.Add(item);
                    }
                }
                foreach (ItemBoxInfo info in FiltInfos)
                {
                    if (info == null)
                    {
                        result = false;
                        return(result);
                    }
                    int templateId = info.TemplateId;
                    if (templateId <= -200)
                    {
                        if (templateId == -300)
                        {
                            giftToken += info.ItemCount;
                            continue;
                        }
                        if (templateId == -200)
                        {
                            point += info.ItemCount;
                            continue;
                        }
                    }
                    else
                    {
                        if (templateId == -100)
                        {
                            gold += info.ItemCount;
                            continue;
                        }
                        if (templateId == 11107)
                        {
                            gp += info.ItemCount;
                            continue;
                        }
                    }
                    ItemTemplateInfo temp  = ItemMgr.FindItemTemplate(info.TemplateId);
                    ItemInfo         item2 = ItemInfo.CreateFromTemplate(temp, info.ItemCount, 101);
                    if (item2 != null)
                    {
                        item2.IsBinds         = info.IsBind;
                        item2.ValidDate       = info.ItemValid;
                        item2.StrengthenLevel = info.StrengthenLevel;
                        item2.AttackCompose   = info.AttackCompose;
                        item2.DefendCompose   = info.DefendCompose;
                        item2.AgilityCompose  = info.AgilityCompose;
                        item2.LuckCompose     = info.LuckCompose;
                        item2.IsTips          = info.IsTips;
                        item2.IsLogs          = info.IsLogs;
                        if (itemInfos == null)
                        {
                            itemInfos = new List <ItemInfo>();
                        }
                        itemInfos.Add(item2);
                    }
                }
                result = true;
            }
            return(result);
        }