public override ReturnCodes Execute(ConsoleCommandController controller) { // MODE: Progress + Library ProgressComponent comp = new ProgressComponent(); comp.Load(ArgSolverLibrary); // MODE: Only Library XmlProvider xml = new XmlProvider(); Library lib = xml.Load(ArgLibrary); controller.DisplayLable("Reading File", ArgLibrary); controller.DisplayLable("Reading Library", lib.GetDetails().Name); if (ArgPuzzle == null || ArgPuzzle == "*") { int cc = 0; comp.Add(lib); } else { Puzzle pux = lib.GetPuzzleByID(ArgPuzzle); comp.Add(pux.MasterMap); } comp.Sort(); comp.Save(ArgSolverLibrary); controller.Display(comp.Summary); return ReturnCodes.OK; }
public Game() { InitializeComponent(); var xml = new XmlProvider(); Library = xml.Load(@"C:\Projects\SokoSolve\trunc\SokoSolve.UI\Content\Libraries\Sasquatch.ssx"); logic = new SokoSolve.Core.Game.Game(Library.Puzzles.First(), Library.Puzzles[0].MasterMap.Map); }
public void TestMicrobanFailureOne() { XmlProvider xml = new XmlProvider(); Library lib = xml.Load(MakePathUIContent(@"Libraries\SolverDevelopment.ssx")); Puzzle puz = lib.GetPuzzleByID("P31"); int solutions = SolveForSolutions(puz.MasterMap); Assert.IsTrue(solutions > 0, "Must find a solution"); }
public void TestLibraryReport() { XmlProvider xmlHelper = new XmlProvider(); Library lib = xmlHelper.Load(MakePathUIContent("Libraries\\Sasquatch.ssx")); LibraryReport rpt = new LibraryReport(lib, new StaticImage(ResourceController.Singleton.GetInstance("default"), new VectorInt(16,16)),@"."); rpt.BuildReport(); rpt.Save(@"library.html"); }
public void TestCornerHoverHint() { XmlProvider xml = new XmlProvider(); Library lib = xml.Load(MakePathUIContent(@"Libraries\SolverDevelopment.ssx")); Puzzle puz = lib.GetPuzzleByID("P7"); Assert.IsNotNull(puz); int solutions = SolveForSolutions(puz.MasterMap); Assert.IsTrue(solutions == 0, "Must not find a solution"); }
public void TestProgressCreate() { ProgressComponent comp = new ProgressComponent(); XmlProvider xml = new XmlProvider(); Library lib = xml.Load(MakePathUIContent(@"Libraries\SolverDevelopment.ssx")); comp.Add(lib); comp.Save("temp_test_progress.xml"); ProgressComponent load = new ProgressComponent(); load.Load("temp_test_progress.xml"); Assert.AreEqual(comp.Count, load.Count); }
public void TestSolverReport() { XmlProvider xmlHelper = new XmlProvider(); Library lib = xmlHelper.Load(MakePathUIContent("Libraries\\Sasquatch.ssx")); List<SolverResult> results = new List<SolverResult>(); SolverController one = new SolverController(lib.Puzzles[0].MasterMap); results.Add(one.Solve()); SolverController two = new SolverController(lib.Puzzles[1].MasterMap); results.Add(two.Solve()); SolverResultHTML rpt = new SolverResultHTML(results, null); rpt.BuildReport(); rpt.Save(@"solver.html"); }
public void TestProgressUpdate() { ProgressComponent comp = new ProgressComponent(); XmlProvider xml = new XmlProvider(); Library lib = xml.Load(MakePathUIContent(@"Libraries\Sasquatch.ssx")); comp.Add(lib); var res = Solve(lib.GetPuzzleByID("P1").MasterMap.Map); var rec = comp.Update(res); Assert.IsTrue(rec.HasSolution); var res2 = Solve(lib.GetPuzzleByID("P3").MasterMap.Map); var rec2 = comp.Update(res2); Assert.IsTrue(rec2.HasSolution); comp.Save("temp_test_progress.xml"); }
/// <summary> /// Set the HTML /// </summary> private void InitHTML() { StringBuilder html = new StringBuilder(File.ReadAllText(FileManager.getContent("$html/Welcome.html"))); XmlProvider prov = new XmlProvider(); Core.Model.Library lib = prov.Load(ProfileController.Current.LibraryLastFile); HtmlBuilder leftpane = new HtmlBuilder(); HtmlBuilder rightpane = new HtmlBuilder(); Current = lib.GetPuzzleByID(ProfileController.Current.LibraryLastPuzzle); if (Current == null) { ProfileController.Current.LibraryLastPuzzle = lib.Puzzles[0].PuzzleID; Current = lib.Puzzles[0]; } if (Current != null) { leftpane.AddSection(null); HtmlReporter.Report(leftpane, Current.Library.Details); rightpane.AddLine("{0}/{1} '<b>{2}</b>'", Current.Order, Current.Library.Puzzles.Count, Current.Details.Name); rightpane.Add("<a href=\"app://Puzzle/{0}\">", Current.PuzzleID); rightpane.Add(Current.MasterMap, DrawingHelper.DrawPuzzle(Current.MasterMap), null); rightpane.Add("</a>"); rightpane.AddLine("<br/><i>Click to play...</i>"); } else { // Library has no puzzles } html = html.Replace("[Details]", leftpane.GetHTMLBody()); html = html.Replace("[Image]", rightpane.GetHTMLBody()); html = html.Replace("[BASEHREF]", FileManager.getContent("$html")); html = html.Replace("[USERNAME]", ProfileController.Current.UserName); htmlView.SetHTML(html.ToString()); }
/// <summary> /// Load and display a file in Library mode /// </summary> /// <param name="libraryFile"></param> public void LoadLibrary(string libraryFile) { try { XmlProvider xml = new XmlProvider(); InitLibrary(xml.Load(libraryFile)); Mode = Modes.Library; } catch(Exception ex) { // Nothing } }
public override ReturnCodes Execute(ConsoleCommandController controller) { if (ArgReport != null) { reportFile = File.CreateText(ArgReport); } if (!string.IsNullOrEmpty(ArgSolverLibrary)) { DateTime start = DateTime.Now; // MODE: Progress + Library ProgressComponent comp = new ProgressComponent(); Library lib = null; // It is exists load... if (File.Exists(ArgSolverLibrary)) { comp.Load(ArgSolverLibrary); } // If a library is specified, merge/add it... if (!string.IsNullOrEmpty(ArgLibrary)) { XmlProvider xml = new XmlProvider(); lib = xml.Load(ArgLibrary); comp.Add(lib); } int cc = 0; foreach (SolverPuzzle item in comp.Items) { if (ArgNonSolutionOnly && item.HasSolution) { controller.DisplayLable("Skipping solution", item.Name); cc++; continue; } TimeSpan left = TimeSpan.FromSeconds((double) (comp.Items.Count - cc)*ArgMaxTime); controller.DisplayLable("Est. Time Left", left.ToString()); controller.DisplayLable("Time Elapsed", (DateTime.Now-start).ToString()); controller.Display("=========================================================================="); controller.Display(""); controller.DisplayLable("Attempt", string.Format("{0}/{1} {2}%, maxtime={3}", cc, comp.Items.Count, cc*100/comp.Items.Count, TimeSpan.FromSeconds(ArgMaxTime))); controller.DisplayLable("Name", item.Name); controller.DisplayLable("Rating", string.Format("{0}, size=({1}, {2})", item.Rating, item.Width, item.Height)); controller.Display(StringHelper.Join(item.NormalisedMap, null, Environment.NewLine)); SokobanMap map = new SokobanMap(); map.SetFromStrings(item.NormalisedMap); using (SolverController ctrl = new SolverController(map)) { ctrl.ExitConditions.MaxDepth = 1000; ctrl.ExitConditions.MaxItterations = 10000000; ctrl.ExitConditions.MaxTimeSecs = (float) ArgMaxTime; SolverResult res = ctrl.Solve(); if (res.Exception != null) { controller.Display(res.Exception); } controller.DisplayLable("Result", res.Summary); comp.Update(res); } CheckForceGC(); controller.Display("---------------------------------------------------------------------------"); if (System.Console.KeyAvailable && System.Console.ReadKey().KeyChar == 'Q') { controller.Display("BREAK REQUESTED... Exiting"); break; } cc++; } comp.Save(ArgSolverLibrary); } else if (!string.IsNullOrEmpty(ArgLibrary)) { // MODE: Only Library XmlProvider xml = new XmlProvider(); Library lib = xml.Load(ArgLibrary); if (ArgPuzzle == "*") { int cc = 0; foreach (Puzzle puzzle in lib.Puzzles) { cc++; controller.Display(""); controller.DisplayLable("Attempting", string.Format("{0:000} of {1:000}", cc, lib.Puzzles.Count)); SolvePuzzle(puzzle.MasterMap, puzzle.GetDetails().Name); CheckForceGC(); if (System.Console.KeyAvailable && System.Console.ReadKey().KeyChar == 'Q') { controller.Display("BREAK REQUESTED... Exiting"); break; } } } else { Puzzle pux = lib.GetPuzzleByID(ArgPuzzle); SolvePuzzle(pux.MasterMap, pux.GetDetails().Name); } } if (reportFile != null) { reportFile.Close(); reportFile.Dispose(); } return ReturnCodes.OK; }
public void TestRecessHoverHint2() { Console.WriteLine(Directory.GetCurrentDirectory()); XmlProvider xml = new XmlProvider(); Library lib = xml.Load(MakePathUIContent(@"Libraries\SolverDevelopment.ssx")); Puzzle puz = lib.GetPuzzleByID("P11"); Assert.IsNotNull(puz); int solutions = SolveForSolutions(puz.MasterMap); Assert.IsTrue(solutions == 0, "Puzzle is dead"); }