mirror of
https://github.com/Anuken/Mindustry.git
synced 2025-02-25 22:17:59 +07:00
Triangle draw command
This commit is contained in:
parent
188171ec03
commit
25e04ca3e5
@ -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)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,3 @@
|
||||
org.gradle.daemon=true
|
||||
org.gradle.jvmargs=-Xms256m -Xmx1024m
|
||||
archash=618135d9b6f36fbe0838e0a5128ac1283457be82
|
||||
archash=f30313ec8a5abf51ff0314a65babf5d95047fda3
|
||||
|
Loading…
Reference in New Issue
Block a user