diff --git a/annotations/src/main/java/mindustry/annotations/misc/LogicStatementProcessor.java b/annotations/src/main/java/mindustry/annotations/misc/LogicStatementProcessor.java index 8fb1bc6122..2a7f7034e1 100644 --- a/annotations/src/main/java/mindustry/annotations/misc/LogicStatementProcessor.java +++ b/annotations/src/main/java/mindustry/annotations/misc/LogicStatementProcessor.java @@ -92,6 +92,7 @@ public class LogicStatementProcessor extends BaseProcessor{ index ++; } + reader.addStatement("result.afterRead()"); reader.addStatement("return result"); } diff --git a/core/src/mindustry/logic/LCanvas.java b/core/src/mindustry/logic/LCanvas.java index dab1f46a6d..54b88b98d7 100644 --- a/core/src/mindustry/logic/LCanvas.java +++ b/core/src/mindustry/logic/LCanvas.java @@ -59,6 +59,7 @@ public class LCanvas extends Table{ pane.setScrollPercentY(s); pane.updateVisualScroll(); pane.requestScroll(); + Core.app.post(() -> pane.requestScroll()); }); if(toLoad != null){ diff --git a/core/src/mindustry/logic/LStatement.java b/core/src/mindustry/logic/LStatement.java index 8b0d8422b1..f7e39c6088 100644 --- a/core/src/mindustry/logic/LStatement.java +++ b/core/src/mindustry/logic/LStatement.java @@ -109,6 +109,8 @@ public abstract class LStatement{ t.pack(); } + public void afterRead(){} + public void write(StringBuilder builder){ LogicIO.write(this,builder); } diff --git a/core/src/mindustry/logic/LStatements.java b/core/src/mindustry/logic/LStatements.java index b6b2e463b3..379127e568 100644 --- a/core/src/mindustry/logic/LStatements.java +++ b/core/src/mindustry/logic/LStatements.java @@ -163,6 +163,9 @@ public class LStatements{ b.label(() -> type.name()); b.clicked(() -> showSelect(b, GraphicsType.all, type, t -> { type = t; + if(type == GraphicsType.color){ + p2 = "255"; + } rebuild(table); }, 2, cell -> cell.size(100, 50))); }, Styles.logict, () -> {}).size(90, 40).color(table.color).left().padLeft(2); @@ -177,10 +180,16 @@ public class LStatements{ switch(type){ case clear: + fields(s, "r", x, v -> x = v); + fields(s, "g", y, v -> y = v); + fields(s, "b", p1, v -> p1 = v); + break; case color: fields(s, "r", x, v -> x = v); fields(s, "g", y, v -> y = v); fields(s, "b", p1, v -> p1 = v); + row(s); + fields(s, "a", p2, v -> p2 = v); break; case stroke: s.add().width(4); @@ -223,7 +232,14 @@ public class LStatements{ break; } }).expand().left(); + } + @Override + public void afterRead(){ + //0 constant alpha for colors is not allowed + if(type == GraphicsType.color && p2.equals("0")){ + p2 = "255"; + } } @Override diff --git a/core/src/mindustry/world/blocks/logic/LogicDisplay.java b/core/src/mindustry/world/blocks/logic/LogicDisplay.java index b240271aba..4ad633cad6 100644 --- a/core/src/mindustry/world/blocks/logic/LogicDisplay.java +++ b/core/src/mindustry/world/blocks/logic/LogicDisplay.java @@ -73,7 +73,7 @@ public class LogicDisplay extends Block{ 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 commandColor: this.color = Color.toFloatBits(x, y, p1, p2); Draw.color(this.color); break; case commandStroke: this.stroke = x; Lines.stroke(x); break; } } diff --git a/gradle.properties b/gradle.properties index 228564698d..ec99c0dc37 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=ffe8dc8a19bfea1ac934b601be452c272b850945 +archash=5cb55f4ea472e4859b3b1528e09a93b4662628e7