Пример #1
0
        private void BuildGiftData()
        {
            Utils.DebugLog("[GiftDrawDataProvider] - Building Gift Data");

            NpcGiftInfo = new Dictionary <string, NpcGiftInfo>();
            foreach (var giftTaste in Game1.NPCGiftTastes)
            {
                string npcName = giftTaste.Key;

                // We only want NPC's
                if (Utils.UniversalTastes.Keys.Contains(npcName))
                {
                    continue;
                }

                NpcGiftInfo npcInfo = new NpcGiftInfo();
                foreach (GiftTaste taste in Enum.GetValues(typeof(GiftTaste)))
                {
                    if (taste == GiftTaste.MAX)
                    {
                        continue;
                    }

                    var itemIds          = this.GiftDataProvider.GetGifts(npcName, taste, false);
                    var universalItemIds = this.GiftDataProvider.GetUniversalGifts(npcName, taste);

                    npcInfo.Gifts.Add(taste, ItemData.MakeItemsFromIds(itemIds));
                    npcInfo.UniversalGifts.Add(taste, ItemData.MakeItemsFromIds(universalItemIds));
                }

                NpcGiftInfo.Add(npcName, npcInfo);
            }
        }
Пример #2
0
        public GiftDrawData GetDrawData(string npcName, GiftTaste[] tastesToDisplay, bool includeUniversal)
        {
            if (tastesToDisplay.Length == 0 || !NpcGiftInfo.ContainsKey(npcName))
            {
                return(null);
            }

            IEnumerable <GiftInfo> MakeGifts(Dictionary <GiftTaste, ItemData[]> allGifts, bool universal = false)
            {
                return(tastesToDisplay
                       .SelectMany(taste => allGifts[taste]
                                   .Select(item => new GiftInfo()
                {
                    Item = item, Taste = taste, Universal = universal
                }))
                       .OrderBy(gift => gift.Item.Name));
            }

            NpcGiftInfo infoForNpc = NpcGiftInfo[npcName];

            return(new GiftDrawData(npcName)
            {
                Gifts = (includeUniversal
                ? MakeGifts(infoForNpc.UniversalGifts, true).Concat(MakeGifts(infoForNpc.Gifts))
                : MakeGifts(infoForNpc.Gifts))
                        .ToArray()
            });
        }