(WIP) switched from previous DSL System (UI order based) to a new DSL System (node connection based)

This commit is contained in:
2026-05-13 13:18:47 +02:00
parent 1eef71f454
commit 5893f9f7b9
47 changed files with 706 additions and 1153 deletions
-38
View File
@@ -40,18 +40,6 @@ public class CraftNode : ProgramNode
return NodeResult.RUNNING;
}
public override void ReadParameters(NodeDisplay display)
{
HBoxContainer valueContainer = display.GetNode<HBoxContainer>("./EditorDisplay/VBoxContainer/Values");
OptionButton items = valueContainer.GetNode<OptionButton>("./Item");
string readableItem = items.GetItemText(items.GetSelectedId()).Split(":")[0];
if (GameData.availableItems.ContainsKey(ItemData.GetIndex(readableItem)))
{
selectedItem = new Item { data = GameData.availableItems[ItemData.GetIndex(readableItem)] };
}
amount = (int)valueContainer.GetNode<SpinBox>("./Amount").Value;
}
public override ProgramNode Duplicate()
{
CraftNode duplicate = new CraftNode()
@@ -62,32 +50,6 @@ public class CraftNode : ProgramNode
return duplicate;
}
public override void Setup(NodeDisplay display)
{
OptionButton options = display.GetNode<OptionButton>("./EditorDisplay/VBoxContainer/Values/Item");
options.AddItem("Select item...");
foreach (ItemData item in GameData.availableItems.Values)
{
if (GameData.availableResearch[item.Research].state != ResearchState.RESEARCHED) continue;
if (item.Inputs.Count > 0)
{
options.AddItem(item.GetCraftingDisplay());
}
}
if (selectedItem != null)
{
for (int i = 0; i < options.ItemCount; i++)
{
if (ItemData.GetIndex(options.GetItemText(i).Split(":")[0]) == selectedItem.data.Id)
{
options.Select(i);
break;
}
}
}
}
public override string Save()
{
return $"Name: {DisplayText}, Item: {(selectedItem == null ? "Empty" : selectedItem.data.Id)}, Amount: {amount}";
-33
View File
@@ -1,33 +0,0 @@
using Godot;
public class ElseNode : ProgramNode
{
public ElseNode()
{
DisplayText = "Else";
}
public override NodeResult Execute(Robot robot, double delta)
{
return NodeResult.SUCCESS;
}
public override void ReadParameters(NodeDisplay display)
{
}
public override ProgramNode Duplicate()
{
ElseNode duplicate = new ElseNode();
return duplicate;
}
public override void Setup(NodeDisplay display)
{
}
public override string Save()
{
return $"Name: {DisplayText}";
}
}
-1
View File
@@ -1 +0,0 @@
uid://dxpf6nsijqq1d
-8
View File
@@ -86,14 +86,6 @@ public class ExploreNode : ProgramNode
return duplicate;
}
public override void ReadParameters(NodeDisplay display)
{
}
public override void Setup(NodeDisplay display)
{
}
public override string Save()
{
return $"Name: {DisplayText}";
-11
View File
@@ -20,12 +20,6 @@ public class ForNode : ProgramNode
return amountExecuted < amount;
}
public override void ReadParameters(NodeDisplay display)
{
HBoxContainer valueContainer = display.GetNode<HBoxContainer>("./EditorDisplay/VBoxContainer/Values");
amount = (int)valueContainer.GetNode<SpinBox>("./Amount").Value;
}
public override ProgramNode Duplicate()
{
ForNode duplicate = new ForNode()
@@ -36,11 +30,6 @@ public class ForNode : ProgramNode
return duplicate;
}
public override void Setup(NodeDisplay display)
{
}
public override string Save()
{
return $"Name: {DisplayText}, AmountExecuted: {amountExecuted}, Amount: {amount}";
-8
View File
@@ -39,20 +39,12 @@ public class HarvestNode : ProgramNode
return NodeResult.RUNNING;
}
public override void ReadParameters(NodeDisplay display)
{
}
public override ProgramNode Duplicate()
{
HarvestNode duplicate = new HarvestNode();
return duplicate;
}
public override void Setup(NodeDisplay display)
{
}
public override string Save()
{
return $"Name: {DisplayText}";
-52
View File
@@ -41,21 +41,6 @@ public class IfNode : ProgramNode
}
}
public override void ReadParameters(NodeDisplay display)
{
HBoxContainer valueContainer = display.GetNode<HBoxContainer>("./EditorDisplay/VBoxContainer/Values");
OptionButton items = valueContainer.GetNode<OptionButton>("./Item");
string readableItem = items.GetItemText(items.GetSelectedId()).Split(":")[0];
if (GameData.availableItems.ContainsKey(ItemData.GetIndex(readableItem)))
{
selectedItem = new Item { data = GameData.availableItems[ItemData.GetIndex(readableItem)] };
}
amount = (int)valueContainer.GetNode<SpinBox>("./Amount").Value;
OptionButton comparators = valueContainer.GetNode<OptionButton>("./Comparator");
comparator = comparators.GetItemText(comparators.GetSelectedId());
}
public override ProgramNode Duplicate()
{
IfNode duplicate = new IfNode()
@@ -67,43 +52,6 @@ public class IfNode : ProgramNode
return duplicate;
}
public override void Setup(NodeDisplay display)
{
OptionButton options = display.GetNode<OptionButton>("./EditorDisplay/VBoxContainer/Values/Item");
options.AddItem("Select item...");
foreach (ItemData item in GameData.availableItems.Values)
{
if (GameData.availableResearch[item.Research].state != ResearchState.RESEARCHED) continue;
options.AddItem(item.GetReadableName());
}
if (selectedItem != null)
{
for (int i = 0; i < options.ItemCount; i++)
{
if (ItemData.GetIndex(options.GetItemText(i).Split(":")[0]) == selectedItem.data.Id)
{
options.Select(i);
break;
}
}
}
OptionButton comparators = display.GetNode<OptionButton>("./EditorDisplay/VBoxContainer/Values/Comparator");
if (comparator != null)
{
for (int i = 0; i < comparators.ItemCount; i++)
{
if (comparators.GetItemText(i) == comparator)
{
comparators.Select(i);
break;
}
}
}
}
public override string Save()
{
return $"Name: {DisplayText}, Item: {(selectedItem == null ? "Empty" : selectedItem.data.Id)}, Comparator: {comparator}, Amount: {amount}";
-8
View File
@@ -24,20 +24,12 @@ public class MaintainNode : ProgramNode
return NodeResult.SUCCESS;
}
public override void ReadParameters(NodeDisplay display)
{
}
public override ProgramNode Duplicate()
{
MaintainNode duplicate = new MaintainNode();
return duplicate;
}
public override void Setup(NodeDisplay display)
{
}
public override string Save()
{
return $"Name: {DisplayText}";
-17
View File
@@ -64,15 +64,6 @@ public class MoveNode : ProgramNode
return NodeResult.RUNNING;
}
public override void ReadParameters(NodeDisplay display)
{
HBoxContainer valueContainer = display.GetNode<HBoxContainer>("./EditorDisplay/VBoxContainer/Values");
int posX = (int)valueContainer.GetNode<SpinBox>("./CoordinateX").Value;
int posY = (int)valueContainer.GetNode<SpinBox>("./CoordinateY").Value;
int posZ = (int)valueContainer.GetNode<SpinBox>("./CoordinateZ").Value;
targetPosition = new Vector3I(posX, posY, posZ);
}
public override ProgramNode Duplicate()
{
MoveNode duplicate = new MoveNode
@@ -82,14 +73,6 @@ public class MoveNode : ProgramNode
return duplicate;
}
public override void Setup(NodeDisplay display)
{
HBoxContainer valueContainer = display.GetNode<HBoxContainer>("./EditorDisplay/VBoxContainer/Values");
valueContainer.GetNode<SpinBox>("./CoordinateX").MaxValue = GameData.layerSize;
valueContainer.GetNode<SpinBox>("./CoordinateY").MaxValue = GameData.ruinSize;
valueContainer.GetNode<SpinBox>("./CoordinateZ").MaxValue = GameData.layerSize;
}
public override string Save()
{
return $"Name: {DisplayText}, Position: ({targetPosition.X}|{targetPosition.Y}|{targetPosition.Z})";
+1 -3
View File
@@ -7,9 +7,7 @@ public abstract class ProgramNode
public string DisplayText;
public string lastExecutionMessage;
public abstract void Setup(NodeDisplay display);
public abstract NodeResult Execute(Robot robot, double delta);
public abstract void ReadParameters(NodeDisplay display);
public abstract ProgramNode Duplicate();
public abstract string Save();
}
}
-8
View File
@@ -31,20 +31,12 @@ public class SacrificeNode : ProgramNode
return NodeResult.SUCCESS;
}
public override void ReadParameters(NodeDisplay display)
{
}
public override ProgramNode Duplicate()
{
SacrificeNode duplicate = new SacrificeNode();
return duplicate;
}
public override void Setup(NodeDisplay display)
{
}
public override string Save()
{
return $"Name: {DisplayText}";
-32
View File
@@ -1,32 +0,0 @@
using Godot;
public class UntilNode : ProgramNode
{
public UntilNode()
{
DisplayText = "Until";
}
public override NodeResult Execute(Robot robot, double delta)
{
return NodeResult.SUCCESS;
}
public override void ReadParameters(NodeDisplay display)
{
}
public override ProgramNode Duplicate()
{
UntilNode duplicate = new UntilNode();
return duplicate;
}
public override void Setup(NodeDisplay display)
{
}
public override string Save()
{
return $"Name: {DisplayText}";
}
}
-1
View File
@@ -1 +0,0 @@
uid://cq0j38wd84pc7
-53
View File
@@ -42,22 +42,6 @@ public class WhileNode : ProgramNode
}
}
public override void ReadParameters(NodeDisplay display)
{
HBoxContainer valueContainer = display.GetNode<HBoxContainer>("./EditorDisplay/VBoxContainer/Values");
OptionButton items = valueContainer.GetNode<OptionButton>("./Item");
string readableItem = items.GetItemText(items.GetSelectedId()).Split(":")[0];
if (GameData.availableItems.ContainsKey(ItemData.GetIndex(readableItem)))
{
selectedItem = new Item { data = GameData.availableItems[ItemData.GetIndex(readableItem)] };
}
amount = (int)valueContainer.GetNode<SpinBox>("./Amount").Value;
OptionButton comparators = valueContainer.GetNode<OptionButton>("./Comparator");
comparator = comparators.GetItemText(comparators.GetSelectedId());
}
public override ProgramNode Duplicate()
{
WhileNode duplicate = new WhileNode()
@@ -69,43 +53,6 @@ public class WhileNode : ProgramNode
return duplicate;
}
public override void Setup(NodeDisplay display)
{
OptionButton options = display.GetNode<OptionButton>("./EditorDisplay/VBoxContainer/Values/Item");
options.AddItem("Select item...");
foreach (ItemData item in GameData.availableItems.Values)
{
if (GameData.availableResearch[item.Research].state != ResearchState.RESEARCHED) continue;
options.AddItem(item.GetReadableName());
}
if (selectedItem != null)
{
for (int i = 0; i < options.ItemCount; i++)
{
if (ItemData.GetIndex(options.GetItemText(i).Split(":")[0]) == selectedItem.data.Id)
{
options.Select(i);
break;
}
}
}
OptionButton comparators = display.GetNode<OptionButton>("./EditorDisplay/VBoxContainer/Values/Comparator");
if (comparator != null)
{
for (int i = 0; i < comparators.ItemCount; i++)
{
if (comparators.GetItemText(i) == comparator)
{
comparators.Select(i);
break;
}
}
}
}
public override string Save()
{
return $"Name: {DisplayText}, Item: {(selectedItem == null ? "Empty" : selectedItem.data.Id)}, Comparator: {comparator}, Amount: {amount}";