private async Task PlayRuleAsync(RuleCard thisCard)
        {
            if (thisCard.Deck == EnumRuleText.ReverseOrder)
            {
                if (_gameContainer.PlayerList.Count() == 2)
                {
                    _gameContainer.SaveRoot !.AnotherTurn = true;
                    await _gameContainer.AnimatePlayAsync !(thisCard);
                    await _analyzeProcesses.AnalyzeQueAsync();

                    return;
                }
            }
            if (thisCard.Category != EnumRuleCategory.Basic && thisCard.Category != EnumRuleCategory.None)
            {
                var thisCat = thisCard.Category;
                _gameContainer.SaveRoot !.RuleList.RemoveAllOnly(items => items.Category == thisCat);
            }
            _gameContainer.SaveRoot !.RuleList.Add(thisCard);
            _gameContainer.RefreshRules();
            if (_gameContainer !.QuePlayList.Count == 0)
            {
                _analyzeProcesses.AnalyzeRules();
                if (_gameContainer.LeftToDraw > 0)
                {
                    _gameContainer.SaveRoot.DoAnalyze = true;
                    await _gameContainer.DrawAsync !();
                    return;
                }
            }
            await _analyzeProcesses.AnalyzeQueAsync();
        }
 // - la dernière mesure de la partition doit comporter une ou plusieurs notes, sans accord
 public LastMeasureValidationRule(int n, params Measure[] measures)
 {
     RuleList.Add(new ValidationRule <Measure[]>(measures, m => m.Last().Type == MeasureType.ACCORD || m.Last().Type == MeasureType.SILENCE)
     {
         Number    = n,
         Measures  = measures,
         ErrorCode = ValidationError.HARMONY_LAST_MEASUREMENT_TYPE_ERROR,
     });
 }
Beispiel #3
0
 /// <summary>
 /// Executes the specified builderSource.
 /// </summary>
 /// <returns></returns>
 /// ///
 public RuleList BuildRules()
 {
     Rules = new RuleList();
     foreach (var attribute in ValidationAttributes)
     {
         ValidationAttribute validation = (ValidationAttribute)attribute;
         Rules.Add(validation.CreateRule(validation.Target));
     }
     return(Rules);
 }
Beispiel #4
0
 private Rule(Conclusion conclusion, Dictionary <string, List <Rule> > RuleLists)
 {
     this.conclusion = conclusion;
     if (this.RuleList is null)
     {
         RuleList = new List <Rule>();
         RuleLists.Add(conclusion.ToString(), RuleList);
     }
     RuleList.Add(this);
     this.RuleLists = RuleLists;
 }
        //private static bool fieldsNotEmpty(RuleGrid grid, int row, int[] columns)
        //{
        //    foreach (int i in columns)
        //    {
        //        if (((String)grid[row, i].Value) == null)
        //        {
        //            //throw new Exception("Some fields are incomplete.");
        //            return false;
        //        }
        //        if (((String)grid[row, i].Value).Equals(String.Empty))
        //        {
        //            return false;
        //        }
        //    }
        //    return true;
        //}
        public static RuleList ParseRule(string text)
        {
            StringReader sr = new StringReader(Helper.CleanRuleText(text));
            // format string
            RuleList rules = new RuleList(sr.ReadLine()); ;

            string[] tokens;
            string s;
            while ((s = sr.ReadLine()) != null)
            {
                // rule
                tokens = s.Split('\t');
                if (tokens[0].Equals("copy") || tokens[0].Equals("cpy"))
                //Copy Rule
                {
                    string[] searchPatterns = new string[tokens.Length - 2];
                    Array.Copy(tokens, 2, searchPatterns, 0, searchPatterns.Length);
                    rules.Add(new CopyRule(tokens[1], searchPatterns));
                }
                else if (tokens[0].Equals("delete") || tokens[0].Equals("del"))
                //Delete Rule
                {
                    if (tokens.Length == 1)
                        throw new System.ArgumentException(Textual.ErrorDeleteRule);
                    string[] searchPatterns = new string[tokens.Length - 1];
                    Array.Copy(tokens, 1, searchPatterns, 0, searchPatterns.Length);
                    rules.Add(new DeleteRule(searchPatterns));
                }
                else if (tokens[0].Equals("replace") || tokens[0].Equals("rpl"))
                //Replace Rule
                {
                    if (tokens.Length < 3)
                        throw new System.ArgumentException(Textual.ErrorReplaceRule);
                    string[] searchPatterns = new string[tokens.Length - 2];
                    Array.Copy(tokens, 2, searchPatterns, 0, searchPatterns.Length);
                    rules.Add(new ReplaceRule(tokens[1], tokens[2], searchPatterns));
                }
            }

            return rules;
        }
 internal static RuleList getRuleList(HttpResponseMessage responce)
 {
     var ruleList = new RuleList();
     var jsonObj = JsonConvert.DeserializeObject<Dictionary<string, object>>(responce.Content.ReadAsStringAsync().Result);
     if(jsonObj.ContainsKey("rules"))
     {
         var rulesArray = JsonConvert.DeserializeObject<List<object>>(jsonObj["rules"].ToString());
         foreach(var ruleObj in rulesArray)
         {
             var rule = new Rule();
             rule = JsonConvert.DeserializeObject<Rule>(ruleObj.ToString());
             ruleList.Add(rule);
         }
     }
     return ruleList;
 }
