diff --git a/src/main/java/de/ph87/electro/circuit/CircuitPanelDropTarget.java b/src/main/java/de/ph87/electro/circuit/CircuitPanelDropTarget.java index 61cd52b..a8dc8a7 100644 --- a/src/main/java/de/ph87/electro/circuit/CircuitPanelDropTarget.java +++ b/src/main/java/de/ph87/electro/circuit/CircuitPanelDropTarget.java @@ -22,6 +22,12 @@ public class CircuitPanelDropTarget extends AbstractDropTarget { final Point raster = div(point, RASTER); if (data.equals(PartBattery.class.getSimpleName())) { circuitPanel.getCircuit().partAdd(new PartBattery(raster)); + } else if (data.equals(PartJunctionCorner.class.getSimpleName())) { + circuitPanel.getCircuit().partAdd(new PartJunctionCorner(raster)); + } else if (data.equals(PartJunctionEdge.class.getSimpleName())) { + circuitPanel.getCircuit().partAdd(new PartJunctionEdge(raster)); + } else if (data.equals(PartJunctionMiddle.class.getSimpleName())) { + circuitPanel.getCircuit().partAdd(new PartJunctionMiddle(raster)); } else if (data.equals(PartLight.class.getSimpleName())) { circuitPanel.getCircuit().partAdd(new PartLight(raster)); } else if (data.equals(PartSwitch1x1.class.getSimpleName())) { @@ -31,7 +37,7 @@ public class CircuitPanelDropTarget extends AbstractDropTarget { } else if (data.equals(PartSwitchCross.class.getSimpleName())) { circuitPanel.getCircuit().partAdd(new PartSwitchCross(raster)); } else { - return false; + throw new RuntimeException(); } circuitPanel.repaint(); return true; diff --git a/src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionCorner.java b/src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionCorner.java new file mode 100644 index 0000000..2f4b25b --- /dev/null +++ b/src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionCorner.java @@ -0,0 +1,53 @@ +package de.ph87.electro.circuit.part.impl; + +import de.ph87.electro.circuit.dto.PartSwitchCrossDto; +import de.ph87.electro.circuit.part.Junction; +import de.ph87.electro.circuit.part.Orientation; +import de.ph87.electro.circuit.part.PartOther; +import lombok.Getter; +import lombok.ToString; + +import java.awt.*; + +import static de.ph87.electro.CONFIG.*; + +@Getter +@ToString(callSuper = true) +public class PartJunctionCorner extends PartOther { + + private final Junction j0; + + private final Junction j1; + + public PartJunctionCorner(final Point position) { + this("", position, Orientation.R0); + } + + public PartJunctionCorner(final String name, final Point position, final Orientation orientation) { + super(name, position, orientation); + j0 = newJunction(this, "", JUNCTION_LEFT, JUNCTION_LEFT); + j1 = newJunction(this, "", JUNCTION_RIGHT, JUNCTION_RIGHT); + } + + public PartJunctionCorner(final PartSwitchCrossDto dto) { + super(dto); + j0 = newJunction(this, dto.getCommon0(), JUNCTION_LEFT, FOURTH1); + j1 = newJunction(this, dto.getOutput1(), JUNCTION_RIGHT, FOURTH3); + } + + @Override + public void propagate(final Junction source) { + // nothing + } + + @Override + protected void _render(final Graphics2D g) { + // nothing + } + + @Override + public void action() { + // nothing + } + +} diff --git a/src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionEdge.java b/src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionEdge.java new file mode 100644 index 0000000..5d16bec --- /dev/null +++ b/src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionEdge.java @@ -0,0 +1,54 @@ +package de.ph87.electro.circuit.part.impl; + +import de.ph87.electro.circuit.dto.PartSwitchCrossDto; +import de.ph87.electro.circuit.part.Junction; +import de.ph87.electro.circuit.part.Orientation; +import de.ph87.electro.circuit.part.PartOther; +import lombok.Getter; +import lombok.ToString; + +import java.awt.*; + +import static de.ph87.electro.CONFIG.HALF; +import static de.ph87.electro.CONFIG.JUNCTION_LEFT; + +@Getter +@ToString(callSuper = true) +public class PartJunctionEdge extends PartOther { + + private final Junction j0; + + private final Junction j1; + + public PartJunctionEdge(final Point position) { + this("", position, Orientation.R0); + } + + public PartJunctionEdge(final String name, final Point position, final Orientation orientation) { + super(name, position, orientation); + j0 = newJunction(this, "", JUNCTION_LEFT, HALF); + j1 = newJunction(this, "", HALF, JUNCTION_LEFT); + } + + public PartJunctionEdge(final PartSwitchCrossDto dto) { + super(dto); + j0 = newJunction(this, dto.getCommon0(), 0, HALF); + j1 = newJunction(this, dto.getOutput1(), HALF, 0); + } + + @Override + public void propagate(final Junction source) { + // nothing + } + + @Override + protected void _render(final Graphics2D g) { + // nothing + } + + @Override + public void action() { + // nothing + } + +} diff --git a/src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionMiddle.java b/src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionMiddle.java new file mode 100644 index 0000000..2922ad7 --- /dev/null +++ b/src/main/java/de/ph87/electro/circuit/part/impl/PartJunctionMiddle.java @@ -0,0 +1,49 @@ +package de.ph87.electro.circuit.part.impl; + +import de.ph87.electro.circuit.dto.PartSwitchCrossDto; +import de.ph87.electro.circuit.part.Junction; +import de.ph87.electro.circuit.part.Orientation; +import de.ph87.electro.circuit.part.PartOther; +import lombok.Getter; +import lombok.ToString; + +import java.awt.*; + +import static de.ph87.electro.CONFIG.HALF; + +@Getter +@ToString(callSuper = true) +public class PartJunctionMiddle extends PartOther { + + private final Junction junction; + + public PartJunctionMiddle(final Point position) { + this("", position, Orientation.R0); + } + + public PartJunctionMiddle(final String name, final Point position, final Orientation orientation) { + super(name, position, orientation); + junction = newJunction(this, "", HALF, HALF); + } + + public PartJunctionMiddle(final PartSwitchCrossDto dto) { + super(dto); + junction = newJunction(this, dto.getCommon0(), HALF, HALF); + } + + @Override + public void propagate(final Junction source) { + // nothing + } + + @Override + protected void _render(final Graphics2D g) { + // nothing + } + + @Override + public void action() { + // nothing + } + +} diff --git a/src/main/java/de/ph87/electro/sidebar/Sidebar.java b/src/main/java/de/ph87/electro/sidebar/Sidebar.java index d12ba7d..9fea635 100644 --- a/src/main/java/de/ph87/electro/sidebar/Sidebar.java +++ b/src/main/java/de/ph87/electro/sidebar/Sidebar.java @@ -10,6 +10,9 @@ public class Sidebar extends JPanel { public Sidebar() { add(new PartBattery(new Point(0, 0))); + add(new PartJunctionCorner(new Point(0, 0))); + add(new PartJunctionEdge(new Point(0, 0))); + add(new PartJunctionMiddle(new Point(0, 0))); add(new PartLight(new Point(0, 0))); add(new PartSwitch1x1(new Point(0, 0))); add(new PartSwitch1x2(new Point(0, 0)));