FIX: auto-evaluation from Part-change -> Circuit

This commit is contained in:
Patrick Haßel 2024-05-23 09:03:00 +02:00
parent 8da0cf8071
commit de5d1bfc2c
23 changed files with 152 additions and 113 deletions

View File

@ -42,7 +42,7 @@ public class Circuit {
public Circuit(final CircuitDto dto) { public Circuit(final CircuitDto dto) {
created = dto.getCreated(); created = dto.getCreated();
for (PartDto partDto : dto.getParts()) { for (PartDto partDto : dto.getParts()) {
final Part part = Part.of(partDto); final Part part = Part.of(this, partDto);
verifyFree(part.getPosition()); verifyFree(part.getPosition());
parts.add(part); parts.add(part);
} }
@ -56,7 +56,7 @@ public class Circuit {
public void connect(final Junction a, final Junction b) { public void connect(final Junction a, final Junction b) {
wires.add(new Wire(a, b)); wires.add(new Wire(a, b));
setDirty(); evaluate();
} }
public void disconnect(final Wire wire) { public void disconnect(final Wire wire) {
@ -66,7 +66,7 @@ public class Circuit {
wires.remove(wire); wires.remove(wire);
wire.getA().getWires().remove(wire); wire.getA().getWires().remove(wire);
wire.getB().getWires().remove(wire); wire.getB().getWires().remove(wire);
setDirty(); evaluate();
} }
public <T extends Part> T addPart(final T part) { public <T extends Part> T addPart(final T part) {
@ -76,7 +76,7 @@ public class Circuit {
verifyFree(part.getPosition()); verifyFree(part.getPosition());
parts.add(part); parts.add(part);
part.render(); part.render();
setDirty(); evaluate();
return part; return part;
} }
@ -86,15 +86,11 @@ public class Circuit {
} }
verifyFree(position); verifyFree(position);
part.setPosition(position); part.setPosition(position);
setDirty();
}
private void setDirty() {
evaluate();
dirty = true; dirty = true;
} }
public void evaluate() { public void evaluate() {
dirty = true;
Calculation.calculate(this); Calculation.calculate(this);
parts.forEach(Part::render); parts.forEach(Part::render);
} }

View File

@ -8,7 +8,7 @@ import java.io.OutputStream;
public class CircuitIOService { public class CircuitIOService {
private static final ObjectMapper objectMapper = new ObjectMapper(); private static final ObjectMapper objectMapper = new ObjectMapper().findAndRegisterModules();
public static void write(final Circuit circuit, final OutputStream stream) throws IOException { public static void write(final Circuit circuit, final OutputStream stream) throws IOException {
objectMapper.writeValue(stream, new CircuitDto(circuit)); objectMapper.writeValue(stream, new CircuitDto(circuit));

View File

@ -20,9 +20,9 @@ public class CircuitPanel extends JPanel {
public CircuitPanel() { public CircuitPanel() {
new CircuitPanelDropTarget(this, circuit); new CircuitPanelDropTarget(this, circuit);
final Battery battery = circuit.addPart(new Battery(RST(2, 0))); final Battery battery = circuit.addPart(new Battery(circuit, RST(2, 0)));
final Light light = circuit.addPart(new Light(RST(0, 2))); final Light light = circuit.addPart(new Light(circuit, RST(0, 2)));
final Poti poti = circuit.addPart(new Poti(RST(2, 2))); final Poti poti = circuit.addPart(new Poti(circuit, RST(2, 2)));
poti.rotate(); poti.rotate();
poti.rotate(); poti.rotate();
light.rotate(); light.rotate();

View File

@ -23,23 +23,23 @@ public class CircuitPanelDropTarget extends AbstractDropTarget {
protected boolean drop(final Point point, final String data) { protected boolean drop(final Point point, final String data) {
final Position position = new Position(point); final Position position = new Position(point);
if (data.equals(Battery.class.getSimpleName())) { if (data.equals(Battery.class.getSimpleName())) {
circuit.addPart(new Battery(position)); circuit.addPart(new Battery(circuit, position));
} else if (data.equals(ConnectorCorner.class.getSimpleName())) { } else if (data.equals(ConnectorCorner.class.getSimpleName())) {
circuit.addPart(new ConnectorCorner(position)); circuit.addPart(new ConnectorCorner(circuit, position));
} else if (data.equals(ConnectorEdge.class.getSimpleName())) { } else if (data.equals(ConnectorEdge.class.getSimpleName())) {
circuit.addPart(new ConnectorEdge(position)); circuit.addPart(new ConnectorEdge(circuit, position));
} else if (data.equals(ConnectorMiddle.class.getSimpleName())) { } else if (data.equals(ConnectorMiddle.class.getSimpleName())) {
circuit.addPart(new ConnectorMiddle(position)); circuit.addPart(new ConnectorMiddle(circuit, position));
} else if (data.equals(Light.class.getSimpleName())) { } else if (data.equals(Light.class.getSimpleName())) {
circuit.addPart(new Light(position)); circuit.addPart(new Light(circuit, position));
} else if (data.equals(Switch1x1.class.getSimpleName())) { } else if (data.equals(Switch1x1.class.getSimpleName())) {
circuit.addPart(new Switch1x1(position)); circuit.addPart(new Switch1x1(circuit, position));
} else if (data.equals(Switch1x2.class.getSimpleName())) { } else if (data.equals(Switch1x2.class.getSimpleName())) {
circuit.addPart(new Switch1x2(position)); circuit.addPart(new Switch1x2(circuit, position));
} else if (data.equals(SwitchCross.class.getSimpleName())) { } else if (data.equals(SwitchCross.class.getSimpleName())) {
circuit.addPart(new SwitchCross(position)); circuit.addPart(new SwitchCross(circuit, position));
} else if (data.equals(Poti.class.getSimpleName())) { } else if (data.equals(Poti.class.getSimpleName())) {
circuit.addPart(new Poti(position)); circuit.addPart(new Poti(circuit, position));
} else { } else {
throw new RuntimeException(); throw new RuntimeException();
} }

View File

@ -56,7 +56,6 @@ class CircuitPanelMouseAdapter extends MouseAdapter {
switch (event.getButton()) { switch (event.getButton()) {
case BUTTON1: case BUTTON1:
part.action(); part.action();
circuit.evaluate();
circuitPanel.repaint(); circuitPanel.repaint();
break; break;
case BUTTON3: case BUTTON3:

View File

@ -1,5 +1,6 @@
package de.ph87.electro.circuit.part; package de.ph87.electro.circuit.part;
import de.ph87.electro.circuit.Circuit;
import de.ph87.electro.circuit.part.junction.Junction; import de.ph87.electro.circuit.part.junction.Junction;
import de.ph87.electro.circuit.part.junction.JunctionDto; import de.ph87.electro.circuit.part.junction.JunctionDto;
import de.ph87.electro.circuit.part.parts.*; import de.ph87.electro.circuit.part.parts.*;
@ -15,32 +16,40 @@ import static de.ph87.electro.CONFIG.PART_BACKGROUND;
import static de.ph87.electro.CONFIG.RASTER; import static de.ph87.electro.CONFIG.RASTER;
import static de.ph87.electro.circuit.part.Position.ZERO; import static de.ph87.electro.circuit.part.Position.ZERO;
@Getter
@ToString(onlyExplicitlyIncluded = true) @ToString(onlyExplicitlyIncluded = true)
public abstract class Part { public abstract class Part {
private final Circuit circuit;
@Getter
@ToString.Include @ToString.Include
private final String uuid; private final String uuid;
@Getter
@Setter @Setter
@ToString.Include @ToString.Include
private String name; private String name;
@Getter
private Position position; private Position position;
@Getter
private Orientation orientation = Orientation.R0; private Orientation orientation = Orientation.R0;
@Getter
private final List<Junction> junctions = new ArrayList<>(); private final List<Junction> junctions = new ArrayList<>();
protected final Render render = new Render(); protected final Render render = new Render();
protected Part(final String name, final Position position) { protected Part(final Circuit circuit, final String name, final Position position) {
this.circuit = circuit;
this.uuid = UUID.randomUUID().toString(); this.uuid = UUID.randomUUID().toString();
this.name = name; this.name = name;
setPosition(position); setPosition(position);
} }
protected Part(final PartDto dto) { protected Part(final Circuit circuit, final PartDto dto) {
this.circuit = circuit;
this.uuid = dto.getUuid(); this.uuid = dto.getUuid();
this.name = dto.getName(); this.name = dto.getName();
this.orientation = dto.getOrientation(); this.orientation = dto.getOrientation();
@ -96,7 +105,12 @@ public abstract class Part {
return junctions.stream().filter(junction -> junction.intersects(position)).findFirst(); return junctions.stream().filter(junction -> junction.intersects(position)).findFirst();
} }
public void action() { public final void action() {
_action();
evaluate();
}
public void _action() {
// may be overwritten // may be overwritten
} }
@ -112,20 +126,26 @@ public abstract class Part {
// may be overwritten // may be overwritten
} }
protected void evaluate() {
if (circuit != null) {
circuit.evaluate();
}
}
public List<InnerConnection> getInnerConnections() { public List<InnerConnection> getInnerConnections() {
return Collections.emptyList(); return Collections.emptyList();
} }
public static Part of(final PartDto abstractDto) { public static Part of(final Circuit circuit, final PartDto abstractDto) {
return switch (abstractDto) { return switch (abstractDto) {
case final BatteryDto dto -> new Battery(dto); case final BatteryDto dto -> new Battery(circuit, dto);
case final ConnectorCornerDto dto -> new ConnectorCorner(dto); case final ConnectorCornerDto dto -> new ConnectorCorner(circuit, dto);
case final ConnectorEdgeDto dto -> new ConnectorEdge(dto); case final ConnectorEdgeDto dto -> new ConnectorEdge(circuit, dto);
case final ConnectorMiddleDto dto -> new ConnectorMiddle(dto); case final ConnectorMiddleDto dto -> new ConnectorMiddle(circuit, dto);
case final LightDto dto -> new Light(dto); case final LightDto dto -> new Light(circuit, dto);
case final Switch1x1Dto dto -> new Switch1x1(dto); case final Switch1x1Dto dto -> new Switch1x1(circuit, dto);
case final Switch1x2Dto dto -> new Switch1x2(dto); case final Switch1x2Dto dto -> new Switch1x2(circuit, dto);
case final SwitchCrossDto dto -> new SwitchCross(dto); case final SwitchCrossDto dto -> new SwitchCross(circuit, dto);
case null, default -> throw new RuntimeException(); case null, default -> throw new RuntimeException();
}; };
} }

View File

@ -1,5 +1,6 @@
package de.ph87.electro.circuit.part.parts; package de.ph87.electro.circuit.part.parts;
import de.ph87.electro.circuit.Circuit;
import de.ph87.electro.circuit.part.Orientation; import de.ph87.electro.circuit.part.Orientation;
import de.ph87.electro.circuit.part.Part; import de.ph87.electro.circuit.part.Part;
import de.ph87.electro.circuit.part.Position; import de.ph87.electro.circuit.part.Position;
@ -40,14 +41,14 @@ public class Battery extends Part {
@ToString.Include @ToString.Include
private double resistance = 0.05; private double resistance = 0.05;
public Battery(final Position position) { public Battery(final Circuit circuit, final Position position) {
super("Batterie", position); super(circuit, "Batterie", position);
minus = addJunction("MINUS", P10, P50); minus = addJunction("MINUS", P10, P50);
plus = addJunction("PLUS", P90, P50); plus = addJunction("PLUS", P90, P50);
} }
public Battery(final BatteryDto dto) { public Battery(final Circuit circuit, final BatteryDto dto) {
super(dto); super(circuit, dto);
minus = addJunction(dto.getMinus(), P10, P50); minus = addJunction(dto.getMinus(), P10, P50);
plus = addJunction(dto.getPlus(), P90, P50); plus = addJunction(dto.getPlus(), P90, P50);
voltage = dto.getVoltage(); voltage = dto.getVoltage();

View File

@ -1,5 +1,6 @@
package de.ph87.electro.circuit.part.parts; package de.ph87.electro.circuit.part.parts;
import de.ph87.electro.circuit.Circuit;
import de.ph87.electro.circuit.part.Part; import de.ph87.electro.circuit.part.Part;
import de.ph87.electro.circuit.part.Position; import de.ph87.electro.circuit.part.Position;
import de.ph87.electro.circuit.part.junction.Junction; import de.ph87.electro.circuit.part.junction.Junction;
@ -17,14 +18,14 @@ public class ConnectorCorner extends Part {
private final Junction j1; private final Junction j1;
public ConnectorCorner(final Position position) { public ConnectorCorner(final Circuit circuit, final Position position) {
super("", position); super(circuit, "", position);
j0 = addJunction("J0", P10, P10); j0 = addJunction("J0", P10, P10);
j1 = addJunction("J1", P90, P90); j1 = addJunction("J1", P90, P90);
} }
public ConnectorCorner(final ConnectorCornerDto dto) { public ConnectorCorner(final Circuit circuit, final ConnectorCornerDto dto) {
super(dto); super(circuit, dto);
j0 = addJunction(dto.getJ0(), P10, P10); j0 = addJunction(dto.getJ0(), P10, P10);
j1 = addJunction(dto.getJ1(), P90, P90); j1 = addJunction(dto.getJ1(), P90, P90);
} }

View File

@ -1,5 +1,6 @@
package de.ph87.electro.circuit.part.parts; package de.ph87.electro.circuit.part.parts;
import de.ph87.electro.circuit.Circuit;
import de.ph87.electro.circuit.part.Part; import de.ph87.electro.circuit.part.Part;
import de.ph87.electro.circuit.part.Position; import de.ph87.electro.circuit.part.Position;
import de.ph87.electro.circuit.part.junction.Junction; import de.ph87.electro.circuit.part.junction.Junction;
@ -17,14 +18,14 @@ public class ConnectorEdge extends Part {
private final Junction j1; private final Junction j1;
public ConnectorEdge(final Position position) { public ConnectorEdge(final Circuit circuit, final Position position) {
super("", position); super(circuit, "", position);
j0 = addJunction("J0", P10, P50); j0 = addJunction("J0", P10, P50);
j1 = addJunction("J1", P50, P10); j1 = addJunction("J1", P50, P10);
} }
public ConnectorEdge(final ConnectorEdgeDto dto) { public ConnectorEdge(final Circuit circuit, final ConnectorEdgeDto dto) {
super(dto); super(circuit, dto);
j0 = addJunction(dto.getJ0(), P10, P50); j0 = addJunction(dto.getJ0(), P10, P50);
j1 = addJunction(dto.getJ1(), P50, P10); j1 = addJunction(dto.getJ1(), P50, P10);
} }

View File

@ -1,5 +1,6 @@
package de.ph87.electro.circuit.part.parts; package de.ph87.electro.circuit.part.parts;
import de.ph87.electro.circuit.Circuit;
import de.ph87.electro.circuit.part.Part; import de.ph87.electro.circuit.part.Part;
import de.ph87.electro.circuit.part.Position; import de.ph87.electro.circuit.part.Position;
import de.ph87.electro.circuit.part.junction.Junction; import de.ph87.electro.circuit.part.junction.Junction;
@ -14,13 +15,13 @@ public class ConnectorMiddle extends Part {
private final Junction junction; private final Junction junction;
public ConnectorMiddle(final Position position) { public ConnectorMiddle(final Circuit circuit, final Position position) {
super("", position); super(circuit, "", position);
junction = addJunction("J", P50, P50); junction = addJunction("J", P50, P50);
} }
public ConnectorMiddle(final ConnectorMiddleDto dto) { public ConnectorMiddle(final Circuit circuit, final ConnectorMiddleDto dto) {
super(dto); super(circuit, dto);
junction = addJunction(dto.getJunction(), P50, P50); junction = addJunction(dto.getJunction(), P50, P50);
} }

View File

@ -1,5 +1,6 @@
package de.ph87.electro.circuit.part.parts; package de.ph87.electro.circuit.part.parts;
import de.ph87.electro.circuit.Circuit;
import de.ph87.electro.circuit.part.InnerConnection; import de.ph87.electro.circuit.part.InnerConnection;
import de.ph87.electro.circuit.part.Orientation; import de.ph87.electro.circuit.part.Orientation;
import de.ph87.electro.circuit.part.Part; import de.ph87.electro.circuit.part.Part;
@ -51,14 +52,14 @@ public class Light extends Part {
private Color color = BULB_OFF_COLOR; private Color color = BULB_OFF_COLOR;
public Light(final Position position) { public Light(final Circuit circuit, final Position position) {
super("Licht", position); super(circuit, "Licht", position);
a = addJunction("A", P10, P50); a = addJunction("A", P10, P50);
b = addJunction("B", P90, P50); b = addJunction("B", P90, P50);
} }
public Light(final LightDto dto) { public Light(final Circuit circuit, final LightDto dto) {
super(dto); super(circuit, dto);
a = addJunction(dto.getB(), P10, P50); a = addJunction(dto.getB(), P10, P50);
b = addJunction(dto.getA(), P90, P50); b = addJunction(dto.getA(), P90, P50);
resistance = dto.getResistance(); resistance = dto.getResistance();
@ -67,7 +68,7 @@ public class Light extends Part {
} }
@Override @Override
public void action() { public void _action() {
defect = false; defect = false;
} }

View File

@ -1,5 +1,6 @@
package de.ph87.electro.circuit.part.parts; package de.ph87.electro.circuit.part.parts;
import de.ph87.electro.circuit.Circuit;
import de.ph87.electro.circuit.part.InnerConnection; import de.ph87.electro.circuit.part.InnerConnection;
import de.ph87.electro.circuit.part.Part; import de.ph87.electro.circuit.part.Part;
import de.ph87.electro.circuit.part.Position; import de.ph87.electro.circuit.part.Position;
@ -28,25 +29,29 @@ public class Poti extends Part {
@Setter @Setter
private double resistance = 10; private double resistance = 10;
@Setter
private double ratio = 0.0; private double ratio = 0.0;
public Poti(final Position position) { public Poti(final Circuit circuit, final Position position) {
super("Poti", position); super(circuit, "Poti", position);
common = addJunction("C", P10, P50); common = addJunction("C", P10, P50);
middle = addJunction("M", P50, P10); middle = addJunction("M", P50, P10);
end = addJunction("E", P90, P50); end = addJunction("E", P90, P50);
} }
protected Poti(final PotiDto dto) { protected Poti(final Circuit circuit, final PotiDto dto) {
super(dto); super(circuit, dto);
common = addJunction(dto.getCommon().getName(), P10, P50); common = addJunction(dto.getCommon().getName(), P10, P50);
middle = addJunction(dto.getMiddle().getName(), P50, P10); middle = addJunction(dto.getMiddle().getName(), P50, P10);
end = addJunction(dto.getEnd().getName(), P90, P50); end = addJunction(dto.getEnd().getName(), P90, P50);
} }
public void setRatio(final double ratio) {
this.ratio = ratio;
evaluate();
}
@Override @Override
public void action() { public void _action() {
if (ratio > 0.95) { if (ratio > 0.95) {
ratio = 0; ratio = 0;
} else { } else {

View File

@ -1,11 +1,11 @@
package de.ph87.electro.circuit.part.parts; package de.ph87.electro.circuit.part.parts;
import de.ph87.electro.circuit.Circuit;
import de.ph87.electro.circuit.part.InnerConnection; import de.ph87.electro.circuit.part.InnerConnection;
import de.ph87.electro.circuit.part.Part; import de.ph87.electro.circuit.part.Part;
import de.ph87.electro.circuit.part.Position; import de.ph87.electro.circuit.part.Position;
import de.ph87.electro.circuit.part.junction.Junction; import de.ph87.electro.circuit.part.junction.Junction;
import lombok.Getter; import lombok.Getter;
import lombok.Setter;
import lombok.ToString; import lombok.ToString;
import java.awt.*; import java.awt.*;
@ -22,24 +22,28 @@ public class Switch1x1 extends Part {
private final Junction output; private final Junction output;
@Setter
private boolean state = false; private boolean state = false;
public Switch1x1(final Position position) { public Switch1x1(final Circuit circuit, final Position position) {
super("Ausschalter", position); super(circuit, "Ausschalter", position);
common = addJunction("C", P10, P50); common = addJunction("C", P10, P50);
output = addJunction("O", P90, P50); output = addJunction("O", P90, P50);
} }
public Switch1x1(final Switch1x1Dto dto) { public Switch1x1(final Circuit circuit, final Switch1x1Dto dto) {
super(dto); super(circuit, dto);
common = addJunction(dto.getCommon(), P10, P50); common = addJunction(dto.getCommon(), P10, P50);
output = addJunction(dto.getOutput(), P90, P50); output = addJunction(dto.getOutput(), P90, P50);
state = dto.isState(); state = dto.isState();
} }
public void setState(final boolean state) {
this.state = state;
evaluate();
}
@Override @Override
public void action() { public void _action() {
state = !state; state = !state;
} }

View File

@ -1,5 +1,6 @@
package de.ph87.electro.circuit.part.parts; package de.ph87.electro.circuit.part.parts;
import de.ph87.electro.circuit.Circuit;
import de.ph87.electro.circuit.part.InnerConnection; import de.ph87.electro.circuit.part.InnerConnection;
import de.ph87.electro.circuit.part.Part; import de.ph87.electro.circuit.part.Part;
import de.ph87.electro.circuit.part.Position; import de.ph87.electro.circuit.part.Position;
@ -23,26 +24,30 @@ public class Switch1x2 extends Part {
private final Junction output1; private final Junction output1;
@Setter
private boolean state = false; private boolean state = false;
public Switch1x2(final Position position) { public Switch1x2(final Circuit circuit, final Position position) {
super("Wechselschalter", position); super(circuit, "Wechselschalter", position);
common = addJunction("C", P10, P50); common = addJunction("C", P10, P50);
output0 = addJunction("O0", P90, P25); output0 = addJunction("O0", P90, P25);
output1 = addJunction("O1", P90, P75); output1 = addJunction("O1", P90, P75);
} }
public Switch1x2(final Switch1x2Dto dto) { public Switch1x2(final Circuit circuit, final Switch1x2Dto dto) {
super(dto); super(circuit, dto);
common = addJunction(dto.getCommon(), P10, P50); common = addJunction(dto.getCommon(), P10, P50);
output0 = addJunction(dto.getOutput0(), P90, P25); output0 = addJunction(dto.getOutput0(), P90, P25);
output1 = addJunction(dto.getOutput1(), P90, P75); output1 = addJunction(dto.getOutput1(), P90, P75);
state = dto.isState(); state = dto.isState();
} }
public void setState(final boolean state) {
this.state = state;
evaluate();
}
@Override @Override
public void action() { public void _action() {
state = !state; state = !state;
} }

View File

@ -1,5 +1,6 @@
package de.ph87.electro.circuit.part.parts; package de.ph87.electro.circuit.part.parts;
import de.ph87.electro.circuit.Circuit;
import de.ph87.electro.circuit.part.InnerConnection; import de.ph87.electro.circuit.part.InnerConnection;
import de.ph87.electro.circuit.part.Part; import de.ph87.electro.circuit.part.Part;
import de.ph87.electro.circuit.part.Position; import de.ph87.electro.circuit.part.Position;
@ -25,19 +26,18 @@ public class SwitchCross extends Part {
private final Junction output1; private final Junction output1;
@Setter
private boolean state = false; private boolean state = false;
public SwitchCross(final Position position) { public SwitchCross(final Circuit circuit, final Position position) {
super("Kreuzschalter", position); super(circuit, "Kreuzschalter", position);
common0 = addJunction("C0", P10, P25); common0 = addJunction("C0", P10, P25);
common1 = addJunction("C1", P10, P75); common1 = addJunction("C1", P10, P75);
output0 = addJunction("O0", P90, P25); output0 = addJunction("O0", P90, P25);
output1 = addJunction("O1", P90, P75); output1 = addJunction("O1", P90, P75);
} }
public SwitchCross(final SwitchCrossDto dto) { public SwitchCross(final Circuit circuit, final SwitchCrossDto dto) {
super(dto); super(circuit, dto);
common0 = addJunction(dto.getCommon0(), P10, P25); common0 = addJunction(dto.getCommon0(), P10, P25);
common1 = addJunction(dto.getCommon1(), P10, P75); common1 = addJunction(dto.getCommon1(), P10, P75);
output0 = addJunction(dto.getOutput0(), P90, P25); output0 = addJunction(dto.getOutput0(), P90, P25);
@ -45,8 +45,13 @@ public class SwitchCross extends Part {
state = dto.isState(); state = dto.isState();
} }
public void setState(final boolean state) {
this.state = state;
evaluate();
}
@Override @Override
public void action() { public void _action() {
state = !state; state = !state;
} }

View File

@ -28,15 +28,15 @@ public class Sidebar extends JPanel {
}); });
add(toggleDetails); add(toggleDetails);
add(new Battery(Position.ZERO)); add(new Battery(null, Position.ZERO));
add(new ConnectorCorner(Position.ZERO)); add(new ConnectorCorner(null, Position.ZERO));
add(new ConnectorEdge(Position.ZERO)); add(new ConnectorEdge(null, Position.ZERO));
add(new ConnectorMiddle(Position.ZERO)); add(new ConnectorMiddle(null, Position.ZERO));
add(new Light(Position.ZERO)); add(new Light(null, Position.ZERO));
add(new Switch1x1(Position.ZERO)); add(new Switch1x1(null, Position.ZERO));
add(new Switch1x2(Position.ZERO)); add(new Switch1x2(null, Position.ZERO));
add(new SwitchCross(Position.ZERO)); add(new SwitchCross(null, Position.ZERO));
add(new Poti(Position.ZERO)); add(new Poti(null, Position.ZERO));
setPreferredSize(new Dimension(0, 200)); setPreferredSize(new Dimension(0, 200));
} }

View File

@ -16,8 +16,8 @@ class CalculationServiceTest {
@Test @Test
void test() { void test() {
final Circuit circuit = new Circuit(); final Circuit circuit = new Circuit();
final Battery battery = circuit.addPart(new Battery(RST(0, 0))); final Battery battery = circuit.addPart(new Battery(circuit, RST(0, 0)));
final Light light = circuit.addPart(new Light(RST(0, 1))); final Light light = circuit.addPart(new Light(circuit, RST(0, 1)));
circuit.connect(battery.getMinus(), light.getA()); circuit.connect(battery.getMinus(), light.getA());
circuit.connect(battery.getPlus(), light.getB()); circuit.connect(battery.getPlus(), light.getB());

View File

@ -22,8 +22,8 @@ class CircuitIOServiceTest {
@Test @Test
void serialization() throws IOException { void serialization() throws IOException {
final Circuit circuit = new Circuit(); final Circuit circuit = new Circuit();
final Battery battery = circuit.addPart(new Battery(RST(0, 0))); final Battery battery = circuit.addPart(new Battery(circuit, RST(0, 0)));
final Light light = circuit.addPart(new Light(RST(0, 1))); final Light light = circuit.addPart(new Light(circuit, RST(0, 1)));
circuit.connect(battery.getPlus(), light.getB()); circuit.connect(battery.getPlus(), light.getB());
circuit.connect(light.getA(), battery.getMinus()); circuit.connect(light.getA(), battery.getMinus());
check(circuit); check(circuit);

View File

@ -14,9 +14,9 @@ public class BatteryLightTest {
private static final Circuit CIRCUIT = new Circuit(); private static final Circuit CIRCUIT = new Circuit();
private static final Battery battery = CIRCUIT.addPart(new Battery(RST(0, 0))); private static final Battery battery = CIRCUIT.addPart(new Battery(CIRCUIT, RST(0, 0)));
private static final Light light = CIRCUIT.addPart(new Light(RST(0, 1))); private static final Light light = CIRCUIT.addPart(new Light(CIRCUIT, RST(0, 1)));
@BeforeAll @BeforeAll
public static void setUp() { public static void setUp() {

View File

@ -15,11 +15,11 @@ public class BatterySwitcher1x1Test {
private static final Circuit CIRCUIT = new Circuit(); private static final Circuit CIRCUIT = new Circuit();
private static final Battery battery = CIRCUIT.addPart(new Battery(RST(0, 0))); private static final Battery battery = CIRCUIT.addPart(new Battery(CIRCUIT, RST(0, 0)));
private static final Switch1x1 switcher = CIRCUIT.addPart(new Switch1x1(RST(0, 1))); private static final Switch1x1 switcher = CIRCUIT.addPart(new Switch1x1(CIRCUIT, RST(0, 1)));
private static final Light light = CIRCUIT.addPart(new Light(RST(1, 0))); private static final Light light = CIRCUIT.addPart(new Light(CIRCUIT, RST(1, 0)));
@BeforeAll @BeforeAll
public static void setUp() { public static void setUp() {

View File

@ -15,13 +15,13 @@ public class BatterySwitcher1x2Test {
private static final Circuit CIRCUIT = new Circuit(); private static final Circuit CIRCUIT = new Circuit();
private static final Battery battery = CIRCUIT.addPart(new Battery(RST(0, 0))); private static final Battery battery = CIRCUIT.addPart(new Battery(CIRCUIT, RST(0, 0)));
private static final Switch1x2 switcher = CIRCUIT.addPart(new Switch1x2(RST(0, 2))); private static final Switch1x2 switcher = CIRCUIT.addPart(new Switch1x2(CIRCUIT, RST(0, 2)));
private static final Light light0 = CIRCUIT.addPart(new Light(RST(1, 1))); private static final Light light0 = CIRCUIT.addPart(new Light(CIRCUIT, RST(1, 1)));
private static final Light light1 = CIRCUIT.addPart(new Light(RST(1, 3))); private static final Light light1 = CIRCUIT.addPart(new Light(CIRCUIT, RST(1, 3)));
@BeforeAll @BeforeAll
public static void setUp() { public static void setUp() {

View File

@ -15,13 +15,13 @@ public class BatterySwitcher2x2Test {
private static final Circuit CIRCUIT = new Circuit(); private static final Circuit CIRCUIT = new Circuit();
private static final Battery battery = CIRCUIT.addPart(new Battery(RST(0, 0))); private static final Battery battery = CIRCUIT.addPart(new Battery(CIRCUIT, RST(0, 0)));
private static final Switch1x2 switcher0 = CIRCUIT.addPart(new Switch1x2(RST(0, 1))); private static final Switch1x2 switcher0 = CIRCUIT.addPart(new Switch1x2(CIRCUIT, RST(0, 1)));
private static final Switch1x2 switcher1 = CIRCUIT.addPart(new Switch1x2(RST(1, 1))); private static final Switch1x2 switcher1 = CIRCUIT.addPart(new Switch1x2(CIRCUIT, RST(1, 1)));
private static final Light light = CIRCUIT.addPart(new Light(RST(1, 0))); private static final Light light = CIRCUIT.addPart(new Light(CIRCUIT, RST(1, 0)));
@BeforeAll @BeforeAll
public static void setUp() { public static void setUp() {

View File

@ -15,15 +15,15 @@ public class BatterySwitcherCrossTest {
private static final Circuit CIRCUIT = new Circuit(); private static final Circuit CIRCUIT = new Circuit();
private static final Battery battery = CIRCUIT.addPart(new Battery(RST(0, 0))); private static final Battery battery = CIRCUIT.addPart(new Battery(CIRCUIT, RST(0, 0)));
private static final Switch1x2 switcher0 = CIRCUIT.addPart(new Switch1x2(RST(0, 1))); private static final Switch1x2 switcher0 = CIRCUIT.addPart(new Switch1x2(CIRCUIT, RST(0, 1)));
private static final SwitchCross switcherX = CIRCUIT.addPart(new SwitchCross(RST(1, 1))); private static final SwitchCross switcherX = CIRCUIT.addPart(new SwitchCross(CIRCUIT, RST(1, 1)));
private static final Switch1x2 switcher1 = CIRCUIT.addPart(new Switch1x2(RST(2, 1))); private static final Switch1x2 switcher1 = CIRCUIT.addPart(new Switch1x2(CIRCUIT, RST(2, 1)));
private static final Light light = CIRCUIT.addPart(new Light(RST(2, 0))); private static final Light light = CIRCUIT.addPart(new Light(CIRCUIT, RST(2, 0)));
@BeforeAll @BeforeAll
public static void setUp() { public static void setUp() {