using Godot; using System.Collections.Generic; public abstract class ProgramNode { public ProgramNode nextNode; public ProgramNode NegativeNode; public string DisplayText; public string lastExecutionMessage; public abstract NodeResult Execute(Robot robot, double delta); public abstract ProgramNode Duplicate(); public abstract string Save(); public virtual void SetNextNode( List connections, Dictionary availableNodes ) { nextNode = null; if (connections.Count <= 0) return; nextNode = GetConnectedNode(connections[0], availableNodes); } protected ProgramNode GetConnectedNode( Godot.Collections.Dictionary connection, Dictionary availableNodes ) { StringName nodeName = connection["to_node"].AsStringName(); if (!availableNodes.ContainsKey(nodeName)) return null; return availableNodes[nodeName]; } }