From c3309bf3a907e22aaab7f1e897f24c686dadcf42 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 26 Oct 2025 14:04:49 -0400 Subject: [PATCH] Logic insert line button (from foo's client) --- core/src/mindustry/logic/LCanvas.java | 10 ++++++++++ core/src/mindustry/logic/LogicDialog.java | 6 +++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/logic/LCanvas.java b/core/src/mindustry/logic/LCanvas.java index 2bfd96ac4b..8d5edd0bcc 100644 --- a/core/src/mindustry/logic/LCanvas.java +++ b/core/src/mindustry/logic/LCanvas.java @@ -131,6 +131,10 @@ public class LCanvas extends Table{ statements.addChild(new StatementElem(statement)); } + public void addAt(int at, LStatement statement){ + statements.addChildAt(at, new StatementElem(statement)); + } + public String save(){ Seq st = statements.getChildren().as().map(s -> s.st); st.each(LStatement::saveUI); @@ -433,6 +437,10 @@ public class LCanvas extends Table{ addressLabel = t.add(index + "").style(Styles.outlineLabel).color(color).padRight(8).get(); + //taken from foo's client + t.button(Icon.add, Styles.logici, () -> Vars.ui.logic.showAddDialog(statements.insertPosition + 1)) + .disabled(b -> canvas.statements.getChildren().size >= LExecutor.maxInstructions).size(24f).padRight(6); + t.button(Icon.copy, Styles.logici, () -> { }).size(24f).padRight(6).get().tapped(this::copy); @@ -447,6 +455,8 @@ public class LCanvas extends Table{ @Override public boolean touchDown(InputEvent event, float x, float y, int pointer, KeyCode button){ + //don't start dragging when pressing the menu buttons + if(event.targetActor instanceof Image) return false; if(button == KeyCode.mouseMiddle){ copy(); diff --git a/core/src/mindustry/logic/LogicDialog.java b/core/src/mindustry/logic/LogicDialog.java index 350f1f3694..38211fd1ab 100644 --- a/core/src/mindustry/logic/LogicDialog.java +++ b/core/src/mindustry/logic/LogicDialog.java @@ -254,6 +254,10 @@ public class LogicDialog extends BaseDialog{ } public void showAddDialog(){ + showAddDialog(-1); + } + + public void showAddDialog(int position){ BaseDialog dialog = new BaseDialog("@add"); dialog.cont.table(table -> { String[] searchText = {""}; @@ -326,7 +330,7 @@ public class LogicDialog extends BaseDialog{ style.font = Fonts.outline; cat.button(example.name(), style, () -> { - canvas.add(prov.get()); + canvas.addAt(position == -1 ? canvas.statements.getChildren().size : position, prov.get()); dialog.hide(); }).size(130f, 50f).self(c -> tooltip(c, "lst." + example.name())).top().left();