summaryrefslogtreecommitdiff
path: root/pybcdd.cs
diff options
context:
space:
mode:
authoremkael <emkael@tlen.pl>2018-04-10 02:19:58 +0200
committeremkael <emkael@tlen.pl>2018-04-10 02:19:58 +0200
commit0581c8593e8e1b8f9b3c505b0c0da51f82f93c0d (patch)
tree294722d931808e8a10a0e68b7d95a98d589a97cc /pybcdd.cs
parent211428ebea89e08111354e6956e075967ee4f4af (diff)
Renaming files to suit Python convention
Diffstat (limited to 'pybcdd.cs')
-rw-r--r--pybcdd.cs116
1 files changed, 116 insertions, 0 deletions
diff --git a/pybcdd.cs b/pybcdd.cs
new file mode 100644
index 0000000..ea1eab3
--- /dev/null
+++ b/pybcdd.cs
@@ -0,0 +1,116 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Windows.Forms;
+using System.IO;
+
+namespace BCDD
+{
+ class Program
+ {
+ static List<String> getFiles(string[] args)
+ {
+ List<String> filenames = new List<String>();
+ foreach (String arg in args)
+ {
+ if (File.Exists(arg))
+ {
+ filenames.Add(arg);
+ }
+ }
+ if (filenames.Count == 0)
+ {
+ OpenFileDialog fd = new OpenFileDialog();
+ fd.Multiselect = true;
+ fd.Filter = "PBN files (*.pbn)|*.pbn|All files (*.*)|*.*";
+ if (fd.ShowDialog() == DialogResult.OK)
+ {
+ filenames = new List<String>(fd.FileNames);
+ }
+ }
+ return filenames;
+ }
+
+ [STAThread]
+ static void Main(string[] args)
+ {
+ List<String> files = Program.getFiles(args);
+ List<String> errors = new List<String>();
+ if (files.Count > 0)
+ {
+ foreach (String filename in files)
+ {
+ try
+ {
+ Console.WriteLine("Analyzing " + filename);
+ PBNFile file = new PBNFile(filename);
+ foreach (PBNBoard board in file.Boards)
+ {
+ DDTable table = new DDTable(board);
+ String boardNo;
+ try
+ {
+ boardNo = board.GetNumber();
+ }
+ catch (FieldNotFoundException)
+ {
+ boardNo = "?";
+ }
+ try
+ {
+ int[,] ddTable = table.GetDDTable();
+ if (ddTable != null)
+ {
+ Console.WriteLine("Board " + boardNo);
+ DDTable.PrintTable(ddTable);
+ ParScore par = new ParScore(board);
+ ParContract contract = par.GetParContract(ddTable);
+ Console.WriteLine(contract);
+ Console.WriteLine();
+ board.SaveDDTable(ddTable);
+ board.SaveParContract(contract);
+ file.WriteBoard(board);
+ }
+ else
+ {
+ String error = "unable to determine DD table for board " + boardNo;
+ errors.Add(String.Format("[{0}] {1}", filename, error));
+ Console.WriteLine("ERROR: " + error);
+ }
+ }
+ catch (DllNotFoundException)
+ {
+ throw;
+ }
+ catch (Exception e)
+ {
+ errors.Add(String.Format("[{0}:{1}] {2}", filename, boardNo, e.Message));
+ Console.WriteLine("ERROR: " + e.Message);
+ }
+ }
+ file.Save();
+ }
+ catch (DllNotFoundException e)
+ {
+ errors.Add("libbcalcdds.dll could not be loaded - make sure it's present in application directory!");
+ Console.WriteLine("ERROR: " + e.Message);
+ break;
+ }
+ catch (Exception e)
+ {
+ errors.Add(e.Message);
+ Console.WriteLine("ERROR: " + e.Message);
+ }
+ }
+ if (errors.Count > 0) {
+ Console.WriteLine("Following ERRORs occured:");
+ foreach (String error in errors) {
+ Console.WriteLine(error);
+ }
+ Console.WriteLine("Press any key to continue...");
+ Console.ReadKey();
+ }
+ }
+ }
+ }
+}