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.CoreModelParameters.CoreModelParametersBuilder;
9 import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
10 import net.mograsim.logic.model.preferences.DefaultRenderPreferences;
12 public class SimpleLogicUIStandalone
14 public static void executeVisualisation(Consumer<LogicModelModifiable> setupLogicModel)
16 executeVisualisation(setupLogicModel, (Consumer<VisualisationObjects>) null);
19 public static void executeVisualisation(Consumer<LogicModelModifiable> setupLogicModel, Consumer<VisualisationObjects> beforeRun)
21 CoreModelParametersBuilder paramsBuilder = CoreModelParameters.builder();
22 paramsBuilder.gateProcessTime = 50;
23 paramsBuilder.hardcodedComponentProcessTime = paramsBuilder.gateProcessTime * 5;
24 paramsBuilder.wireTravelTime = 10;
25 executeVisualisation(setupLogicModel, paramsBuilder.build(), beforeRun);
28 public static void executeVisualisation(Consumer<LogicModelModifiable> setupLogicModel, CoreModelParameters params)
30 executeVisualisation(setupLogicModel, params, null);
33 public static void executeVisualisation(Consumer<LogicModelModifiable> setupLogicModel, CoreModelParameters params,
34 Consumer<VisualisationObjects> beforeRun)
37 LogicModelModifiable logicModel = new LogicModelModifiable();
38 setupLogicModel.accept(logicModel);
40 // convert to core model
41 Timeline timeline = LogicCoreAdapter.convert(logicModel, params);
43 // initialize UI and executer
44 LogicUIStandaloneGUI ui = new LogicUIStandaloneGUI(logicModel, new DefaultRenderPreferences());
45 LogicExecuter exec = new LogicExecuter(timeline);
47 if (beforeRun != null)
48 beforeRun.accept(new VisualisationObjects(logicModel, timeline, ui, exec));
51 exec.setSpeedFactor(1);
52 exec.startLiveExecution();
54 exec.stopLiveExecution();
57 public static class VisualisationObjects
59 public final LogicModelModifiable model;
60 public final Timeline timeline;
61 public final LogicUIStandaloneGUI gui;
62 public final LogicExecuter executer;
64 public VisualisationObjects(LogicModelModifiable model, Timeline timeline, LogicUIStandaloneGUI gui, LogicExecuter executer)
67 this.timeline = timeline;
69 this.executer = executer;
73 private SimpleLogicUIStandalone()
75 throw new UnsupportedOperationException("No SimpleLogicUIStandalone instances");