/// <summary> /// Evaluates this condition. /// </summary> internal bool check(Condition.Operator combine) { switch (combine) { case Condition.Operator.And: return(clauses.All(clause => clause.check())); case Condition.Operator.Or: return(clauses.Any(clause => clause.check())); default: throw new InvalidOperationException( Localizer.Format("#autoLOC_CustomAsteroids_ErrorConditionStateBadOp", combine)); } }
/// <summary> /// Gets the operator. /// </summary> /// <param name="op">The op.</param> /// <returns></returns> private static string GetOperator(Condition.Operator op) { string opString = ""; switch (op) { case Condition.Operator.Equal: opString = " = "; break; case Condition.Operator.LessThan: opString = " < "; break; case Condition.Operator.LessThanOrEqual: opString = " <= "; break; case Condition.Operator.GreaterThan: opString = " > "; break; case Condition.Operator.GreaterThanOrEqual: opString = " >= "; break; } return opString; }
private void EventHandler() { bool isPassed = false; for (int a = 0, A = conditions.Count; a < A; a++) { Condition condition = conditions[a]; if (a != 0) { if (condition.statement == Condition.Statement.And && !isPassed) { continue; } if (condition.statement == Condition.Statement.Or && isPassed) { break; } } if (!condition.source || condition.index == -1) { continue; } Condition.Operator @operator = conditions[a].@operator; if (@operator == Condition.Operator.LessThan) { isPassed = condition.source.currencies[condition.index].currency < condition.currency; continue; } if (@operator == Condition.Operator.LessThanOrEqualTo) { isPassed = condition.source.currencies[condition.index].currency <= condition.currency; continue; } if (@operator == Condition.Operator.NotEqualTo) { isPassed = condition.source.currencies[condition.index].currency != condition.currency; continue; } if (@operator == Condition.Operator.EqualTo) { isPassed = condition.source.currencies[condition.index].currency == condition.currency; continue; } if (@operator == Condition.Operator.GreaterThanOrEqualTo) { isPassed = condition.source.currencies[condition.index].currency >= condition.currency; continue; } if (@operator == Condition.Operator.GreaterThan) { isPassed = condition.source.currencies[condition.index].currency > condition.currency; continue; } } if (isPassed) { if (!state) { onTrue.Invoke(); state = true; } isTrue.Invoke(); } else { if (state) { onFalse.Invoke(); state = false; } isFalse.Invoke(); } }