Skip to content

Commit 02b85b3

Browse files
committed
Copy variables/printbuffer to clipboard
1 parent cca6857 commit 02b85b3

File tree

3 files changed

+50
-1
lines changed

3 files changed

+50
-1
lines changed

assets/bundles/bundle.properties

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
lcategory.asserts = Runtime checks
22
lcategory.asserts.description = Instructions for verifying invariants using assertions
33

4-
lst.assert = Halt execution of this processor if the assertion is not met.
4+
lst.assert = Halt execution of this processor if the assertion is not met.
5+
6+
asserts.copyvariables = Copy Variables
7+
asserts.copyprintbuffer = Copy Buffer
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package cardillan.mlogassertions;
2+
3+
import arc.Core;
4+
import arc.util.Log;
5+
import mindustry.Vars;
6+
import mindustry.gen.Icon;
7+
import mindustry.logic.LExecutor;
8+
import mindustry.logic.LogicDialog;
9+
10+
import java.lang.reflect.Field;
11+
12+
public class LogicDialogAddon {
13+
14+
public static void init() {
15+
Vars.ui.logic.shown(LogicDialogAddon::setupLogicDialog);
16+
}
17+
18+
private static void setupLogicDialog() {
19+
LExecutor executor;
20+
try {
21+
Field executorField = LogicDialog.class.getDeclaredField("executor");
22+
executorField.setAccessible(true);
23+
executor = (LExecutor)executorField.get(Vars.ui.logic);
24+
} catch (NoSuchFieldException | IllegalAccessException e) {
25+
Log.err("Cannot access LogicDialog.executor", e);
26+
return;
27+
}
28+
29+
LogicDialog logicDialog = Vars.ui.logic;
30+
logicDialog.buttons.button("@asserts.copyvariables", Icon.copy, () -> {
31+
StringBuilder sbr = new StringBuilder(500);
32+
sbr.append("Variable\tValue\n");
33+
for (var v : executor.vars) {
34+
sbr.append(v.name).append("\t").append(v.isobj ? LExecutor.PrintI.toString(v.objval) : v.numval + "").append("\n");
35+
}
36+
Core.app.setClipboardText(sbr.toString());
37+
});
38+
39+
logicDialog.buttons.button("@asserts.copyprintbuffer", Icon.copy, () -> {
40+
String text = "Printbuffer contents:\n" + executor.textBuffer.toString();
41+
Core.app.setClipboardText(text);
42+
});
43+
}
44+
}

src/cardillan/mlogassertions/Main.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ public class Main extends Mod {
99
public void init(){
1010
super.init();
1111

12+
LogicDialogAddon.init();
13+
1214
AssertLogic.init();
1315
Assertions.init();
1416
}

0 commit comments

Comments
 (0)