Added new nodes to DSL for a wider variety of commands and scripts.

This commit is contained in:
2026-05-09 20:12:53 +02:00
parent 8b15027ac1
commit a472adf74b
26 changed files with 797 additions and 21 deletions
+1 -1
View File
@@ -8,7 +8,7 @@ public class Research
public Research(ResearchData data)
{
this.data = data;
state = ResearchState.UNDEFINED;
state = data.Id == "basics" ? ResearchState.RESEARCHED : ResearchState.UNDEFINED;
}
public ResearchResult Execute(double delta)
+47 -1
View File
@@ -36,7 +36,23 @@ public partial class Robot : Node3D
switch (currentNode.Execute(this, delta))
{
case NodeResult.SUCCESS:
currentNode = currentNode.nextNode;
if (currentNode.DisplayText == "Until")
{
while (true)
{
currentNode = currentNode.previousNode;
if (currentNode == null)
{
isExecuting = false;
break;
}
if (currentNode.DisplayText == "For" || currentNode.DisplayText == "While") break;
}
}
else
{
currentNode = currentNode.nextNode;
}
if (currentNode == null)
{
isExecuting = false;
@@ -51,6 +67,36 @@ public partial class Robot : Node3D
case NodeResult.RUNNING:
currentMessage = "";
break;
case NodeResult.CONDITIONFALSE:
string sourceNode = currentNode.DisplayText;
while (true)
{
currentNode = currentNode.nextNode;
if (currentNode == null)
{
isExecuting = false;
break;
}
if (sourceNode == "If")
{
if (currentNode.DisplayText == "If" || currentNode.DisplayText == "Else") break;
}
else
{
if (currentNode.DisplayText == "While" || currentNode.DisplayText == "For" || currentNode.DisplayText == "Until")
{
if (currentNode.nextNode == null)
{
isExecuting = false;
break;
}
currentNode = currentNode.nextNode;
break;
}
}
}
break;
}
}
}