Better logic UI

This commit is contained in:
Anuken
2020-08-14 10:48:29 -04:00
parent 73dd7ba21a
commit ffb2d6eeaa
10 changed files with 125 additions and 74 deletions
+31 -6
View File
@@ -3,11 +3,12 @@ package mindustry.logic;
import arc.*;
import arc.func.*;
import arc.scene.ui.TextButton.*;
import arc.scene.ui.layout.*;
import arc.util.*;
import mindustry.gen.*;
import mindustry.logic.LStatements.*;
import mindustry.ui.*;
import mindustry.ui.dialogs.*;
import mindustry.world.blocks.logic.*;
import static mindustry.Vars.*;
@@ -23,6 +24,8 @@ public class LogicDialog extends BaseDialog{
canvas = new LCanvas();
addCloseButton();
buttons.getCells().first().width(170f);
buttons.button("@edit", Icon.edit, () -> {
BaseDialog dialog = new BaseDialog("@editor.export");
dialog.cont.pane(p -> {
@@ -49,14 +52,36 @@ public class LogicDialog extends BaseDialog{
dialog.addCloseButton();
dialog.show();
});
}).width(170f);
stack(canvas, new Table(t -> {
t.bottom();
t.add(buttons);
})).grow();
buttons.button("@add", Icon.add, () -> {
BaseDialog dialog = new BaseDialog("@add");
dialog.cont.pane(t -> {
t.background(Tex.button);
int i = 0;
for(Prov<LStatement> prov : LogicIO.allStatements){
LStatement example = prov.get();
if(example instanceof InvalidStatement) continue;
t.button(example.name(), Styles.cleart, () -> {
canvas.add(prov.get());
dialog.hide();
}).size(140f, 50f);
if(++i % 2 == 0) t.row();
}
});
dialog.addCloseButton();
dialog.show();
}).width(170f).disabled(t -> canvas.statements.getChildren().size >= LogicBlock.maxInstructions);
add(canvas).grow();
row();
add(buttons).growX();
hidden(() -> consumer.get(canvas.save()));
onResize(() -> canvas.rebuild());
}
public void show(String code, Cons<String> consumer){