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); } }
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() }); }