1 package net.mograsim.logic.model;
3 import java.util.function.Consumer;
5 import net.mograsim.logic.core.timeline.Timeline;
6 import net.mograsim.logic.model.model.LogicModelModifiable;
7 import net.mograsim.logic.model.modeladapter.CoreModelParameters;
8 import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
9 import net.mograsim.logic.model.preferences.DefaultRenderPreferences;
11 public class SimpleLogicUIStandalone
13 public static void executeVisualisation(Consumer<LogicModelModifiable> setupLogicModel)
15 executeVisualisation(setupLogicModel, (Consumer<VisualisationObjects>) null);
18 public static void executeVisualisation(Consumer<LogicModelModifiable> setupLogicModel, Consumer<VisualisationObjects> beforeRun)
20 CoreModelParameters params = new CoreModelParameters();
21 params.gateProcessTime = 50;
22 params.hardcodedComponentProcessTime = params.gateProcessTime * 5;
23 params.wireTravelTime = 10;
24 executeVisualisation(setupLogicModel, params, beforeRun);
27 public static void executeVisualisation(Consumer<LogicModelModifiable> setupLogicModel, CoreModelParameters params)
29 executeVisualisation(setupLogicModel, params, null);
32 public static void executeVisualisation(Consumer<LogicModelModifiable> setupLogicModel, CoreModelParameters params,
33 Consumer<VisualisationObjects> beforeRun)
36 LogicModelModifiable logicModel = new LogicModelModifiable();
37 setupLogicModel.accept(logicModel);
39 // convert to core model
40 Timeline timeline = LogicCoreAdapter.convert(logicModel, params);
42 // initialize UI and executer
43 LogicUIStandaloneGUI ui = new LogicUIStandaloneGUI(logicModel, new DefaultRenderPreferences());
44 LogicExecuter exec = new LogicExecuter(timeline);
46 if (beforeRun != null)
47 beforeRun.accept(new VisualisationObjects(logicModel, timeline, ui, exec));
50 exec.setSpeedFactor(1);
51 exec.startLiveExecution();
53 exec.stopLiveExecution();
56 public static class VisualisationObjects
58 public final LogicModelModifiable model;
59 public final Timeline timeline;
60 public final LogicUIStandaloneGUI gui;
61 public final LogicExecuter executer;
63 public VisualisationObjects(LogicModelModifiable model, Timeline timeline, LogicUIStandaloneGUI gui, LogicExecuter executer)
66 this.timeline = timeline;
68 this.executer = executer;
72 private SimpleLogicUIStandalone()
74 throw new UnsupportedOperationException("No SimpleLogicUIStandalone instances");