Skip to content

Commit 7bcca41

Browse files
committed
commit just so i can change branches without the changes lmao
1 parent fef497f commit 7bcca41

25 files changed

+466
-108
lines changed
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
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.CItem;
6+
import io.github.techstreet.dfscript.script.Script;
7+
import io.github.techstreet.dfscript.script.ScriptSnippet;
8+
import io.github.techstreet.dfscript.script.action.*;
9+
import io.github.techstreet.dfscript.script.conditions.ScriptBranch;
10+
import io.github.techstreet.dfscript.script.conditions.ScriptBuiltinCondition;
11+
import io.github.techstreet.dfscript.script.conditions.ScriptConditionType;
12+
import io.github.techstreet.dfscript.script.event.ScriptFunction;
13+
import io.github.techstreet.dfscript.script.repetitions.ScriptBuiltinRepetition;
14+
import io.github.techstreet.dfscript.script.repetitions.ScriptRepetitionType;
15+
16+
import java.util.ArrayList;
17+
18+
public class ScriptAddFunctionArgumentScreen extends CScreen {
19+
20+
private final Script script;
21+
22+
private final ScriptFunction function;
23+
private final int insertIndex;
24+
25+
public ScriptAddFunctionArgumentScreen(Script script, ScriptFunction function, int insertIndex) {
26+
super(size(), size());
27+
int size = size();
28+
this.script = script;
29+
this.insertIndex = insertIndex;
30+
this.function = function;
31+
32+
int x = 3;
33+
int y = 3;
34+
35+
/*if (category == null) {
36+
for (ScriptEventType type : ScriptEventType.values()) {
37+
CItem item = new CItem(x, y, type.getIcon());
38+
item.setClickListener((btn) -> {
39+
ScriptEvent event = new ScriptEvent(type);
40+
script.getParts().add(insertIndex, event);
41+
DFScript.MC.setScreen(new ScriptEditScreen(script));
42+
});
43+
widgets.add(item);
44+
x += 10;
45+
if (x >= size - 10) {
46+
x = 3;
47+
y += 10;
48+
}
49+
}
50+
}*/
51+
52+
for (ScriptActionArgument.ScriptActionArgumentType type : ScriptActionArgument.ScriptActionArgumentType.values()) {
53+
CItem item = new CItem(x, y, type.icon());
54+
item.setClickListener((btn) -> {
55+
ScriptActionArgument arg = new ScriptActionArgument(function.argList().getUnnamedArgument(), type);
56+
function.argList().add(insertIndex, arg);
57+
DFScript.MC.setScreen(new ScriptEditFunctionScreen(function, script));
58+
});
59+
widgets.add(item);
60+
x += 10;
61+
if (x >= size-10) {
62+
x = 3;
63+
y += 10;
64+
}
65+
}
66+
}
67+
68+
private static int size() {
69+
int amount = ScriptActionArgument.ScriptActionArgumentType.values().length;
70+
return (int) (Math.ceil(Math.sqrt(amount))*10)+4;
71+
}
72+
73+
@Override
74+
public void close() {
75+
DFScript.MC.setScreen(new ScriptEditFunctionScreen(function, script));
76+
}
77+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
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.CButton;
6+
import io.github.techstreet.dfscript.screen.widget.CTextField;
7+
import io.github.techstreet.dfscript.script.Script;
8+
import io.github.techstreet.dfscript.script.action.ScriptActionArgument;
9+
import io.github.techstreet.dfscript.script.event.ScriptFunction;
10+
import io.github.techstreet.dfscript.script.options.ScriptNamedOption;
11+
12+
import java.util.Objects;
13+
14+
public class ScriptEditFunctionArgumentScreen extends CScreen {
15+
private final Script script;
16+
17+
private final ScriptFunction function;
18+
private final ScriptActionArgument argument;
19+
20+
public ScriptEditFunctionArgumentScreen(Script script, ScriptFunction f, ScriptActionArgument a) {
21+
super(100, 50);
22+
this.script = script;
23+
argument = a;
24+
function = f;
25+
26+
CTextField input = new CTextField(argument.name(), 2, 2, 96, 35, true);
27+
28+
input.setChangedListener(() -> input.textColor = 0xFFFFFF);
29+
30+
CButton confirm = new CButton(2, 37, 46, 10, "Rename", () -> {
31+
if(!Objects.equals(argument.name(), input.getText())) {
32+
if(function.argList().argumentExists(input.getText())) {
33+
input.textColor = 0xFF3333;
34+
} else {
35+
//script.replaceOption(option.getName(), input.getText());
36+
argument.setName(input.getText());
37+
close();
38+
}
39+
} else {
40+
close();
41+
}
42+
});
43+
44+
CButton cancel = new CButton(52, 37, 46, 10, "Cancel", this::close);
45+
46+
widgets.add(input);
47+
widgets.add(confirm);
48+
widgets.add(cancel);
49+
}
50+
51+
@Override
52+
public void close() {
53+
DFScript.MC.setScreen(new ScriptEditFunctionScreen(function, script));
54+
}
55+
}

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

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,16 @@
66
import io.github.techstreet.dfscript.screen.util.ItemMaterialSelectMenu;
77
import io.github.techstreet.dfscript.screen.widget.*;
88
import io.github.techstreet.dfscript.script.Script;
9+
import io.github.techstreet.dfscript.script.action.ScriptActionArgument;
910
import io.github.techstreet.dfscript.script.event.ScriptFunction;
1011
import net.minecraft.client.font.TextRenderer;
12+
import net.minecraft.client.gui.DrawContext;
13+
import net.minecraft.client.sound.PositionedSoundInstance;
14+
import net.minecraft.item.ItemStack;
15+
import net.minecraft.sound.SoundEvents;
16+
import net.minecraft.text.Text;
1117

18+
import java.awt.*;
1219
import java.util.ArrayList;
1320
import java.util.List;
1421

@@ -103,61 +110,55 @@ public void reload() {
103110
panel.add(icon);
104111
panel.add(nameField);
105112

106-
/*int y = 15;
113+
int y = 15;
107114
int index = 0;
108-
for (ScriptArgument arg : action.getArguments()) {
109-
ItemStack icon = arg.getArgIcon();
110-
String text = arg.getArgText();
115+
for (ScriptActionArgument arg : function.argList()) {
116+
ItemStack argIcon = arg.type().icon();
117+
String text = arg.name();
111118

112-
panel.add(new CItem(5, y, icon));
119+
panel.add(new CItem(5, y, argIcon));
113120
panel.add(new CText(15, y + 2, Text.literal(text)));
114121

115122
int currentIndex = index;
116123

117124

118125
panel.add(new CButton(5, y-1, 85, 10, "",() -> {}) {
119126
@Override
120-
public void render(MatrixStack stack, int mouseX, int mouseY, float tickDelta) {
127+
public void render(DrawContext context, int mouseX, int mouseY, float tickDelta) {
121128
Rectangle b = getBounds();
122129
if (b.contains(mouseX, mouseY)) {
123-
DrawableHelper.fill(stack, b.x, b.y, b.x + b.width, b.y + b.height, 0x33000000);
130+
context.fill(b.x, b.y, b.x + b.width, b.y + b.height, 0x33000000);
124131
}
125132
}
126133

127134
@Override
128135
public boolean mouseClicked(double x, double y, int button) {
129136
if (getBounds().contains(x, y)) {
130-
DFScript.MC.getSoundManager().play(PositionedSoundInstance.ambient(SoundEvents.UI_BUTTON_CLICK, 1f,1f));
131-
132-
if (button == 0) {
133-
ScriptArgument argument = action.getArguments().get(currentIndex);
134-
String value = "~";
135-
if(argument instanceof ScriptClientValueArgument clientValue) value = clientValue.getName();
136-
if(argument instanceof ScriptConfigArgument configArgument) value = configArgument.getName();
137-
if(argument instanceof ScriptNumberArgument number) value = String.valueOf(number.value());
138-
if(argument instanceof ScriptTextArgument text) value = text.value();
139-
if(argument instanceof ScriptVariableArgument var) value = var.name();
140-
DFScript.MC.setScreen(new ScriptAddArgumentScreen(script, action, currentIndex, value));
141-
}
137+
DFScript.MC.getSoundManager().play(PositionedSoundInstance.ambient(SoundEvents.UI_BUTTON_CLICK.value(),
138+
1f,1f));
142139

143140
if (button != 0) {
144141
List<ContextMenuButton> contextMenuButtons = new ArrayList<>();
145142
contextMenuButtons.add(new ContextMenuButton("Insert Before", () -> {
146-
DFScript.MC.setScreen(new ScriptAddArgumentScreen(script, action, currentIndex));
143+
DFScript.MC.setScreen(new ScriptAddFunctionArgumentScreen(script, function, currentIndex));
147144
}, false));
148145
contextMenuButtons.add(new ContextMenuButton("Insert After", () -> {
149-
DFScript.MC.setScreen(new ScriptAddArgumentScreen(script, action, currentIndex+1));
146+
DFScript.MC.setScreen(new ScriptAddFunctionArgumentScreen(script, function, currentIndex+1));
150147
}, false));
151148
contextMenuButtons.add(new ContextMenuButton("Delete", () -> {
152-
action.getArguments().remove(currentIndex);
149+
function.argList().remove(currentIndex);
153150
}));
154-
contextMenuButtons.addAll(action.getArguments().get(currentIndex).getContextMenu());
155151
DFScript.MC.send(() -> {
156152
if(DFScript.MC.currentScreen instanceof ScriptEditFunctionScreen screen) {
157153
screen.contextMenu((int) x, (int) y, contextMenuButtons);
158154
}
159155
});
160156
}
157+
else
158+
{
159+
DFScript.MC.setScreen(new ScriptEditFunctionArgumentScreen(script, function, arg));
160+
}
161+
161162
return true;
162163
}
163164
return false;
@@ -170,8 +171,8 @@ public boolean mouseClicked(double x, double y, int button) {
170171
}
171172

172173
CButton add = new CButton(25, y, 40, 8, "Add", () -> {
173-
DFScript.MC.setScreen(new ScriptAddArgumentScreen(script, action, action.getArguments().size()));
174+
DFScript.MC.setScreen(new ScriptAddFunctionArgumentScreen(script, function, function.argList().size()));
174175
});
175-
panel.add(add);*/
176+
panel.add(add);
176177
}
177178
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,10 @@ public void reload() {
9393
int index = 0;
9494
for (ScriptArgument arg : action.getArguments()) {
9595
ItemStack icon = arg.getArgIcon();
96+
Text countText = arg.getArgIconText();
9697
String text = arg.getArgText();
9798

98-
panel.add(new CItem(5, y, icon));
99+
panel.add(new CItem(5, y, icon, countText));
99100
panel.add(new CText(15, y + 2, Text.literal(text)));
100101

101102
int currentIndex = index;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public ScriptEditSettingScreen(Script script, ScriptNamedOption o) {
2727
if(script.optionExists(input.getText())) {
2828
input.textColor = 0xFF3333;
2929
} else {
30-
//script.replaceOption(option.getName(), input.getText());
30+
script.replaceOption(option.getName(), input.getText());
3131
option.setName(input.getText());
3232
close();
3333
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import io.github.techstreet.dfscript.screen.CScreen;
55
import io.github.techstreet.dfscript.screen.widget.CItem;
66
import io.github.techstreet.dfscript.script.Script;
7+
import io.github.techstreet.dfscript.script.action.ScriptActionArgumentList;
78
import io.github.techstreet.dfscript.script.action.ScriptActionCategory;
89
import io.github.techstreet.dfscript.script.event.ScriptFunction;
910
import io.github.techstreet.dfscript.script.event.ScriptHeader;
@@ -27,7 +28,7 @@ public class ScriptHeaderCategoryScreen extends CScreen {
2728

2829
static {
2930
extra = List.of(
30-
new HeaderExtra(ScriptFunction.functionIcon, (script, insertIndex) -> script.getHeaders().add(insertIndex, new ScriptFunction(script.getUnnamedFunction(), Items.LAPIS_LAZULI)))
31+
new HeaderExtra(ScriptFunction.functionIcon, (script, insertIndex) -> script.getHeaders().add(insertIndex, new ScriptFunction(script.getUnnamedFunction(), Items.LAPIS_LAZULI, new ScriptActionArgumentList())))
3132
);
3233
size = (int) (Math.ceil(Math.sqrt(ScriptHeaderCategory.values().length+extra.size())) * 10)+4;
3334
}

src/main/java/io/github/techstreet/dfscript/screen/widget/CItem.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22

33
import io.github.techstreet.dfscript.DFScript;
44
import io.github.techstreet.dfscript.util.RenderUtil;
5+
import net.minecraft.client.font.TextRenderer;
56
import net.minecraft.client.gui.DrawContext;
67
import net.minecraft.client.item.TooltipContext;
78
import net.minecraft.client.sound.PositionedSoundInstance;
89
import net.minecraft.client.util.math.MatrixStack;
910
import net.minecraft.item.ItemStack;
1011
import net.minecraft.sound.SoundEvents;
12+
import net.minecraft.text.Text;
1113
import org.lwjgl.opengl.GL11;
1214

1315
import java.awt.*;
@@ -19,6 +21,8 @@ public class CItem implements CWidget {
1921
private final int x;
2022
private final int y;
2123
private ItemStack item;
24+
25+
private Text countText;
2226
private Consumer<Integer> onClick;
2327

2428
public CItem(int x, int y, ItemStack item) {
@@ -27,12 +31,25 @@ public CItem(int x, int y, ItemStack item) {
2731
this.item = item;
2832
}
2933

34+
public CItem(int x, int y, ItemStack item, Text countText) {
35+
this.x = x;
36+
this.y = y;
37+
this.item = item;
38+
this.countText = countText;
39+
}
40+
3041
@Override
3142
public void render(DrawContext context, int mouseX, int mouseY, float tickDelta) {
3243
MatrixStack stack = context.getMatrices();
3344
stack.push();
3445
stack.translate(x, y, 0);
3546
RenderUtil.renderGuiItem(context, item);
47+
if(countText != null)
48+
{
49+
stack.translate(4, 4, 0);
50+
stack.scale(0.5f, 0.5f, 0.5f);
51+
context.drawText(DFScript.MC.textRenderer, countText, 0, 0, 0xFFFFFFFF, true);
52+
}
3653
stack.pop();
3754
}
3855

src/main/java/io/github/techstreet/dfscript/screen/widget/CKeyField.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,11 @@ public void render(DrawContext context, int mouseX, int mouseY, float tickDelta)
5151
context.fill(0, 0, width, height, outlineColor);
5252
context.fill(1, 1, width - 1, height - 1, 0xFF000000);
5353

54-
Vector4f begin = new Vector4f(0, 0, 1, 1);
55-
Vector4f end = new Vector4f(width, height, 1, 1);
56-
begin.add(new Vector4f(2,2,0,501));
57-
end.add(new Vector4f(2,2,0,501));
54+
float xPos = stack.peek().getPositionMatrix().m30();
55+
float yPos = stack.peek().getPositionMatrix().m31();
56+
57+
Vector4f begin = new Vector4f(xPos - 2, yPos + 2, 1, 1);
58+
Vector4f end = new Vector4f((xPos + (width * 2)) - 7, (yPos + (height * 2)), 1, 1);
5859

5960
int guiScale = (int) DFScript.MC.getWindow().getScaleFactor();
6061
RenderUtil.pushScissor(

src/main/java/io/github/techstreet/dfscript/screen/widget/CTextField.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public void render(DrawContext context, int mouseX, int mouseY, float tickDelta)
6161
context.fill(0, 0, width, height, 0xFF888888);
6262
context.fill(1, 1, width - 1, height - 1, 0xFF000000);
6363

64-
float xPos = stack.peek().getPositionMatrix().m30() + x;
64+
float xPos = stack.peek().getPositionMatrix().m30();
6565
float yPos = stack.peek().getPositionMatrix().m31();
6666

6767
Vector4f begin = new Vector4f(xPos - 2, yPos + 2, 1, 1);

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import io.github.techstreet.dfscript.screen.widget.CScrollPanel;
55
import io.github.techstreet.dfscript.script.action.ScriptActionType;
66
import io.github.techstreet.dfscript.script.execution.ScriptActionContext;
7+
import io.github.techstreet.dfscript.script.execution.ScriptPosStackElement;
8+
import io.github.techstreet.dfscript.script.execution.ScriptScopeVariables;
79
import io.github.techstreet.dfscript.script.execution.ScriptTask;
810
import io.github.techstreet.dfscript.script.render.ScriptPartRenderSnippetElement;
911

@@ -24,7 +26,12 @@ public ScriptContainer(int snippetCount) {
2426

2527
public void runSnippet(ScriptTask task, int snippetIndex, ScriptScopeParent parent)
2628
{
27-
snippets.get(snippetIndex).run(task, parent);
29+
snippets.get(snippetIndex).run(task, parent, null);
30+
}
31+
32+
public void runSnippet(ScriptTask task, int snippetIndex, ScriptScopeParent parent, ScriptActionContext context)
33+
{
34+
snippets.get(snippetIndex).run(task, parent, context);
2835
}
2936

3037
public ScriptPartRenderSnippetElement createSnippet(int snippetIndex) {

0 commit comments

Comments
 (0)