Big project cleanup with overhaul of file responsibilities (KISS) and code (DRY, YAGNI)

This commit is contained in:
2026-05-14 11:17:02 +02:00
parent bd6cdeb97b
commit 300c8f5a42
54 changed files with 2030 additions and 1745 deletions
@@ -0,0 +1,65 @@
using Godot;
using System;
using System.Collections.Generic;
public class RunningProgramGraphBuilder
{
private readonly Dictionary<ProgramNode, PackedScene> dslNodes;
private readonly Action<NodeDisplay> addNode;
private readonly Action<StringName, int, StringName, int> connectNodes;
public RunningProgramGraphBuilder(
Dictionary<ProgramNode, PackedScene> dslNodes,
Action<NodeDisplay> addNode,
Action<StringName, int, StringName, int> connectNodes
)
{
this.dslNodes = dslNodes;
this.addNode = addNode;
this.connectNodes = connectNodes;
}
public void Load(ProgramNode startNode)
{
Dictionary<ProgramNode, NodeDisplay> loadedNodes =
new Dictionary<ProgramNode, NodeDisplay>();
LoadNode(startNode, loadedNodes);
}
private NodeDisplay LoadNode(
ProgramNode programNode,
Dictionary<ProgramNode, NodeDisplay> loadedNodes
)
{
if (programNode == null) return null;
if (loadedNodes.ContainsKey(programNode)) return loadedNodes[programNode];
NodeDisplay nodeDisplay = NodeDisplay.Load(
programNode.DisplayText,
programNode.Save(),
dslNodes
);
if (nodeDisplay == null) return null;
addNode(nodeDisplay);
loadedNodes.Add(programNode, nodeDisplay);
ConnectNode(nodeDisplay, 0, programNode.nextNode, loadedNodes);
ConnectNode(nodeDisplay, 1, programNode.NegativeNode, loadedNodes);
return nodeDisplay;
}
private void ConnectNode(
NodeDisplay fromDisplay,
int fromPort,
ProgramNode targetNode,
Dictionary<ProgramNode, NodeDisplay> loadedNodes
)
{
NodeDisplay toDisplay = LoadNode(targetNode, loadedNodes);
if (toDisplay == null) return;
connectNodes(fromDisplay.Name, fromPort, toDisplay.Name, 0);
}
}