From 942644c79227d9fab2f80730ccf49a7e76bfb503 Mon Sep 17 00:00:00 2001 From: emkael Date: Mon, 19 Nov 2012 15:50:04 +0000 Subject: * "average" action in dealer scripts * dealer output encoding fix git-svn-id: https://svn.emkael.info/an9k@26 05ec0d5d-773b-4d93-9e23-c81a7ac79feb --- Analizator9000/Analizator9000/DealerParser.cs | 65 ++++++++++++++++++++++++- Analizator9000/Analizator9000/DealerWrapper.cs | 2 + Analizator9000/Analizator9000/Form1.Designer.cs | 28 ++++++++++- Analizator9000/Analizator9000/Form1.cs | 5 ++ 4 files changed, 98 insertions(+), 2 deletions(-) diff --git a/Analizator9000/Analizator9000/DealerParser.cs b/Analizator9000/Analizator9000/DealerParser.cs index 1ed640c..b542554 100644 --- a/Analizator9000/Analizator9000/DealerParser.cs +++ b/Analizator9000/Analizator9000/DealerParser.cs @@ -28,6 +28,10 @@ namespace Analizator9000 /// Pre-dealt cards, indexed by player. Compiles into 'predeal' section of onput script. /// public Dictionary predeal = new Dictionary(); + /// + /// "Actions" for Dealer to the check average value of. + /// + public List actions = new List(); /// /// Loads the input script file and parses it. Parses out everything outside of predeal/condition/produce/generate/action sections. @@ -123,6 +127,56 @@ namespace Analizator9000 } } break; + case "action": + Regex pattern = new Regex(@"(?,)|(?\()|(?\))|(?[^,\(\)]*)"); + MatchCollection matches = pattern.Matches(section.Aggregate((a, b) => a + b)); + List tokens = new List(); + foreach (Match match in matches) + { + int groupNo = 0; + foreach (Group group in match.Groups) + { + if (group.Success && groupNo > 0) + { + tokens.Add(group.Value); + } + groupNo++; + } + } + int open = 0; + List actions = new List(); + String currentAction = ""; + foreach (String token in tokens) + { + switch (token) + { + case "(": + open++; + currentAction += token; + break; + case ")": + open--; + currentAction += token; + break; + case ",": + if (open == 0) + { + actions.Add(currentAction.Trim()); + currentAction = ""; + } + else + { + currentAction += token; + } + break; + default: + currentAction += token; + break; + } + } + actions.Add(currentAction.Trim()); + this.actions = actions.Where(s => s.StartsWith("average")).ToList(); + break; } } } @@ -167,7 +221,16 @@ namespace Analizator9000 file.WriteLine("produce"); file.WriteLine(this.produce); file.WriteLine("action"); - file.WriteLine("printoneline"); + file.Write("printoneline"); + foreach (String action in this.actions) + { + if (action.Trim().Length > 0) + { + file.WriteLine(","); + file.Write("average " + action); + } + } + file.WriteLine(); file.Close(); return filename; } diff --git a/Analizator9000/Analizator9000/DealerWrapper.cs b/Analizator9000/Analizator9000/DealerWrapper.cs index e538d5e..e7ade21 100644 --- a/Analizator9000/Analizator9000/DealerWrapper.cs +++ b/Analizator9000/Analizator9000/DealerWrapper.cs @@ -5,6 +5,7 @@ using System.Text; using System.Diagnostics; using System.IO; using System.Text.RegularExpressions; +using System.Globalization; namespace Analizator9000 { @@ -128,6 +129,7 @@ namespace Analizator9000 pInfo.UseShellExecute = false; pInfo.RedirectStandardOutput = true; pInfo.RedirectStandardError = true; + pInfo.StandardOutputEncoding = pInfo.StandardErrorEncoding = Encoding.UTF8; this.debugWriteLine(pInfo.FileName + " " + pInfo.Arguments); Process dealerProc = new Process(); dealerProc.StartInfo = pInfo; diff --git a/Analizator9000/Analizator9000/Form1.Designer.cs b/Analizator9000/Analizator9000/Form1.Designer.cs index 84a5ffd..619e0a5 100644 --- a/Analizator9000/Analizator9000/Form1.Designer.cs +++ b/Analizator9000/Analizator9000/Form1.Designer.cs @@ -107,6 +107,8 @@ this.analyzeFileDialog = new System.Windows.Forms.OpenFileDialog(); this.resultTextBox = new System.Windows.Forms.TextBox(); this.abortButton = new System.Windows.Forms.Button(); + this.label23 = new System.Windows.Forms.Label(); + this.actionsBox = new System.Windows.Forms.RichTextBox(); this.generateGroup.SuspendLayout(); this.tableLayoutPanel1.SuspendLayout(); this.analyzeGroup.SuspendLayout(); @@ -115,6 +117,8 @@ // // generateGroup // + this.generateGroup.Controls.Add(this.actionsBox); + this.generateGroup.Controls.Add(this.label23); this.generateGroup.Controls.Add(this.conditionBox); this.generateGroup.Controls.Add(this.generateButton); this.generateGroup.Controls.Add(this.produceBox); @@ -139,7 +143,7 @@ this.conditionBox.Font = new System.Drawing.Font("Lucida Console", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); this.conditionBox.Location = new System.Drawing.Point(10, 202); this.conditionBox.Name = "conditionBox"; - this.conditionBox.Size = new System.Drawing.Size(476, 137); + this.conditionBox.Size = new System.Drawing.Size(253, 137); this.conditionBox.TabIndex = 11; this.conditionBox.Text = ""; // @@ -954,6 +958,7 @@ // // statusListBox // + this.statusListBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); this.statusListBox.FormattingEnabled = true; this.statusListBox.Location = new System.Drawing.Point(531, 343); this.statusListBox.Name = "statusListBox"; @@ -985,6 +990,25 @@ this.abortButton.UseVisualStyleBackColor = true; this.abortButton.Click += new System.EventHandler(this.abortButton_Click); // + // label23 + // + this.label23.AutoSize = true; + this.label23.Location = new System.Drawing.Point(269, 186); + this.label23.Name = "label23"; + this.label23.Size = new System.Drawing.Size(134, 13); + this.label23.TabIndex = 12; + this.label23.Text = "Zdarzenia do sprawdzenia:"; + // + // actionsBox + // + this.actionsBox.AcceptsTab = true; + this.actionsBox.Font = new System.Drawing.Font("Lucida Console", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); + this.actionsBox.Location = new System.Drawing.Point(269, 202); + this.actionsBox.Name = "actionsBox"; + this.actionsBox.Size = new System.Drawing.Size(217, 137); + this.actionsBox.TabIndex = 13; + this.actionsBox.Text = ""; + // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -1095,6 +1119,8 @@ private System.Windows.Forms.Label label19; private System.Windows.Forms.Button abortButton; private System.Windows.Forms.Button button3; + private System.Windows.Forms.Label label23; + private System.Windows.Forms.RichTextBox actionsBox; } } diff --git a/Analizator9000/Analizator9000/Form1.cs b/Analizator9000/Analizator9000/Form1.cs index d4cf024..ad2e595 100644 --- a/Analizator9000/Analizator9000/Form1.cs +++ b/Analizator9000/Analizator9000/Form1.cs @@ -81,6 +81,10 @@ namespace Analizator9000 predealSouthDiamondsBox.Text = parser.predeal["south"][2]; predealSouthClubsBox.Text = parser.predeal["south"][3]; } + foreach (String action in parser.actions) + { + actionsBox.Text += action.Substring("average".Length) + "\n"; + } generateFileNameTextBox.Text = generateFileDialog.FileName; } catch (Exception ex) @@ -116,6 +120,7 @@ namespace Analizator9000 predeal.Value[i] = predeal.Value[i].ToUpper().Replace('D', 'Q').Replace('W', 'J').Replace("10", "T"); } } + parser.actions = actionsBox.Text.Split('\n').ToList(); } catch (Exception ex) { -- cgit v1.2.3