public override bool IsDuplicate(DependencyAction item) { if (item is DependencyTimerAction) return ((DependencyTimerAction)item).Name == Name; else return false; }
public override bool IsDuplicate(DependencyAction item) { if (item is DependencyValueAction) { return(((DependencyValueAction)item).Name == Name); } else { return(false); } }
public override bool IsActionStatisfying(DependencyAction action, ref int seconds, ref double probability) { seconds = 0; if (action is DependencyTimerAction) { return(((DependencyTimerAction)action).Name == Name && Helper.IntTryParse(((DependencyTimerAction)action).Value, out seconds)); } else { return(false); } }
private void Actions_Add(MissionStatement item) { DependencyAction da = DependencyAction.NewFromStatement(item); //Remove duplicate if present for (int i = Actions.Count - 1; i >= 0; i--) { if (Actions[i].IsDuplicate(da)) { Actions.RemoveAt(i); } } Actions.Add(da); }
public override bool IsDuplicate(DependencyAction item) { return false; }
/// <summary> If action is a duplicate of existing action </summary> public abstract bool IsDuplicate(DependencyAction item);
public override bool IsDuplicate(DependencyAction item) { return(false); }
public override bool IsActionStatisfying(DependencyAction action, ref int seconds, ref double probability) { probability = 1.0; if (action is DependencyValueAction) { DependencyValueAction va = (DependencyValueAction)action; if (va.Name != Name) { return(false); } if (!Helper.DoubleTryParse(Value)) { return(false); } if (va.ValueExact == null && va.ValueMinInt != null && va.ValueMaxInt != null) //random int { double value = Helper.StringToDouble(Value); double minInt = Helper.StringToDouble(va.ValueMinInt); double maxInt = Helper.StringToDouble(va.ValueMaxInt); //Check if values are integer if (value != Math.Round(value)) { if (Comparator == "GREATER") { value = Math.Truncate(value); } if (Comparator == "GREATER_EQUAL") { value = Math.Truncate(value) + 1; } if (Comparator == "EQUALS") { return(false); } if (Comparator == "NOT") { return(true); } if (Comparator == "LESS_EQUAL") { value = Math.Truncate(value); } if (Comparator == "LESS") { value = Math.Truncate(value) + 1; } } if (minInt != Math.Round(minInt)) { return(false); } if (maxInt != Math.Round(maxInt)) { return(false); } switch (Comparator) { case "GREATER": if (value >= maxInt) { return(false); } if (value < minInt) { return(true); } probability = (maxInt - value) / (1 + maxInt - minInt); return(true); case "GREATER_EQUAL": if (value > maxInt) { return(false); } if (value <= minInt) { return(true); } probability = (1 + maxInt - value) / (1 + maxInt - minInt); return(true); case "EQUALS": if (value > maxInt) { return(false); } if (value < minInt) { return(false); } probability = 1 / (1 + maxInt - minInt); return(true); case "NOT": if (value > maxInt) { return(true); } if (value < minInt) { return(true); } probability = (maxInt - minInt) / (1 + maxInt - minInt); return(true); case "LESS_EQUAL": if (value >= maxInt) { return(true); } if (value < minInt) { return(false); } probability = (1 + value - minInt) / (1 + maxInt - minInt); return(true); case "LESS": if (value > maxInt) { return(true); } if (value <= minInt) { return(false); } probability = (value - minInt) / (1 + maxInt - minInt); return(true); default: return(false); } } else if (va.ValueExact == null && va.ValueMinFloat != null && va.ValueMaxFloat != null) //random float { double value = Helper.StringToDouble(Value); double minFloat = Helper.StringToDouble(va.ValueMinFloat); double maxFloat = Helper.StringToDouble(va.ValueMaxFloat); switch (Comparator) { case "GREATER": if (value >= maxFloat) { return(false); } if (value < minFloat) { return(true); } probability = (maxFloat - value) / (maxFloat - minFloat); return(true); case "GREATER_EQUAL": //Should add minimal possible value if (value > maxFloat) { return(false); } if (value <= minFloat) { return(true); } probability = (maxFloat - value) / (maxFloat - minFloat); return(true); case "EQUALS": //Should add minimal possible value if (value > maxFloat) { return(false); } if (value < minFloat) { return(false); } probability = 0 / (1 + maxFloat - minFloat); return(true); case "NOT": if (value > maxFloat) { return(true); } if (value < minFloat) { return(true); } probability = (1 + maxFloat - minFloat) / (maxFloat - minFloat); return(true); case "LESS_EQUAL": //Should add minimal possible value if (value > maxFloat) { return(true); } if (value <= minFloat) { return(false); } probability = (value - minFloat) / (maxFloat - minFloat); return(true); case "LESS": if (value > maxFloat) { return(true); } if (value <= minFloat) { return(false); } probability = (value - minFloat) / (maxFloat - minFloat); return(true); default: return(false); } } else if (va.ValueExact == null || !Helper.DoubleTryParse(va.ValueExact)) //exact value is invalid { return(false); } else //exact value is valid { switch (Comparator) { case "GREATER": return(Helper.StringToDouble(va.ValueExact) > Helper.StringToDouble(Value)); case "GREATER_EQUAL": return(Helper.StringToDouble(va.ValueExact) >= Helper.StringToDouble(Value)); case "EQUALS": return(Helper.StringToDouble(va.ValueExact) == Helper.StringToDouble(Value)); case "NOT": return(Helper.StringToDouble(va.ValueExact) != Helper.StringToDouble(Value)); case "LESS_EQUAL": return(Helper.StringToDouble(va.ValueExact) <= Helper.StringToDouble(Value)); case "LESS": return(Helper.StringToDouble(va.ValueExact) < Helper.StringToDouble(Value)); default: return(false); } } } else { return(false); } }
/// <summary> Check if action statisfies a condition </summary> public abstract bool IsActionStatisfying(DependencyAction action, ref int seconds, ref double probability);
public override bool IsActionStatisfying(DependencyAction action, ref int seconds, ref double probability) { return(false); }