Skip to content

Commit 22a452d

Browse files
committed
Implemented a deprecated actions system...
just so i could fix an inconsistency with TEXT_SUBTEXT...
1 parent ca4438a commit 22a452d

File tree

6 files changed

+91
-5
lines changed

6 files changed

+91
-5
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public ScriptAddActionScreen(Script script, int insertIndex, ScriptActionCategor
4545

4646
for (ScriptActionType type : ScriptActionType.values()) {
4747
if (type.getCategory() != category) continue;
48+
if (type.isDeprecated()) continue;
4849

4950
CItem item = new CItem(x, y, type.getIcon());
5051
item.setClickListener((btn) -> {

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

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,11 @@ public ScriptEditScreen(Script script) {
5757
@Override
5858
public void render(MatrixStack stack, int mouseX, int mouseY, float tickDelta) {
5959
Rectangle b = getBounds();
60+
6061
if (b.contains(mouseX, mouseY)) {
61-
DrawableHelper.fill(stack, b.x, b.y, b.x + b.width, b.y + b.height, 0x33000000);
62+
int color = 0x33000000;
63+
64+
DrawableHelper.fill(stack, b.x, b.y, b.x + b.width, b.y + b.height, color);
6265
}
6366
}
6467

@@ -123,7 +126,21 @@ public Rectangle getBounds() {
123126
public void render(MatrixStack stack, int mouseX, int mouseY, float tickDelta) {
124127
Rectangle b = getBounds();
125128
if (b.contains(mouseX, mouseY)) {
126-
DrawableHelper.fill(stack, b.x, b.y, b.x + b.width, b.y + b.height, 0x33000000);
129+
int color = 0x33000000;
130+
131+
if(sa.getType().isDeprecated())
132+
{
133+
color = 0x80FF0000;
134+
}
135+
136+
DrawableHelper.fill(stack, b.x, b.y, b.x + b.width, b.y + b.height, color);
137+
}
138+
else
139+
{
140+
if(sa.getType().isDeprecated())
141+
{
142+
DrawableHelper.fill(stack, b.x, b.y, b.x + b.width, b.y + b.height, 0x33FF0000);
143+
}
127144
}
128145
}
129146

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

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import org.apache.logging.log4j.Logger;
2929

3030
public class Script {
31-
public static int scriptVersion = 2;
31+
public static int scriptVersion = 3;
3232

3333
private String name;
3434
private String owner;
@@ -245,6 +245,19 @@ public ScriptContext getContext() {
245245
return context;
246246
}
247247

248+
public void replaceAction(ScriptActionType oldAction, ScriptActionType newAction) {
249+
for(int i = 0; i < parts.size(); i++)
250+
{
251+
if(parts.get(i) instanceof ScriptAction)
252+
{
253+
if(((ScriptAction) parts.get(i)).getType() == oldAction)
254+
{
255+
parts.set(i, ((ScriptAction) parts.get(i)).setType(newAction));
256+
}
257+
}
258+
}
259+
}
260+
248261
public static class Serializer implements JsonSerializer<Script>, JsonDeserializer<Script> {
249262
@Override
250263
public Script deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.github.techstreet.dfscript.script;
22

33
import io.github.techstreet.dfscript.DFScript;
4+
import io.github.techstreet.dfscript.script.action.ScriptActionType;
45

56
public class ScriptMigrator {
67
public static void migrate(Script script) {
@@ -17,6 +18,11 @@ public static void migrate(Script script) {
1718
script.setVersion(2);
1819
}
1920

21+
if (script.getVersion() == 2) {
22+
script.replaceAction(ScriptActionType.TEXT_SUBTEXT, ScriptActionType.TEXT_SUBTEXT_V1);
23+
script.setVersion(3);
24+
}
25+
2026
if (previousVer != script.getVersion()) {
2127
ScriptManager.LOGGER.info("Migrated script '" + script.getName() + "' from version " + previousVer + " to version " + script.getVersion() + "!");
2228
ScriptManager.getInstance().saveScript(script);

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,20 @@
2020

2121
public class ScriptAction implements ScriptPart {
2222

23-
private final ScriptActionType type;
23+
private ScriptActionType type;
2424
private final List<ScriptArgument> arguments;
2525

2626
public ScriptAction(ScriptActionType type, List<ScriptArgument> arguments) {
2727
this.type = type;
2828
this.arguments = arguments;
2929
}
3030

31+
public ScriptAction setType(ScriptActionType newType) {
32+
type = newType;
33+
34+
return this;
35+
}
36+
3137
public void invoke(Event event, ScriptContext context, Consumer<ScriptScopeVariables> inner, ScriptTask task, Script script) {
3238
type.run(new ScriptActionContext(
3339
context, arguments, event, inner, task, new HashMap<>(), script

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

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1218,12 +1218,29 @@ public enum ScriptActionType {
12181218
.arg("Last Index",ScriptActionArgumentType.NUMBER)
12191219
.action(ctx -> {
12201220
String text = ctx.value("Text").asText();
1221-
int start = (int)ctx.value("First Index").asNumber()+1;
1221+
int start = (int)ctx.value("First Index").asNumber()-1;
12221222
int end = (int)ctx.value("Last Index").asNumber();
12231223
String result = text.substring(start, end);
12241224
ctx.context().setVariable(ctx.variable("Result").name(), new ScriptTextValue(result));
12251225
})),
12261226

1227+
TEXT_SUBTEXT_V1(builder -> builder.name("Get Subtext OLD")
1228+
.description("Gets a piece of text within another text.")
1229+
.icon(Items.KNOWLEDGE_BOOK)
1230+
.category(ScriptActionCategory.TEXTS)
1231+
.arg("Result",ScriptActionArgumentType.VARIABLE)
1232+
.arg("Text",ScriptActionArgumentType.TEXT)
1233+
.arg("First Index",ScriptActionArgumentType.NUMBER)
1234+
.arg("Last Index",ScriptActionArgumentType.NUMBER)
1235+
.deprecate(TEXT_SUBTEXT)
1236+
.action(ctx -> {
1237+
String text = ctx.value("Text").asText();
1238+
int start = (int)ctx.value("First Index").asNumber()+1;
1239+
int end = (int)ctx.value("Last Index").asNumber();
1240+
String result = text.substring(start, end);
1241+
ctx.context().setVariable(ctx.variable("Result").name(), new ScriptTextValue(result));
1242+
})),
1243+
12271244
TEXT_LENGTH(builder -> builder.name("Get Text Length")
12281245
.description("Get the length of a text value.")
12291246
.icon(Items.BOOKSHELF)
@@ -1755,19 +1772,35 @@ public enum ScriptActionType {
17551772
private ScriptActionCategory category = ScriptActionCategory.MISC;
17561773
private List<String> description = new ArrayList();
17571774
private ScriptGroup group = ScriptGroup.ACTION;
1775+
1776+
private ScriptActionType deprecated = null; //if deprecated == null, the action is not deprecated
17581777
private final List<ScriptActionArgument> arguments = new ArrayList<>();
17591778
ScriptActionType(Consumer<ScriptActionType> builder) {
17601779
description.add("No description provided.");
17611780
builder.accept(this);
17621781
}
17631782
public ItemStack getIcon() {
17641783
ItemStack item = new ItemStack(icon);
1784+
17651785
item.setCustomName(Text.literal(name)
17661786
.fillStyle(Style.EMPTY
17671787
.withColor(Formatting.WHITE)
17681788
.withItalic(false)));
17691789

17701790
NbtList lore = new NbtList();
1791+
1792+
if(isDeprecated())
1793+
{
1794+
lore.add(NbtString.of(Text.Serializer.toJson(Text.literal("This action is deprecated!")
1795+
.fillStyle(Style.EMPTY
1796+
.withColor(Formatting.RED)
1797+
.withItalic(false)))));
1798+
lore.add(NbtString.of(Text.Serializer.toJson(Text.literal("Use '" + deprecated.getName() + "'")
1799+
.fillStyle(Style.EMPTY
1800+
.withColor(Formatting.RED)
1801+
.withItalic(false)))));
1802+
}
1803+
17711804
for (String descriptionLine: description) {
17721805
lore.add(NbtString.of(Text.Serializer.toJson(Text.literal(descriptionLine)
17731806
.fillStyle(Style.EMPTY
@@ -1796,6 +1829,10 @@ public String getName() {
17961829
return name;
17971830
}
17981831

1832+
public boolean isDeprecated() {
1833+
return deprecated != null;
1834+
}
1835+
17991836
public boolean hasChildren() {
18001837
return hasChildren;
18011838
}
@@ -1869,6 +1906,12 @@ public ScriptActionType arg(String name, ScriptActionArgumentType type) {
18691906
});
18701907
}
18711908

1909+
public ScriptActionType deprecate(ScriptActionType newScriptActionType) {
1910+
deprecated = newScriptActionType;
1911+
1912+
return this;
1913+
}
1914+
18721915
public void run(ScriptActionContext ctx) {
18731916
List<List<ScriptActionArgument>> possibilities = new ArrayList<>();
18741917

0 commit comments

Comments
 (0)