internal static ScriptOrCondition Parse(BinaryReader reader, MapParseContext context) { return(ParseAsset(reader, context, version => { var conditions = new List <ScriptCondition>(); ParseAssets(reader, context, assetName => { switch (assetName) { case ScriptCondition.AssetName: conditions.Add(ScriptCondition.Parse(reader, context)); break; default: throw new InvalidDataException($"Unexpected asset: {assetName}"); } }); return new ScriptOrCondition { Conditions = conditions.ToArray() }; })); }
public static bool Evaluate(ScriptExecutionContext context, ScriptCondition condition) { var conditionType = condition.ContentType; if (condition.InternalName != null) { if (CachedEnumMap.TryGetValue(condition.InternalName.Name, out var untypedConditionType)) { conditionType = (ScriptConditionType)untypedConditionType; } } return(EvaluateImpl(context, condition, conditionType)); }
// For unit tests. internal bool EvaluateScriptCondition(ScriptCondition condition) { return(ScriptConditions.Evaluate(_executionContext, condition)); }