public bool IsMet(PositionalComponent component, ComponentDescription description) { if (Type == ConditionType.Empty) { return(true); } if (Type == ConditionType.State) { if (VariableName.ToLower() == "horizontal") { if (Comparison == ConditionComparison.Truthy || Comparison == ConditionComparison.Equal) { return((component.Layout.Orientation == Orientation.Horizontal) == CompareTo.BooleanValue); } return((component.Layout.Orientation == Orientation.Horizontal) != CompareTo.BooleanValue); } } else { var propertyValue = description.GetProperty(component, VariableName); if (Comparison == ConditionComparison.Truthy) { return(propertyValue.IsTruthy()); } if (Comparison == ConditionComparison.Falsy) { return(!propertyValue.IsTruthy()); } int cv = propertyValue.CompareTo(CompareTo); switch (Comparison) { case ConditionComparison.Equal: return(cv == 0); case ConditionComparison.Greater: return(cv == 1); case ConditionComparison.GreaterOrEqual: return(cv >= 0); case ConditionComparison.Less: return(cv == -1); case ConditionComparison.LessOrEqual: return(cv <= 0); case ConditionComparison.NotEqual: return(cv != 0); } } return(false); }
public bool IsMet(Component component) { if (Type == ConditionType.Empty) { return(true); } else if (Type == ConditionType.State) { if (VariableName.ToLower() == "horizontal") { if (Comparison == ConditionComparison.Equal) { return((component.Orientation == Orientation.Horizontal) == (bool)CompareTo.Value); } else { return((component.Orientation == Orientation.Horizontal) != (bool)CompareTo.Value); } } } else { var propertyValue = component.GetProperty(component.FindProperty(VariableName)); if (Comparison == ConditionComparison.Empty) { return(propertyValue.IsEmpty()); } else if (Comparison == ConditionComparison.NotEmpty) { return(!propertyValue.IsEmpty()); } int cv = propertyValue.CompareTo(CompareTo); switch (Comparison) { case ConditionComparison.Equal: return(cv == 0); case ConditionComparison.Greater: return(cv == 1); case ConditionComparison.GreaterOrEqual: return(cv >= 0); case ConditionComparison.Less: return(cv == -1); case ConditionComparison.LessOrEqual: return(cv <= 0); case ConditionComparison.NotEqual: return(cv != 0); } } return(false); }
public void Evaluate(GameTime gameTime, object Input, out bool IsCompleted, out List <object> Result) { string VariableNameLower = VariableName.ToLower(); double Value = (double)Input; if (!Info.Map.DicMapVariables.ContainsKey(VariableNameLower)) { if (SignOperator == Operators.SignOperators.Equal) { Info.Map.DicMapVariables.Add(VariableNameLower, Value); } else { throw new Exception(SignOperator.ToString() + " can't be used on " + VariableNameLower + " as this variable is unassigned."); } } else { switch (SignOperator) { case Operators.SignOperators.Equal: Info.Map.DicMapVariables[VariableNameLower] = Value; break; case Operators.SignOperators.PlusEqual: Info.Map.DicMapVariables[VariableNameLower] += Value; break; case Operators.SignOperators.MinusEqual: Info.Map.DicMapVariables[VariableNameLower] -= Value; break; case Operators.SignOperators.MultiplicatedEqual: Info.Map.DicMapVariables[VariableNameLower] *= Value; break; case Operators.SignOperators.DividedEqual: Info.Map.DicMapVariables[VariableNameLower] /= Value; break; case Operators.SignOperators.ModuloEqual: Info.Map.DicMapVariables[VariableNameLower] %= Value; break; } } Result = new List <object>(); IsCompleted = true; }
public override void Update(int Index) { string VariableNameLower = VariableName.ToLower(); if (!Map.DicMapVariables.ContainsKey(VariableNameLower)) { if (SignOperator == Operators.SignOperators.Equal) { Map.DicMapVariables.Add(VariableNameLower, Value); } else { throw new Exception(SignOperator.ToString() + " can't be used on " + VariableNameLower + " as this variable is unassigned."); } } else { switch (SignOperator) { case Operators.SignOperators.Equal: Map.DicMapVariables[VariableNameLower] = Value; break; case Operators.SignOperators.PlusEqual: Map.DicMapVariables[VariableNameLower] += Value; break; case Operators.SignOperators.MinusEqual: Map.DicMapVariables[VariableNameLower] -= Value; break; case Operators.SignOperators.MultiplicatedEqual: Map.DicMapVariables[VariableNameLower] *= Value; break; case Operators.SignOperators.DividedEqual: Map.DicMapVariables[VariableNameLower] /= Value; break; case Operators.SignOperators.ModuloEqual: Map.DicMapVariables[VariableNameLower] %= Value; break; } } Map.ExecuteFollowingScripts(this, 0); }