Esempio n. 1
0
        // Todo: Move to callsite?
        public static MaybeNull <ResourceType> GetRandomApplicableCraftable(Faction faction, WorldManager World)
        {
            const int maxIters = 100;

            for (int i = 0; i < maxIters; i++)
            {
                var item = Datastructures.SelectRandom(Library.EnumerateResourceTypes().Where(r => r.Craft_Craftable));
                if (!World.HasResourcesWithTags(item.Craft_Ingredients))
                {
                    continue;
                }
                if (!faction.OwnedObjects.Any(o => o.Tags.Contains(item.Craft_Location)))
                {
                    continue;
                }
                return(item);
            }

            return(null);
        }
Esempio n. 2
0
        public static MaybeNull <CraftItem> GetRandomApplicableCraftable(Faction faction, WorldManager World)
        {
            InitializeCraftLibrary();

            const int maxIters = 100;

            for (int i = 0; i < maxIters; i++)
            {
                var item = Datastructures.SelectRandom(CraftItems);
                if (!World.HasResourcesWithTags(item.Value.RequiredResources))
                {
                    continue;
                }
                if (!faction.OwnedObjects.Any(o => o.Tags.Contains(item.Value.CraftLocation)))
                {
                    continue;
                }
                return(item.Value);
            }

            return(null);
        }