Beispiel #7
0
        internal static RuleList getRuleList(HttpResponseMessage responce)
        {
            var ruleList = new RuleList();
            var jsonObj  = JsonConvert.DeserializeObject <Dictionary <string, object> >(responce.Content.ReadAsStringAsync().Result);

            if (jsonObj.ContainsKey("rules"))
            {
                var rulesArray = JsonConvert.DeserializeObject <List <object> >(jsonObj["rules"].ToString());
                foreach (var ruleObj in rulesArray)
                {
                    var rule = new Rule();
                    rule = JsonConvert.DeserializeObject <Rule>(ruleObj.ToString());
                    ruleList.Add(rule);
                }
            }
            return(ruleList);
        }
        public static RuleList ParseRules(string newFormat, RuleGrid grid)
        {
            // format string
            RuleList rules = new RuleList(newFormat);

            for (int r = grid.FixedRows; r < grid.RowsCount; r++)
            {
                if (!(bool)grid[r, RuleGrid.ColControl].Value)
                    continue;
                if (!grid.CheckRow(r))
                    continue;

                rules.Add(ParseRule(grid.GetCellsAtRow(r)));
            }

            return rules;
        }
        public RuleList parseRuleset(string rulesIn, string homeMt)
        {
            var pmt = ParseKEText(homeMt, rulesIn, false, true);

            if (pmt != null && pmt.Count == 1)
            {
                var ruleList0 = pmt.Values.FirstOrDefault();
                return(ruleList0);
            }
            string[] rules    = rulesIn.Split('\n');
            RuleList ruleList = new RuleList();
            var      outi     = 0;

            for (var r = 0; r < rules.Length; r++)
            {
                string rule = rules[r];
                if (rule.Length > 0)
                {
                    if (rule.Substring(0, 1) == "#" || rule == "")
                    {
                        continue;
                    }

                    var or = ParseRule(new Tokeniser(rule), homeMt);
                    if (or == null)
                    {
                        continue;
                    }
                    or.OptionalHomeMt = homeMt;
                    ruleList.Add(or);
                    // print ("Rule "+outi+" is : ");
                    if (show)
                    {
                        or.print(Console.Write);
                    }
                }
            }
            return(ruleList);
        }
        public MeasuresValidationRule(int n, params Measure[] measures)
        {
            //  - un silence doit être suivi d'un accord
            RuleList.Add(new ValidationRule <Measure[]>(measures,
                                                        m => m[0].Type == MeasureType.SILENCE &&
                                                        m[1].Type != MeasureType.ACCORD)
            {
                Number    = n,
                Measures  = measures,
                ErrorCode = ValidationError.HARMONY_NEXT_MEASUREMENT_TYPE_ACCORD_ERROR,
            });

            //  - un accord ne peut être suivi d'un silence
            RuleList.Add(new ValidationRule <Measure[]>(measures,
                                                        m => m[0].Type == MeasureType.ACCORD &&
                                                        m[1].Type == MeasureType.SILENCE)
            {
                Number    = n,
                Measures  = measures,
                ErrorCode = ValidationError.HARMONY_NEXT_MEASUREMENT_TYPE_EXC_ERROR,
            });

            // - si deux accords se suivent, ils doivent être au maximum espacés d'une note en hauteur
            //  Exemples:
            //  - un accord de B peut être suivi par un accord de A, B ou C
            //  - un accord de G peut être suivi par un accord de F, G ou A
            RuleList.Add(new ValidationRule <Measure[]>(measures,
                                                        m => m[0].Type == MeasureType.ACCORD &&
                                                        m[1].Type == MeasureType.ACCORD &&
                                                        !AreConsecutiveNotes(measures[0][0], measures[1][0], step: 1))
            {
                Number    = n,
                Measures  = measures,
                ErrorCode = ValidationError.HARMONY_MEASUREMENT_HIGH_NOTE_SEP_ERROR,
            });
        }
 /// <summary>
 /// Executes the specified builderSource.
 /// </summary>
 /// <returns></returns>
 /// ///
 public RuleList BuildRules()
 {
     Rules = new RuleList();
     foreach(var attribute in ValidationAttributes)
     {
         ValidationAttribute validation = (ValidationAttribute)attribute;
         Rules.Add(validation.CreateRule(validation.Target));
     }
     return Rules;
 }
Beispiel #12
0
        /// <summary>
        /// Adds a rule to the executer with an already known identifier
        /// </summary>
        /// <param name="identifier">Known unique identifier</param>
        /// <param name="newRule">Rule to add</param>
        /// <returns>Known unique identifier</returns>
        public Guid AddRule(Guid identifier, Rule <TFact, TOutput> newRule)
        {
            RuleList.Add(identifier, newRule);

            return(identifier);
        }
Beispiel #13
0
 //TODO disable enable rule
 //TODO get and send db log to server
 public void AddRuleToList(_m_USB_Watcher_Disable_Enable_Node RuleToAdd)
 {
     mUSBwdeDB.AddRuleToDB(RuleToAdd);
     RuleList.Add(RuleToAdd);
 }
 //TODO disable enable rule
 /// <summary>
 /// Adds the rule to list.
 /// </summary>
 /// <param name="RuleToAdd">The rule to add.</param>
 public void AddRuleToList(_m_Internet_Connection_Disable_Enable_Node RuleToAdd)
 {
     micdeDB.AddRuleToDB(RuleToAdd);
     RuleList.Add(RuleToAdd);
 }