diff --git a/LogicSimulator/Models/Simulator.cs b/LogicSimulator/Models/Simulator.cs index 01b9476..a3c21ee 100644 --- a/LogicSimulator/Models/Simulator.cs +++ b/LogicSimulator/Models/Simulator.cs @@ -2,7 +2,6 @@ using LogicSimulator.Views.Shapes; using System; using System.Collections.Generic; -using System.Diagnostics; using System.Linq; using System.Threading.Tasks; @@ -112,6 +111,11 @@ private void Tick() { (outs2, outs) = (outs, outs2); // Магия здесь! // Log.Write("Выходы: " + Utils.Obj2json(outs)); + + if (comparative_test_mode) { + prev_state = cur_state; + cur_state = Export(); + } } public string Export() => string.Join("", outs.Select(x => x ? '1' : '0')); @@ -132,5 +136,26 @@ public void Clear() { */ public void TopSecretPublicTickMethod() => Tick(); + + // Для комплесного решения: + + public Switch[] GetSwitches() => items.Select(x => x.item).OfType().ToArray(); + public LightBulb[] GetLightBulbs() => items.Select(x => x.item).OfType().ToArray(); + + // Для УМНОГО комплесного решения XD: + + private bool comparative_test_mode = false; + private string prev_state; + private string cur_state; + + public bool ComparativeTestMode { + get => comparative_test_mode; + set { + comparative_test_mode = value; + if (value) prev_state = cur_state = Export(); + } + } + + public bool SomethingHasChanged => prev_state != cur_state; } } diff --git a/LogicSimulator/ViewModels/MainWindowViewModel.cs b/LogicSimulator/ViewModels/MainWindowViewModel.cs index 388bc62..227aaf1 100644 --- a/LogicSimulator/ViewModels/MainWindowViewModel.cs +++ b/LogicSimulator/ViewModels/MainWindowViewModel.cs @@ -181,6 +181,8 @@ public void FuncComm(string Comm) { break; case "Save": map.Export(); + // Для создания тестовых штучек: + File.WriteAllText("../../../for_test.json", Utils.Obj2json((map.current_scheme ?? throw new System.Exception("Чё?!")).Export())); break; case "SaveAs": map.Export(); diff --git a/LogicSimulator/Views/MainWindow.axaml b/LogicSimulator/Views/MainWindow.axaml index ec17f05..4dd310c 100644 --- a/LogicSimulator/Views/MainWindow.axaml +++ b/LogicSimulator/Views/MainWindow.axaml @@ -73,10 +73,10 @@ - -