Example #1
0
        /// <summary>Get the items a specified NPC can receive.</summary>
        /// <param name="npc">The NPC to check.</param>
        /// <param name="metadata">Provides metadata that's not available from the game data directly.</param>
        public static IDictionary <SObject, GiftTaste> GetGiftTastes(NPC npc, Metadata metadata)
        {
            if (!GameHelper.IsSocialVillager(npc, metadata))
            {
                return(new Dictionary <SObject, GiftTaste>());
            }

            // get giftable items
            HashSet <int> giftableItemIDs = new HashSet <int>(
                from int refID in GameHelper.GiftTastes.Value.Select(p => p.RefID)
                from ObjectModel obj in GameHelper.Objects.Value
                where obj.ParentSpriteIndex == refID || obj.Category == refID
                select obj.ParentSpriteIndex
                );

            // get gift tastes
            return
                ((
                     from int itemID in giftableItemIDs
                     let item = GameHelper.GetObjectBySpriteIndex(itemID)
                                let taste = GameHelper.GetGiftTaste(npc, item)
                                            where taste.HasValue
                                            select new { Item = item, Taste = taste.Value }
                     )
                 .ToDictionary(p => p.Item, p => p.Taste));
        }
Example #2
0
        /// <summary>Get how much each NPC likes receiving an item as a gift.</summary>
        /// <param name="item">The item to check.</param>
        /// <param name="metadata">Provides metadata that's not available from the game data directly.</param>
        public static IDictionary <string, GiftTaste> GetGiftTastes(Item item, Metadata metadata)
        {
            if (!item.canBeGivenAsGift())
            {
                return(new Dictionary <string, GiftTaste>());
            }

            return(GameHelper.GetAllCharacters()
                   .Where(npc => GameHelper.IsSocialVillager(npc, metadata))
                   .ToDictionary(npc => npc.name, npc => (GiftTaste)npc.getGiftTasteForThisItem(item)));
        }
Example #3
0
        /// <summary>Get how much each NPC likes receiving an item as a gift.</summary>
        /// <param name="item">The item to check.</param>
        /// <param name="metadata">Provides metadata that's not available from the game data directly.</param>
        public static IEnumerable <KeyValuePair <NPC, GiftTaste> > GetGiftTastes(Item item, Metadata metadata)
        {
            if (!item.canBeGivenAsGift())
            {
                yield break;
            }

            foreach (NPC npc in GameHelper.GetAllCharacters())
            {
                if (!GameHelper.IsSocialVillager(npc, metadata))
                {
                    continue;
                }
                yield return(new KeyValuePair <NPC, GiftTaste>(npc, (GiftTaste)npc.getGiftTasteForThisItem(item)));
            }
        }
Example #4
0
        /// <summary>Get how much each NPC likes receiving an item as a gift.</summary>
        /// <param name="item">The item to check.</param>
        /// <param name="metadata">Provides metadata that's not available from the game data directly.</param>
        public static IEnumerable <KeyValuePair <NPC, GiftTaste> > GetGiftTastes(Item item, Metadata metadata)
        {
            if (!item.canBeGivenAsGift())
            {
                yield break;
            }

            foreach (NPC npc in GameHelper.GetAllCharacters())
            {
                if (!GameHelper.IsSocialVillager(npc, metadata))
                {
                    continue;
                }

                GiftTaste?taste = GameHelper.GetGiftTaste(npc, item);
                if (taste.HasValue)
                {
                    yield return(new KeyValuePair <NPC, GiftTaste>(npc, taste.Value));
                }
            }
        }