diff --git a/core/src/mindustry/logic/LExecutor.java b/core/src/mindustry/logic/LExecutor.java index 6482fc24e1..ef8532ae1b 100644 --- a/core/src/mindustry/logic/LExecutor.java +++ b/core/src/mindustry/logic/LExecutor.java @@ -406,9 +406,9 @@ public class LExecutor{ public static class DrawI implements LInstruction{ public byte type; public int target; - public int x, y, p1, p2, p3; + public int x, y, p1, p2, p3, p4; - public DrawI(byte type, int target, int x, int y, int p1, int p2, int p3){ + public DrawI(byte type, int target, int x, int y, int p1, int p2, int p3, int p4){ this.type = type; this.target = target; this.x = x; @@ -416,6 +416,7 @@ public class LExecutor{ this.p1 = p1; this.p2 = p2; this.p3 = p3; + this.p4 = p4; } public DrawI(){ @@ -428,7 +429,7 @@ public class LExecutor{ //add graphics calls, cap graphics buffer size if(exec.graphicsBuffer.size < maxGraphicsBuffer){ - exec.graphicsBuffer.add(DisplayCmd.get(type, exec.numi(x), exec.numi(y), exec.numi(p1), exec.numi(p2), exec.numi(p3))); + exec.graphicsBuffer.add(DisplayCmd.get(type, exec.numi(x), exec.numi(y), exec.numi(p1), exec.numi(p2), exec.numi(p3), exec.numi(p4))); } } } diff --git a/core/src/mindustry/logic/LStatements.java b/core/src/mindustry/logic/LStatements.java index 79615e2b96..1947ef28d9 100644 --- a/core/src/mindustry/logic/LStatements.java +++ b/core/src/mindustry/logic/LStatements.java @@ -123,8 +123,8 @@ public class LStatements{ @RegisterStatement("draw") public static class DrawStatement extends LStatement{ - public GraphicsType type = GraphicsType.line; - public String x = "0", y = "0", p1 = "0", p2 = "0", p3 = "0"; + public GraphicsType type = GraphicsType.clear; + public String x = "0", y = "0", p1 = "0", p2 = "0", p3 = "0", p4 = "0"; @Override public void build(Table table){ @@ -188,6 +188,16 @@ public class LStatements{ s.row(); fields(s, "rotation", p3, v -> p3 = v); break; + case triangle: + fields(s, "x", x, v -> x = v); + fields(s, "y", y, v -> y = v); + s.row(); + fields(s, "x2", p1, v -> p1 = v); + fields(s, "y2", p2, v -> p2 = v); + s.row(); + fields(s, "x3", p3, v -> p3 = v); + fields(s, "y3", p4, v -> p4 = v); + break; } }).expand().left(); @@ -200,7 +210,7 @@ public class LStatements{ @Override public LInstruction build(LAssembler builder){ - return new DrawI((byte)type.ordinal(), 0, builder.var(x), builder.var(y), builder.var(p1), builder.var(p2), builder.var(p3)); + return new DrawI((byte)type.ordinal(), 0, builder.var(x), builder.var(y), builder.var(p1), builder.var(p2), builder.var(p3), builder.var(p4)); } } diff --git a/core/src/mindustry/world/blocks/logic/LogicDisplay.java b/core/src/mindustry/world/blocks/logic/LogicDisplay.java index 715801b172..513bbd70c7 100644 --- a/core/src/mindustry/world/blocks/logic/LogicDisplay.java +++ b/core/src/mindustry/world/blocks/logic/LogicDisplay.java @@ -19,7 +19,8 @@ public class LogicDisplay extends Block{ commandRect = 4, commandLineRect = 5, commandPoly = 6, - commandLinePoly = 7; + commandLinePoly = 7, + commandTriangle = 8; public int maxSides = 25; @@ -60,7 +61,7 @@ public class LogicDisplay extends Block{ long c = commands.removeFirst(); byte type = DisplayCmd.type(c); int x = DisplayCmd.x(c), y = DisplayCmd.y(c), - p1 = DisplayCmd.p1(c), p2 = DisplayCmd.p2(c), p3 = DisplayCmd.p3(c); + p1 = DisplayCmd.p1(c), p2 = DisplayCmd.p2(c), p3 = DisplayCmd.p3(c), p4 = DisplayCmd.p4(c); switch(type){ case commandClear: Core.graphics.clear(x/255f, y/255f, p1/255f, 1f); break; @@ -69,6 +70,7 @@ public class LogicDisplay extends Block{ case commandLineRect: Lines.rect(x, y, p1, p2); break; case commandPoly: Fill.poly(x, y, Math.min(p1, maxSides), p2, p3); break; case commandLinePoly: Lines.poly(x, y, Math.min(p1, maxSides), p2, p3); break; + case commandTriangle: Fill.tri(x, y, p1, p2, p3, p4); break; case commandColor: this.color = Color.toFloatBits(x, y, p1, 255); Draw.color(this.color); break; case commandStroke: this.stroke = x; Lines.stroke(x); break; } @@ -94,7 +96,8 @@ public class LogicDisplay extends Block{ rect, lineRect, poly, - linePoly; + linePoly, + triangle; public static final GraphicsType[] all = values(); } @@ -105,7 +108,7 @@ public class LogicDisplay extends Block{ //each coordinate is only 8 bits, limiting size to 256x256 //anything larger than that would be excessive anyway - @StructField(9) - public int x, y, p1, p2, p3; + @StructField(8) + public int x, y, p1, p2, p3, p4; } } diff --git a/gradle.properties b/gradle.properties index b240e6834d..c017681d67 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=618135d9b6f36fbe0838e0a5128ac1283457be82 +archash=f30313ec8a5abf51ff0314a65babf5d95047fda3