Exemple #1
0
        public PackContent GetCards(Pack pack, Set set)
        {
            var ret = new PackContent();

            if (Quantity < 0)
            {
                ret.UnlimitedCards.AddRange(
                    from card in set.Cards
                    where
                        card.Properties.SelectMany(x=>x.Value.Properties).Any(
                            x =>
                            x.Key.Name.ToLower() ==Key.ToLower()
                            && x.Value.ToString().ToLower() ==Value.ToLower())
                    select card);
            }
            else
            {
                var list = (
                    from card in set.Cards
                    where
                        card.Properties.SelectMany(x=>x.Value.Properties).Any(
                            x =>
                            x.Key.Name.ToLower() ==Key.ToLower()
                            && x.Value.ToString().ToLower() ==Value.ToLower())
                    select card).ToArray();

                for (var i = 0; i <Quantity; i++)
                    ret.LimitedCards.Add(list.RandomElement());
            }

            return ret;
        }
Exemple #2
0
        public PackContent GetCards(Pack pack, Set set)
        {
            var ret = new PackContent();

            if (Quantity < 0)
            {
                ret.UnlimitedCards.AddRange(
                    from card in set.Cards
                    where
                    card.Properties.SelectMany(x => x.Value.Properties).Any(
                        x =>
                        x.Key.Name.ToLower() == Key.ToLower() &&
                        x.Value.ToString().ToLower() == Value.ToLower())
                    select card);
            }
            else
            {
                var list = (
                    from card in set.Cards
                    where
                    card.Properties.SelectMany(x => x.Value.Properties).Any(
                        x =>
                        x.Key.Name.ToLower() == Key.ToLower() &&
                        x.Value.ToString().ToLower() == Value.ToLower())
                    select card).ToArray();

                for (var i = 0; i < Quantity; i++)
                {
                    ret.LimitedCards.Add(list.RandomElement());
                }
            }

            return(ret);
        }
Exemple #3
0
 public PackContent GenerateContent(Pack pack, Set set)
 {
     var result = new PackContent();
     foreach (PackContent defContent in Items.Select(def => def.GetCards(pack,set)))
     {
         result.Merge(defContent);
     }
     return result;
 }
Exemple #4
0
        public PackContent GenerateContent(Pack pack, Set set)
        {
            var result = new PackContent();

            foreach (PackContent defContent in Items.Select(def => def.GetCards(pack, set)))
            {
                result.Merge(defContent);
            }
            return(result);
        }
Exemple #5
0
 public PackContent GetCards(Pack pack)
 {
     var result = new PackContent();
     //TODO [DB MIGRATION] blah
     throw new NotImplementedException("Holy Moly");
     //var conditions = new string[2];
     //conditions[0] = "set_id = '" + pack.Set.Id + "'";
     //conditions[1] = string.Format("{0} = '{1}'", Key, Value);
     //if (Quantity < 0)
     //    result.UnlimitedCards.AddRange(pack.Set.Game.SelectCardModels(conditions));
     //else
     //    result.LimitedCards.AddRange(pack.Set.Game.SelectRandomCardModels(Quantity, conditions));
     return result;
 }
Exemple #6
0
        public PackContent GetCards(Pack pack, Set set)
        {
            var ret = new PackContent();

            if (Quantity < 0)
            {
                ret.UnlimitedCards.AddRange(
                    from card in set.Cards
                    where
                    card.Properties.SelectMany(x => x.Value.Properties).Any(
                        x =>
                        x.Key.Name.ToLower() == Key.ToLower() &&
                        x.Value.ToString().ToLower() == Value.ToLower())
                    select card);
            }
            else
            {
                var list = (
                    from card in set.Cards
                    where
                    card.Properties.Where(x => x.Key == "").SelectMany(x => x.Value.Properties).Any(
                        x =>
                        x.Key.Name.ToLower() == Key.ToLower() &&
                        x.Value.ToString().ToLower() == Value.ToLower())
                    select card).ToList();

                for (var i = 0; i < Quantity; i++)
                {
                    var pick = list.RandomElement();
                    if (pick != null)
                    {
                        ret.LimitedCards.Add(pick);
                        list.Remove(pick);
                    }
                    else
                    {
                        Log.Warn(String.Format("Set {0} ({1}) does not contain enough cards to create this booster pack correctly.", set.Id, set.Name));
                    }
                }
            }

            return(ret);
        }
Exemple #7
0
        public PackContent GetCards(Pack pack, Set set)
        {
            var ret = new PackContent();

            if (Quantity < 0)
            {
                ret.UnlimitedCards.AddRange(
                    from card in set.Cards
                    where
                        card.Properties.SelectMany(x=>x.Value.Properties).Any(
                            x =>
                            x.Key.Name.ToLower() ==Key.ToLower()
                            && x.Value.ToString().ToLower() ==Value.ToLower())
                    select card);
            }
            else
            {
                var list = (
                    from card in set.Cards
                    where
                        card.Properties.Where(x=> x.Key == "").SelectMany(x=>x.Value.Properties).Any(
                            x =>
                            x.Key.Name.ToLower() ==Key.ToLower()
                            && x.Value.ToString().ToLower() ==Value.ToLower())
                    select card).ToList();

                for (var i = 0; i < Quantity; i++)
                {
                    var pick = list.RandomElement();
                    if (pick != null)
                    {
                        ret.LimitedCards.Add(pick);
                        list.Remove(pick);
                    }
                    else
                    {
                        Log.Warn(String.Format("Set {0} ({1}) does not contain enough cards to create this booster pack correctly.", set.Id, set.Name));
                    }
                }
            }

            return ret;
        }
