using System; using System.Collections.Generic; using System.Threading.Tasks; using Godot; public partial class Robot : Node3D { List nodes; bool isExecuting = false; ProgramNode currentNode; public override void _Ready() { } public override void _Process(double delta) { if (isExecuting) { switch (currentNode.Execute(this, delta)) { case NodeResult.SUCCESS: currentNode = currentNode.nextNode; if (currentNode == null) { isExecuting = false; } break; case NodeResult.FAILURE: isExecuting = false; GD.Print(currentNode.lastExecutionMessage); break; case NodeResult.RUNNING: //Currently does nothing. break; } } Visible = Math.Round(Math.Abs(Position.Y / GameData.tileHeight), 0) == GameData.visibleLayer; } public void Move() { } public void SetupExecution(List nodes) { this.nodes = [.. nodes]; isExecuting = true; currentNode = nodes[0]; } }