Merge branch 'master' of https://github.com/Anuken/Mindustry into 7.0-features

 Conflicts:
	core/src/mindustry/ui/dialogs/JoinDialog.java
This commit is contained in:
Anuken
2022-04-20 14:16:20 -04:00
18 changed files with 487 additions and 429 deletions

View File

@@ -20,7 +20,7 @@ import mindustry.logic.LStatements.*;
import mindustry.ui.*;
public class LCanvas extends Table{
public static final int maxJumpsDrawn = 100;
public static final int maxJumpsDrawn = 1000; // TODO Does nothing
//ew static variables
static LCanvas canvas;
@@ -106,14 +106,23 @@ public class LCanvas extends Table{
clear();
statements = new DragLayout();
jumps = new WidgetGroup();
jumps = new WidgetGroup(){
@Override
public void layout(){
cullable = false; //culling while scrolling results in weirdness
getChildren().each(h -> {
if(!(h instanceof JumpCurve c)) return;
c.setSize(width, c.getPrefHeight());
c.setPosition(c.button.x + c.button.getWidth()/2f, c.py);
});
cullable = true;
}
};
pane = pane(t -> {
t.center();
t.add(statements).pad(2f).center().width(targetWidth);
t.addChild(jumps);
jumps.cullable = false;
t.add(jumps).growY().width(100f).growY();
}).grow().get();
pane.setFlickScroll(false);
@@ -160,6 +169,7 @@ public class LCanvas extends Table{
}
this.statements.layout();
jumps.layout();
}
StatementElem checkHovered(){
@@ -187,21 +197,17 @@ public class LCanvas extends Table{
pane.setScrollY(pane.getScrollY() + sign * Scl.scl(15f) * Time.delta);
}
}
pane.scrolled(f -> jumps.layout()); //don't ask why this is needed, it just is
}
public class DragLayout extends WidgetGroup{
float space = Scl.scl(10f), prefWidth, prefHeight;
Seq<Element> seq = new Seq<>();
int insertPosition = 0;
boolean invalidated;
{
setTransform(true);
}
@Override
public void layout(){
invalidated = true;
float cy = 0;
seq.clear();
@@ -249,10 +255,9 @@ public class LCanvas extends Table{
}
}
invalidateHierarchy();
if(parent != null && parent instanceof Table){
if(parent instanceof Table){
setCullingArea(parent.getCullingArea());
jumps.setCullingArea(parent.getCullingArea());
}
}
@@ -279,16 +284,7 @@ public class LCanvas extends Table{
Tex.pane.draw(lastX, lastY - shiftAmount, width, dragging.getHeight());
}
if(invalidated){
children.each(c -> c.cullable = false);
}
super.draw();
if(invalidated){
children.each(c -> c.cullable = true);
invalidated = false;
}
}
void finishLayout(){
@@ -513,11 +509,17 @@ public class LCanvas extends Table{
public static class JumpCurve extends Element{
public JumpButton button;
float ph, py;
public JumpCurve(JumpButton button){
this.button = button;
}
@Override
public float getPrefHeight(){
return ph;
}
@Override
public void act(float delta){
super.act(delta);
@@ -536,7 +538,6 @@ public class LCanvas extends Table{
}
Element hover = button.to.get() == null && button.selecting ? canvas.hovered : button.to.get();
boolean draw = false;
Vec2 t = Tmp.v1, r = Tmp.v2;
Group desc = canvas.pane;
@@ -545,26 +546,25 @@ public class LCanvas extends Table{
if(hover != null){
hover.localToAscendantCoordinates(desc, t.set(hover.getWidth(), hover.getHeight()/2f));
draw = true;
}else if(button.selecting){
t.set(r).add(button.mx, button.my);
draw = true;
}else{
return;
}
float offset = canvas.pane.getVisualScrollY() - canvas.pane.getMaxY();
ph = Math.abs(t.y - r.y);
py = Math.min(t.y, r.y);
float offset = canvas.pane.getVisualScrollY() - canvas.pane.getMaxY();
t.y += offset;
r.y += offset;
if(draw){
drawCurve(r.x + button.getWidth()/2f, r.y + button.getHeight()/2f, t.x, t.y);
drawCurve(r.x + button.getWidth()/2f, r.y + button.getHeight()/2f, t.x, t.y);
float s = button.getWidth();
Draw.color(button.color);
Tex.logicNode.draw(t.x + s*0.75f, t.y - s/2f, -s, s);
Draw.reset();
}
float s = button.getWidth();
Draw.color(button.color);
Tex.logicNode.draw(t.x + s*0.75f, t.y - s/2f, -s, s);
Draw.reset();
}
public void drawCurve(float x, float y, float x2, float y2){