Exemple #8
0
 public void Merge(PackContent content)
 {
     LimitedCards.AddRange(content.LimitedCards);
     UnlimitedCards.AddRange(content.UnlimitedCards);
 }
Exemple #9
0
 public void Merge(PackContent content)
 {
     LimitedCards.AddRange(content.LimitedCards);
     UnlimitedCards.AddRange(content.UnlimitedCards);
 }
Exemple #10
0
        public PackContent GetCards(Pack pack, Set set)
        {
            var ret      = new PackContent();
            var cardList = set.Cards.ToList();

            // add the include cards to the set for this booster

            var cards =
                (
                    from qset in pack.Includes.Select(x => x.SetId).Distinct().SelectMany(x => DbContext.Get().SetsById(x))
                    from card in qset.Cards
                    join inc in pack.Includes on qset.Id equals inc.SetId
                    where card.Id == inc.Id
                    select new { Card = card, Include = inc }
                )
                .Select(picked =>
            {
                var card = new Card(picked.Card);

                foreach (var p in picked.Include.Properties)
                {
                    var key = picked.Card.Properties[""].Properties.Where(x => x.Key.Name.ToLower() == p.Item1.ToLower()).FirstOrDefault().Key;
                    if (key != null) // if the include property name isn't a defined custom property, ignore it
                    {
                        if (key.Type is PropertyType.RichText)
                        {
                            var span = new RichSpan();
                            span.Items.Add(new RichText()
                            {
                                Text = p.Item2
                            });
                            card.Properties[""].Properties[key] = new RichTextPropertyValue()
                            {
                                Value = span
                            };
                        }
                        else
                        {
                            card.Properties[""].Properties[key] = p.Item2;
                        }
                    }
                }

                return(card);
            })
            ;

            cardList.AddRange(cards);

            foreach (var prop in Properties)
            {
                var Key   = prop.Name;
                var Value = prop.Value;
                var list  = (
                    from card in cardList
                    where
                    card.Properties.Where(x => x.Key == "").SelectMany(x => x.Value.Properties).Any(
                        x =>
                        x.Key.Name.ToLower() == Key.ToLower() &&
                        x.Value.ToString().ToLower() == Value.ToLower())
                    select card).ToList();
                cardList = list;
            }

            if (Quantity < 0)
            {
                ret.UnlimitedCards.AddRange(cardList);
            }
            else
            {
                for (var i = 0; i < Quantity; i++)
                {
                    var pick = cardList.RandomElement();
                    if (pick != null)
                    {
                        ret.LimitedCards.Add(pick);
                        cardList.Remove(pick);
                    }
                    else
                    {
                        Log.Warn(String.Format("Set {0} ({1}) does not contain enough cards to create this booster pack correctly.", set.Id, set.Name));
                    }
                }
            }

            return(ret);
        }
Exemple #11
0
        public PackContent GetCards(Pack pack, Set set)
        {
            var ret = new PackContent();
            var cardList = set.Cards.ToList();

            // add the include cards to the set for this booster

            var cards =
            (
                from qset in pack.Includes.Select(x=>x.SetId).Distinct().SelectMany(x=>DbContext.Get().SetsById(x))
                from card in qset.Cards
                join inc in pack.Includes on qset.Id equals inc.SetId
                where card.Id == inc.Id
                select new { Card = card, Include = inc }
            )
            .Select(dong =>
            {
                var card = new Card(dong.Card);

                foreach (var p in dong.Include.Properties)
                {
                    var key = dong.Card.Properties[""].Properties.Where(x => x.Key.Name.ToLower() == p.Item1.ToLower()).FirstOrDefault().Key;
                    if (key != null) // if the include property name isn't a defined custom property, ignore it
                        card.Properties[""].Properties[key] = p.Item2;
                }

                return card;
            })
            ;
            cardList.AddRange(cards);

            foreach (var prop in Properties)
            {
                var Key = prop.Item1;
                var Value = prop.Item2;
                var list = (
                    from card in cardList
                    where
                        card.Properties.Where(x => x.Key == "").SelectMany(x => x.Value.Properties).Any(
                            x =>
                            x.Key.Name.ToLower() == Key.ToLower()
                            && x.Value.ToString().ToLower() == Value.ToLower())
                    select card).ToList();
                cardList = list;
            }

            if (Quantity < 0)
            {
                ret.UnlimitedCards.AddRange(cardList);
            }
            else
            {
                for (var i = 0; i < Quantity; i++)
                {
                    var pick = cardList.RandomElement();
                    if (pick != null)
                    {
                        ret.LimitedCards.Add(pick);
                        cardList.Remove(pick);
                    }
                    else
                    {
                        Log.Warn(String.Format("Set {0} ({1}) does not contain enough cards to create this booster pack correctly.", set.Id, set.Name));
                    }
                }
            }

            return ret;
        }