Skip to content

Commit 554a8a7

Browse files
committed
fixed some minor issues
also you can now show the part that you are editing at the top of the screen in ScriptEditPartScreen also made that screen scrollable
1 parent 80ee54f commit 554a8a7

File tree

11 files changed

+98
-25
lines changed

11 files changed

+98
-25
lines changed

src/main/java/io/github/techstreet/dfscript/screen/script/ScriptAddPartScreen.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public ScriptAddPartScreen(Script script, ScriptSnippet snippet, int insertIndex
8989
if (type.getCategory() != category) continue;
9090
if (type.isDeprecated()) continue;
9191

92-
CItem item = new CItem(x, y, type.getIcon());
92+
CItem item = new CItem(x, y, type.getIcon("If"));
9393
item.setClickListener((btn) -> {
9494
ScriptBranch action = new ScriptBranch(new ArrayList<>(), new ScriptBuiltinCondition(type));
9595
snippet.add(insertIndex, action);

src/main/java/io/github/techstreet/dfscript/screen/script/ScriptEditPartScreen.java

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@
22

33
import io.github.techstreet.dfscript.DFScript;
44
import io.github.techstreet.dfscript.screen.CScreen;
5-
import io.github.techstreet.dfscript.screen.widget.CButton;
6-
import io.github.techstreet.dfscript.screen.widget.CItem;
7-
import io.github.techstreet.dfscript.screen.widget.CText;
8-
import io.github.techstreet.dfscript.screen.widget.CWidget;
5+
import io.github.techstreet.dfscript.screen.widget.*;
96
import io.github.techstreet.dfscript.script.Script;
107
import io.github.techstreet.dfscript.script.ScriptParametrizedPart;
118
import io.github.techstreet.dfscript.script.ScriptPart;
@@ -27,13 +24,21 @@
2724
public class ScriptEditPartScreen extends CScreen {
2825

2926
private final Script script;
27+
private final CScrollPanel panel;
3028
private final List<CWidget> contextMenu = new ArrayList<>();
3129

3230
public ScriptEditPartScreen(ScriptParametrizedPart action, Script script) {
3331
super(90, 100);
32+
panel = new CScrollPanel(0, 0, 90, 100);
33+
34+
widgets.add(panel);
35+
3436
this.script = script;
3537

36-
int y = 5;
38+
panel.add(new CItem(5, 3, action.getIcon()));
39+
panel.add(new CText(15, 5, Text.of(action.getName())));
40+
41+
int y = 15;
3742
int index = 0;
3843
for (ScriptArgument arg : action.getArguments()) {
3944
ItemStack icon;
@@ -63,13 +68,13 @@ public ScriptEditPartScreen(ScriptParametrizedPart action, Script script) {
6368
throw new IllegalArgumentException("Invalid argument type");
6469
}
6570

66-
widgets.add(new CItem(5, y, icon));
67-
widgets.add(new CText(15, y + 2, Text.literal(text)));
71+
panel.add(new CItem(5, y, icon));
72+
panel.add(new CText(15, y + 2, Text.literal(text)));
6873

6974
int currentIndex = index;
7075

7176

72-
widgets.add(new CButton(5, y-1, 85, 10, "",() -> {}) {
77+
panel.add(new CButton(5, y-1, 85, 10, "",() -> {}) {
7378
@Override
7479
public void render(MatrixStack stack, int mouseX, int mouseY, float tickDelta) {
7580
Rectangle b = getBounds();
@@ -106,9 +111,9 @@ public boolean mouseClicked(double x, double y, int button) {
106111
DFScript.MC.setScreen(new ScriptEditPartScreen(action, script));
107112
});
108113
DFScript.MC.send(() -> {
109-
widgets.add(insertBefore);
110-
widgets.add(insertAfter);
111-
widgets.add(delete);
114+
panel.add(insertBefore);
115+
panel.add(insertAfter);
116+
panel.add(delete);
112117
contextMenu.add(insertBefore);
113118
contextMenu.add(insertAfter);
114119
contextMenu.add(delete);
@@ -128,7 +133,7 @@ public boolean mouseClicked(double x, double y, int button) {
128133
CButton add = new CButton(25, y, 40, 8, "Add", () -> {
129134
DFScript.MC.setScreen(new ScriptAddArgumentScreen(script, action, action.getArguments().size()));
130135
});
131-
widgets.add(add);
136+
panel.add(add);
132137
}
133138

134139
@Override
@@ -145,7 +150,7 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) {
145150

146151
private void clearContextMenu() {
147152
for (CWidget w : contextMenu) {
148-
widgets.remove(w);
153+
panel.remove(w);
149154
}
150155
contextMenu.clear();
151156
}

src/main/java/io/github/techstreet/dfscript/script/ScriptComment.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,16 @@ public void create(ScriptPartRender render, Script script) {
6060
}));
6161
}
6262

63+
@Override
64+
public ItemStack getIcon() {
65+
return new ItemStack(Items.MAP).setCustomName(Text.literal("Comment").setStyle(Style.EMPTY.withItalic(false)));
66+
}
67+
68+
@Override
69+
public String getName() {
70+
return comment;
71+
}
72+
6373
public static class Serializer implements JsonSerializer<ScriptComment> {
6474

6575
@Override

src/main/java/io/github/techstreet/dfscript/script/ScriptPart.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
import io.github.techstreet.dfscript.script.render.ScriptPartRender;
1515
import io.github.techstreet.dfscript.script.repetitions.ScriptBuiltinRepetition;
1616
import io.github.techstreet.dfscript.script.repetitions.ScriptRepetitionType;
17+
import net.minecraft.item.ItemStack;
18+
import net.minecraft.text.Text;
1719

1820
import java.lang.reflect.Type;
1921
import java.util.ArrayList;
@@ -31,6 +33,10 @@ public List<ContextMenuButton> getContextMenu() {
3133
return new ArrayList<>();
3234
}
3335

36+
public abstract ItemStack getIcon();
37+
38+
public abstract String getName();
39+
3440
public static class Serializer implements JsonDeserializer<ScriptPart> {
3541

3642
@Override

src/main/java/io/github/techstreet/dfscript/script/action/ScriptAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import java.lang.reflect.Type;
1515
import java.util.List;
1616

17-
public class ScriptAction extends ScriptParametrizedPart {
17+
public abstract class ScriptAction extends ScriptParametrizedPart {
1818

1919
public ScriptAction(List<ScriptArgument> arguments) {
2020
super(arguments);

src/main/java/io/github/techstreet/dfscript/script/action/ScriptBuiltinAction.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import io.github.techstreet.dfscript.script.execution.ScriptTask;
1414
import io.github.techstreet.dfscript.script.render.ScriptPartRender;
1515
import io.github.techstreet.dfscript.script.render.ScriptPartRenderIconElement;
16+
import net.minecraft.item.ItemStack;
1617
import net.minecraft.text.Text;
1718

1819
import java.lang.reflect.Type;
@@ -47,6 +48,16 @@ public boolean isDeprecated() {
4748
return type.isDeprecated();
4849
}
4950

51+
@Override
52+
public ItemStack getIcon() {
53+
return type.getIcon();
54+
}
55+
56+
@Override
57+
public String getName() {
58+
return type.getName();
59+
}
60+
5061
@Override
5162
public void create(ScriptPartRender render, Script script) {
5263
render.addElement(new ScriptPartRenderIconElement(getType().getName(), getType().getIcon()));

src/main/java/io/github/techstreet/dfscript/script/conditions/ScriptBranch.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public class ScriptBranch extends ScriptParametrizedPart implements ScriptScopeP
4444
closeBracketIcon.getSubNbt("display")
4545
.put("Lore", lore);
4646

47-
elseIcon.setCustomName(Text.literal(closeBracketName)
47+
elseIcon.setCustomName(Text.literal(elseName)
4848
.fillStyle(Style.EMPTY
4949
.withColor(Formatting.WHITE)
5050
.withItalic(false)));
@@ -69,7 +69,7 @@ public ScriptBranch(List<ScriptArgument> arguments, ScriptCondition condition) {
6969

7070
@Override
7171
public void create(ScriptPartRender render, Script script) {
72-
condition.create(render, script);
72+
condition.create(render, script, "If", "Unless");
7373

7474
render.addElement(container.createSnippet(0));
7575

@@ -126,6 +126,16 @@ public List<ContextMenuButton> getContextMenu() {
126126
return extra;
127127
}
128128

129+
@Override
130+
public ItemStack getIcon() {
131+
return condition.getIcon("If", "Unless");
132+
}
133+
134+
@Override
135+
public String getName() {
136+
return condition.getName("If", "Unless");
137+
}
138+
129139
public static class Serializer implements JsonSerializer<ScriptBranch> {
130140

131141
@Override

src/main/java/io/github/techstreet/dfscript/script/conditions/ScriptBuiltinCondition.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@
1616
import io.github.techstreet.dfscript.script.execution.ScriptActionContext;
1717
import io.github.techstreet.dfscript.script.render.ScriptPartRender;
1818
import io.github.techstreet.dfscript.script.render.ScriptPartRenderIconElement;
19+
import net.minecraft.item.ItemStack;
20+
import net.minecraft.text.Style;
1921
import net.minecraft.text.Text;
22+
import net.minecraft.util.Formatting;
2023

2124
import java.lang.reflect.Type;
2225
import java.util.List;
@@ -29,17 +32,27 @@ public ScriptBuiltinCondition(ScriptConditionType type) {
2932
}
3033

3134
@Override
32-
public void create(ScriptPartRender render, Script script) {
33-
render.addElement(new ScriptPartRenderIconElement((isInverted() ? "Unless " : "If ") + getType().getName(), getType().getIcon()));
35+
public void create(ScriptPartRender render, Script script, String prefix, String invertedPrefix) {
36+
render.addElement(new ScriptPartRenderIconElement(getName(prefix, invertedPrefix), getIcon(prefix, invertedPrefix)));
3437

35-
super.create(render, script);
38+
super.create(render, script, prefix, invertedPrefix);
3639
}
3740

3841
@Override
3942
public boolean run(ScriptActionContext ctx) {
4043
return type.run(ctx) != isInverted();
4144
}
4245

46+
@Override
47+
public ItemStack getIcon(String prefix, String invertedPrefix) {
48+
return type.getIcon((isInverted() ? invertedPrefix : prefix));
49+
}
50+
51+
@Override
52+
public String getName(String prefix, String invertedPrefix) {
53+
return (isInverted() ? invertedPrefix : prefix) + " " + getType().getName();
54+
}
55+
4356
public ScriptBuiltinCondition setType(ScriptConditionType newType) {
4457
type = newType;
4558

src/main/java/io/github/techstreet/dfscript/script/conditions/ScriptCondition.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
public abstract class ScriptCondition {
3030
boolean inverted = false;
3131

32-
public void create(ScriptPartRender render, Script script) {
32+
public void create(ScriptPartRender render, Script script, String prefix, String invertedPrefix) {
3333

3434
}
3535

@@ -46,6 +46,9 @@ public boolean run(ScriptActionContext ctx) {
4646
return false;
4747
}
4848

49+
public abstract ItemStack getIcon(String prefix, String invertedPrefix);
50+
public abstract String getName(String prefix, String invertedPrefix);
51+
4952
public static class Serializer implements JsonDeserializer<ScriptCondition> {
5053

5154
@Override

src/main/java/io/github/techstreet/dfscript/script/conditions/ScriptConditionType.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ public enum ScriptConditionType {
288288
.arg("Filename", ScriptActionArgumentType.TEXT)
289289
.action(ctx -> {
290290
String filename = ctx.value("Filename").asText();
291-
if (filename.matches("^[a-zA-Z\\d_\\-\\. ]+$")) {
291+
if (filename.matches("^[a-zA-Z\\d_\\-. ]+$")) {
292292
Path f = FileUtil.folder("Scripts").resolve(ctx.task().context().script().getFile().getName()+"-files").resolve(filename);
293293
if (Files.exists(f)) {
294294
return true;
@@ -307,7 +307,7 @@ public enum ScriptConditionType {
307307
.deprecate(IF_FILE_EXISTS)
308308
.action(ctx -> {
309309
String filename = ctx.value("Filename").asText();
310-
if (filename.matches("^[a-zA-Z\\d_\\-\\. ]+$")) {
310+
if (filename.matches("^[a-zA-Z\\d_\\-. ]+$")) {
311311
Path f = FileUtil.folder("Scripts").resolve(ctx.task().context().script().getFile().getName()+"-files").resolve(filename);
312312
if (!Files.exists(f)) {
313313
return true;
@@ -340,10 +340,10 @@ public enum ScriptConditionType {
340340
description.add("No description provided.");
341341
builder.accept(this);
342342
}
343-
public ItemStack getIcon() {
343+
public ItemStack getIcon(String prefix) {
344344
ItemStack item = new ItemStack(icon);
345345

346-
item.setCustomName(Text.literal(name)
346+
item.setCustomName(Text.literal(prefix + (prefix.equals("") ? "" : " ") + name)
347347
.fillStyle(Style.EMPTY
348348
.withColor(Formatting.WHITE)
349349
.withItalic(false)));
@@ -469,4 +469,8 @@ public boolean run(ScriptActionContext ctx) {
469469
return false;
470470
}
471471
}
472+
473+
public ItemStack getIcon() {
474+
return getIcon("");
475+
}
472476
}

0 commit comments

Comments
 (0)