Added load mechanic to temporary scripts to allow the player modifications to it.

This commit is contained in:
2026-05-11 22:00:48 +02:00
parent 4dc8ffe55a
commit d5e907a8b8
2 changed files with 46 additions and 1 deletions
+1 -1
View File
@@ -12,8 +12,8 @@ public partial class Robot : Node3D
private const float MaintenanceLossPerSecond = 0.025f;
private bool isExecuting = false;
private ProgramNode currentNode;
public ProgramNode currentNode;
public string currentProgram;
public string currentMessage = "";
public float heat = 0f;
+45
View File
@@ -34,6 +34,7 @@ public partial class CodingWindow : PanelContainer
nameInput.Text = robot.Name;
SetupScriptOptions();
ClearWindow();
LoadTemporaryProgram();
}
private void SetupScriptOptions()
@@ -162,6 +163,50 @@ public partial class CodingWindow : PanelContainer
availableScripts.Select(0);
}
public void LoadTemporaryProgram()
{
if (robot == null) return;
if (robot.currentNode == null) return;
ProgramNode firstNode = robot.currentNode;
while (firstNode.previousNode != null)
{
firstNode = firstNode.previousNode;
}
HashSet<ProgramNode> loadedNodes = new HashSet<ProgramNode>();
ProgramNode nodeToLoad = firstNode;
while (nodeToLoad != null && !loadedNodes.Contains(nodeToLoad))
{
loadedNodes.Add(nodeToLoad);
NodeDisplay nodeDisplay = NodeDisplay.Load(nodeToLoad.Save(), DSLNodes);
if (nodeDisplay != null)
{
editorWindow.AddChild(nodeDisplay);
nodeDisplay.ShowEditorDisplay();
nodeDisplay.OnDeleteNode += () =>
{
editorWindow.RemoveChild(nodeDisplay);
nodeDisplay.QueueFree();
};
nodeDisplay.OnMoveNode += (int direction) =>
{
int targetIndex = Mathf.Clamp(
nodeDisplay.GetIndex() + direction,
0,
editorWindow.GetChildCount() - 1
);
editorWindow.MoveChild(nodeDisplay, targetIndex);
};
}
nodeToLoad = nodeToLoad.nextNode;
}
scriptName.Text = robot.currentProgram ?? "";
}
public void DeleteProgram()
{
string filename = scriptName.Text;