From 76e83c151690961109d36e401d813a635d505886 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 22 Jan 2024 22:12:24 -0500 Subject: [PATCH] Better allowRectanglePlacement --- core/src/mindustry/input/InputHandler.java | 2 +- core/src/mindustry/input/Placement.java | 6 +++--- core/src/mindustry/world/Block.java | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index 3e17870597..c43c8e8fed 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -1978,7 +1978,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ }else{ points = Placement.pathfindLine(block != null && block.conveyorPlacement, startX, startY, endX, endY); } - }else if(block != null && block.size == 1 && block.allowRectanglePlacement){ + }else if(block != null && block.allowRectanglePlacement){ points = Placement.normalizeRectangle(startX, startY, endX, endY, block.size); }else{ points = Placement.normalizeLine(startX, startY, endX, endY); diff --git a/core/src/mindustry/input/Placement.java b/core/src/mindustry/input/Placement.java index d6c8b4a7c4..abec7d9f65 100644 --- a/core/src/mindustry/input/Placement.java +++ b/core/src/mindustry/input/Placement.java @@ -65,9 +65,9 @@ public class Placement{ int minX = Math.min(startX, endX), minY = Math.min(startY, endY), maxX = Math.max(startX, endX), maxY = Math.max(startY, endY); - for(int y = minY; y <= maxY; y += blockSize){ - for(int x = minX; x <= maxX; x += blockSize){ - points.add(Pools.obtain(Point2.class, Point2::new).set(x, y)); + for(int y = 0; y <= maxY - minY; y += blockSize){ + for(int x = 0; x <= maxX - minX; x += blockSize){ + points.add(Pools.obtain(Point2.class, Point2::new).set(startX + x * Mathf.sign(endX - startX), startY + y * Mathf.sign(endY - startY))); } } diff --git a/core/src/mindustry/world/Block.java b/core/src/mindustry/world/Block.java index cbbf969d1c..31d98e1efc 100644 --- a/core/src/mindustry/world/Block.java +++ b/core/src/mindustry/world/Block.java @@ -245,7 +245,7 @@ public class Block extends UnlockableContent implements Senseable{ public boolean allowDiagonal = true; /** Whether to swap the diagonal placement modes. */ public boolean swapDiagonalPlacement; - /** Whether to allow rectangular placement, as opposed to a line. Only supported for 1x1 blocks currently! */ + /** Whether to allow rectangular placement, as opposed to a line. */ public boolean allowRectanglePlacement = false; /** Build queue priority in schematics. */ public int schematicPriority = 0;