Skip to content

Commit 598eef8

Browse files
committed
Added a settings menu
Also started work on a configuration system lmao
1 parent d784458 commit 598eef8

File tree

5 files changed

+106
-0
lines changed

5 files changed

+106
-0
lines changed

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,15 @@ public ScriptEditScreen(Script script) {
4646
int y = 0;
4747
int index = 0;
4848
int indent = 0;
49+
50+
CButton settings = new CButton(37, y, 46, 8, "Settings", () -> {
51+
DFScript.MC.setScreen(new ScriptSettingsScreen(this.script));
52+
});
53+
54+
panel.add(settings);
55+
56+
y += 10;
57+
4958
for (ScriptPart part : script.getParts()) {
5059
if (part instanceof ScriptEvent se) {
5160
panel.add(new CItem(5, y, se.getType().getIcon()));
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package io.github.techstreet.dfscript.screen.script;
2+
3+
import io.github.techstreet.dfscript.DFScript;
4+
import io.github.techstreet.dfscript.screen.CScreen;
5+
import io.github.techstreet.dfscript.screen.widget.CScrollPanel;
6+
import io.github.techstreet.dfscript.screen.widget.CTextField;
7+
import io.github.techstreet.dfscript.screen.widget.CWidget;
8+
import io.github.techstreet.dfscript.script.Script;
9+
import io.github.techstreet.dfscript.script.ScriptManager;
10+
import io.github.techstreet.dfscript.script.options.ScriptOption;
11+
12+
import java.util.ArrayList;
13+
import java.util.List;
14+
15+
public class ScriptSettingsScreen extends CScreen {
16+
private final Script script;
17+
18+
private static int scroll = 0;
19+
20+
private final CScrollPanel panel;
21+
22+
private final List<CWidget> contextMenu = new ArrayList<>();
23+
24+
public ScriptSettingsScreen(Script script) {
25+
super(125, 100);
26+
this.script = script;
27+
panel = new CScrollPanel(0, 3, 120, 94);
28+
29+
widgets.add(panel);
30+
31+
CTextField description = new CTextField(script.getDescription(), 3, 3, 115, 20, true);
32+
description.setChangedListener(() -> script.setDescription(description.getText()));
33+
panel.add(description);
34+
35+
int y = 25;
36+
int index = 0;
37+
38+
for(ScriptOption option : script.getOptions())
39+
{
40+
y = option.create(panel, 5, y, 105);
41+
42+
index++;
43+
}
44+
45+
panel.setScroll(scroll);
46+
}
47+
48+
@Override
49+
public void close() {
50+
DFScript.MC.setScreen(new ScriptEditScreen(script));
51+
}
52+
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import io.github.techstreet.dfscript.event.system.Event;
1313
import io.github.techstreet.dfscript.script.action.ScriptAction;
1414
import io.github.techstreet.dfscript.script.action.ScriptActionType;
15+
import io.github.techstreet.dfscript.script.options.ScriptOption;
1516
import io.github.techstreet.dfscript.script.event.ScriptEvent;
1617
import io.github.techstreet.dfscript.script.execution.ScriptContext;
1718
import io.github.techstreet.dfscript.script.execution.ScriptPosStack;
@@ -36,6 +37,8 @@ public class Script {
3637
private int version = 0;
3738
private String server;
3839
private final List<ScriptPart> parts;
40+
41+
private final List<ScriptOption> options;
3942
private final Logger LOGGER;
4043
private final ScriptContext context = new ScriptContext();
4144
private File file;
@@ -48,6 +51,7 @@ public Script(String name, String owner, String server, List<ScriptPart> parts,
4851
this.parts = parts;
4952
this.disabled = disabled;
5053
this.version = version;
54+
this.options = new ArrayList<>();
5155

5256
LOGGER = LogManager.getLogger("Script." + name);
5357
}
@@ -258,6 +262,10 @@ public void replaceAction(ScriptActionType oldAction, ScriptActionType newAction
258262
}
259263
}
260264

265+
public List<ScriptOption> getOptions() {
266+
return options;
267+
}
268+
261269
public static class Serializer implements JsonSerializer<Script>, JsonDeserializer<Script> {
262270
@Override
263271
public Script deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package io.github.techstreet.dfscript.script.options;
2+
3+
import io.github.techstreet.dfscript.screen.widget.CScrollPanel;
4+
import io.github.techstreet.dfscript.script.values.ScriptValue;
5+
6+
public interface ScriptOption {
7+
String name = "Default Config Option Name";
8+
9+
ScriptValue getValue();
10+
11+
int create(CScrollPanel panel, int x, int y, int width); // the return value = new y
12+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package io.github.techstreet.dfscript.script.options;
2+
3+
import io.github.techstreet.dfscript.screen.widget.CScrollPanel;
4+
import io.github.techstreet.dfscript.screen.widget.CTextField;
5+
import io.github.techstreet.dfscript.script.values.ScriptTextValue;
6+
import io.github.techstreet.dfscript.script.values.ScriptValue;
7+
8+
public class ScriptTextOption implements ScriptOption {
9+
10+
String value = "";
11+
12+
@Override
13+
public ScriptValue getValue() {
14+
return new ScriptTextValue(value);
15+
}
16+
17+
@Override
18+
public int create(CScrollPanel panel, int x, int y, int width) {
19+
CTextField field = new CTextField(value, x, y, width, 10, true);
20+
field.setChangedListener(() -> value = field.getText());
21+
panel.add(field);
22+
23+
return y + 12;
24+
}
25+
}

0 commit comments

Comments
 (0)