FIX: auto-evaluation from Part-change -> Circuit
This commit is contained in:
parent
8da0cf8071
commit
de5d1bfc2c
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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));
|
||||||
|
|||||||
@ -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();
|
||||||
|
|||||||
@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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:
|
||||||
|
|||||||
@ -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();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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();
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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());
|
||||||
|
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -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() {
|
||||||
|
|||||||
@ -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() {
|
||||||
|
|||||||
@ -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() {
|
||||||
|
|||||||
@ -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() {
|
||||||
|
|||||||
@ -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() {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user