diff --git a/core/src/mindustry/world/blocks/distribution/MassDriver.java b/core/src/mindustry/world/blocks/distribution/MassDriver.java index f55c31fd28..eacef7d0eb 100644 --- a/core/src/mindustry/world/blocks/distribution/MassDriver.java +++ b/core/src/mindustry/world/blocks/distribution/MassDriver.java @@ -163,14 +163,22 @@ public class MassDriver extends Block{ public void drawPlace(int x, int y, int rotation, boolean valid){ Drawf.dashCircle(x * tilesize, y*tilesize, range, Pal.accent); - // check if a mass driver is selected while placing this driver + //check if a mass driver is selected while placing this driver if(!control.input.frag.config.isShown()) return; Tile selected = control.input.frag.config.getSelectedTile(); - if(!(selected.block() instanceof MassDriver) || !(selected.dst(x * tilesize, y * tilesize) <= range)) return; + if(selected == null || !(selected.block() instanceof MassDriver) || !(selected.dst(x * tilesize, y * tilesize) <= range)) return; - // if so, draw a dotted line towards it while it is in range + //if so, draw a dotted line towards it while it is in range + float sin = Mathf.absin(Time.time(), 6f, 1f); + Tmp.v1.set(x * tilesize + offset(), y * tilesize + offset()).sub(selected.drawx(), selected.drawy()).limit((size / 2f + 1) * tilesize + sin + 0.5f); + float x2 = x * tilesize - Tmp.v1.x, y2 = y * tilesize - Tmp.v1.y, + x1 = selected.drawx() + Tmp.v1.x, y1 = selected.drawy() + Tmp.v1.y; + int segs = (int)(selected.dst(x * tilesize, y * tilesize) / tilesize); + + Lines.stroke(4f, Pal.gray); + Lines.dashLine(x1, y1, x2, y2, segs); Lines.stroke(2f, Pal.placing); - Lines.dashLine(x * tilesize, y * tilesize, selected.drawx(), selected.drawy(), (int)range / tilesize / 4); + Lines.dashLine(x1, y1, x2, y2, segs); Draw.reset(); } diff --git a/core/src/mindustry/world/blocks/power/PowerDiode.java b/core/src/mindustry/world/blocks/power/PowerDiode.java index 282e716286..eea5b46d72 100644 --- a/core/src/mindustry/world/blocks/power/PowerDiode.java +++ b/core/src/mindustry/world/blocks/power/PowerDiode.java @@ -27,7 +27,7 @@ public class PowerDiode extends Block{ public void update(Tile tile){ super.update(tile); - if(tile.front() == null || tile.back() == null || !tile.back().block().hasPower || !tile.front().block().hasPower) return; + if(tile.front() == null || tile.back() == null || !tile.back().block().hasPower || !tile.front().block().hasPower || tile.back().getTeam() != tile.front().getTeam()) return; PowerGraph backGraph = tile.back().entity.power.graph; PowerGraph frontGraph = tile.front().entity.power.graph;