protected ButtonRuleSet GenerateButtonRuleSet(bool useDefault = false) { BuildQueryLists(); var buttonRuleSet = new ButtonRuleSet(); while (buttonRuleSet.RuleList.Count < MaxInitialRules && PrimaryQueryList.Count > 0) { var baseQuery = PopQueryFromList(PrimaryQueryList); var num = rand.Next(2); if (num == 0) { buttonRuleSet.RuleList.Add(CreateRule(baseQuery, null, false)); } for (var i = 0; i < num; i++) { buttonRuleSet.RuleList.Add(CreateRule(baseQuery, PopQueryFromList(SecondaryQueryList), false)); } } var rule = new Rule(); rule.Queries.Add(OtherwiseQuery()); rule.Solution = ButtonSolutions.Hold; rule.SolutionArgs = new Dictionary <string, object>(); buttonRuleSet.RuleList.Add(rule); while (buttonRuleSet.HoldRuleList.Count < MaxHoldRules && IndicatorColorQueryList.Count > 0) { var baseQuery2 = PopQueryFromList(IndicatorColorQueryList); buttonRuleSet.HoldRuleList.Add(CreateRule(baseQuery2, null, true)); } buttonRuleSet.HoldRuleList.Add(CreateRule(IndicatorOtherwiseQuery(), null, true)); RuleSet = buttonRuleSet; return(buttonRuleSet); }
protected ButtonRuleSet GenerateButtonRuleSet(bool useDefault = false) { var buttonRuleSet = new ButtonRuleSet(); if (useDefault) { buttonRuleSet.RuleList.Add(mkRule(ButtonSolutions.Hold, mkQuery(QueryableButtonProperty.IsButtonColor, "color", ButtonColor.blue), mkQuery(QueryableButtonProperty.IsButtonInstruction, "instruction", ButtonInstruction.Abort))); buttonRuleSet.RuleList.Add(mkRule(ButtonSolutions.Press, mkQuery(QueryableProperty.MoreThanXBatteries, "batteryCount", 1), mkQuery(QueryableButtonProperty.IsButtonInstruction, "instruction", ButtonInstruction.Detonate))); buttonRuleSet.RuleList.Add(mkRule(ButtonSolutions.Hold, mkQuery(QueryableButtonProperty.IsButtonColor, "color", ButtonColor.white), mkQuery(QueryableProperty.IndicatorXLit, "label", "CAR"))); buttonRuleSet.RuleList.Add(mkRule(ButtonSolutions.Press, mkQuery(QueryableProperty.MoreThanXBatteries, "batteryCount", 2), mkQuery(QueryableProperty.IndicatorXLit, "label", "FRK"))); buttonRuleSet.RuleList.Add(mkRule(ButtonSolutions.Hold, mkQuery(QueryableButtonProperty.IsButtonColor, "color", ButtonColor.yellow))); buttonRuleSet.RuleList.Add(mkRule(ButtonSolutions.Press, mkQuery(QueryableButtonProperty.IsButtonColor, "color", ButtonColor.red), mkQuery(QueryableButtonProperty.IsButtonInstruction, "instruction", ButtonInstruction.Hold))); buttonRuleSet.RuleList.Add(mkRule(ButtonSolutions.Hold, mkQuery(QueryableButtonProperty.ButtonOtherwise))); buttonRuleSet.HoldRuleList.Add(mkRule(ButtonSolutions.ReleaseOnTimerText("4"), mkQuery(QueryableButtonProperty.IsIndicatorColor, "color", BigButtonLEDColor.Blue))); buttonRuleSet.HoldRuleList.Add(mkRule(ButtonSolutions.ReleaseOnTimerText("1"), mkQuery(QueryableButtonProperty.IsIndicatorColor, "color", BigButtonLEDColor.White))); buttonRuleSet.HoldRuleList.Add(mkRule(ButtonSolutions.ReleaseOnTimerText("5"), mkQuery(QueryableButtonProperty.IsIndicatorColor, "color", BigButtonLEDColor.Yellow))); buttonRuleSet.HoldRuleList.Add(mkRule(ButtonSolutions.ReleaseOnTimerText("1"), mkQuery(QueryableButtonProperty.IndicatorOtherwise))); return(buttonRuleSet); } BuildQueryLists(); while (buttonRuleSet.RuleList.Count < MaxInitialRules && PrimaryQueryList.Count > 0) { var baseQuery = PopQueryFromList(PrimaryQueryList); var num = rand.Next(2); if (num == 0) { buttonRuleSet.RuleList.Add(CreateRule(baseQuery, null, false)); } for (var i = 0; i < num; i++) { buttonRuleSet.RuleList.Add(CreateRule(baseQuery, PopQueryFromList(SecondaryQueryList), false)); } } var rule = new Rule(); rule.Queries.Add(OtherwiseQuery()); rule.Solution = ButtonSolutions.Hold; rule.SolutionArgs = new Dictionary <string, object>(); buttonRuleSet.RuleList.Add(rule); while (buttonRuleSet.HoldRuleList.Count < MaxHoldRules && IndicatorColorQueryList.Count > 0) { var baseQuery2 = PopQueryFromList(IndicatorColorQueryList); buttonRuleSet.HoldRuleList.Add(CreateRule(baseQuery2, null, true)); } buttonRuleSet.HoldRuleList.Add(CreateRule(IndicatorOtherwiseQuery(), null, true)); RuleSet = buttonRuleSet; return(buttonRuleSet); }
protected override IEnumerator ForcedSolveIEnumerator() { yield return(null); ButtonRuleSet ruleset = RuleManager.Instance.ButtonRuleSet; ruleset.HoldRuleList.Insert(0, ForcedSolveRule()); ruleset.RuleList.Insert(0, ForcedSolveRule()); if (!_held) { yield return(DoInteractionClick(_button)); } else { DoInteractionEnd(_button); _held = false; } ruleset.HoldRuleList.RemoveAt(0); ruleset.RuleList.RemoveAt(0); }