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