コード例 #1
0
        public static bool MeetsRequirements(StoryDef story, object[] args = null)
        {
            if (story == null)
            {
                return(false);
            }

            if (args != null)
            {
                ConditionEvaluator.SetArgs(args);
            }

            if (story.required != null)
            {
                foreach (var requirement in story.required)
                {
                    if (!requirement.RequirementIsMeet())
                    {
                        return(ClearAndReturn(false, args));
                    }
                }
            }

            if (story.required?.Count > 0)
            {
                return(ClearAndReturn(true, args));
            }

            if (story.optional != null)
            {
                foreach (var option in story.optional)
                {
                    if (option.RequirementIsMeet())
                    {
                        return(ClearAndReturn(true, args));
                    }
                }
            }

            if (story.optional?.Count > 0)
            {
                return(ClearAndReturn(false, args));
            }

            return(ClearAndReturn(true, args));
        }
コード例 #2
0
        public bool RequirementIsMeet()
        {
            var def = GenDefDatabase.GetDef(defType, defName);

            if (condition == Condition.built)
            {
                return(ConditionEvaluator.EvaluateBuilt(def));
            }

            if (condition == Condition.notbuilt)
            {
                return(!ConditionEvaluator.EvaluateBuilt(def));
            }

            if (condition == Condition.researched)
            {
                return(ConditionEvaluator.EvaluateResearched(def));
            }

            if (condition == Condition.notresearched)
            {
                return(!ConditionEvaluator.EvaluateResearched(def));
            }

            if (condition == Condition.powered)
            {
                return(ConditionEvaluator.EvaluatePowered(def));
            }

            if (condition == Condition.notpowered)
            {
                return(!ConditionEvaluator.EvaluatePowered(def));
            }

            return(false);
        }