diff --git a/src/main/java/de/neemann/digital/gui/tutorial/InitialTutorial.java b/src/main/java/de/neemann/digital/gui/tutorial/InitialTutorial.java index 2d7579a15..9439ed40b 100644 --- a/src/main/java/de/neemann/digital/gui/tutorial/InitialTutorial.java +++ b/src/main/java/de/neemann/digital/gui/tutorial/InitialTutorial.java @@ -48,7 +48,7 @@ public class InitialTutorial extends JDialog implements CircuitComponent.Tutoria STEPS.add(new Step("tutorial2", (cc, mod, t) -> contains(cc, In.DESCRIPTION, In.DESCRIPTION))); STEPS.add(new Step("tutorial3", (cc, mod, t) -> contains(cc, In.DESCRIPTION, In.DESCRIPTION, XOr.DESCRIPTION))); STEPS.add(new Step("tutorial4", (cc, mod, t) -> contains(cc, In.DESCRIPTION, In.DESCRIPTION, XOr.DESCRIPTION, Out.DESCRIPTION))); - STEPS.add(new Step("tutorial5", (cc, mod, t) -> contains(mod, ModifyInsertWire.class))); + STEPS.add(new Step("tutorial5", (cc, mod, t) -> contains(mod, ModifyInsertWire.class) || isWorking(cc))); STEPS.add(new Step("tutorial6", (cc, mod, t) -> isWorking(cc))); STEPS.add(new Step("tutorial7", (cc, mod, t) -> t.main.getModel() != null)); STEPS.add(new Step("tutorial8", (cc, mod, t) -> outputIsHigh(t))); @@ -99,10 +99,12 @@ public class InitialTutorial extends JDialog implements CircuitComponent.Tutoria } } } - return num == expected; + return num >= expected; } private static boolean isWorking(CircuitComponent cc) { + if (cc.getCircuit().getElements().size() < 4) + return false; try { new ModelCreator(cc.getCircuit(), cc.getLibrary()).createModel(false); return true; @@ -127,7 +129,7 @@ public class InitialTutorial extends JDialog implements CircuitComponent.Tutoria private static boolean contains(CircuitComponent cc, ElementTypeDescription... descriptions) { ArrayList el = new ArrayList<>(cc.getCircuit().getElements()); - if (el.size() != descriptions.length) + if (el.size() < descriptions.length) return false; for (ElementTypeDescription d : descriptions) { Iterator it = el.iterator(); @@ -195,7 +197,10 @@ public class InitialTutorial extends JDialog implements CircuitComponent.Tutoria } private void incIndex() { - stepIndex++; + do { + stepIndex++; + } while (stepIndex < STEPS.size() + && STEPS.get(stepIndex).getChecker().accomplished(circuitComponent, null, this)); if (stepIndex == STEPS.size()) { disableTutorial(); } else {