using GeometryTD.Definition; using GeometryTD.Procedure; namespace GeometryTD.UI { public sealed partial class NodeMapFormController { private static NodeMapFormContext BuildContext(NodeMapFormRawData rawData) { NodeItemContext[] nodeItemContexts = System.Array.Empty(); if (rawData?.Nodes != null && rawData.Nodes.Count > 0) { nodeItemContexts = new NodeItemContext[rawData.Nodes.Count]; for (int i = 0; i < rawData.Nodes.Count; i++) { NodeMapNodeRawData node = rawData.Nodes[i]; nodeItemContexts[i] = new NodeItemContext { NodeId = node?.NodeId ?? 0, SequenceIndex = node?.SequenceIndex ?? i, NodeType = node?.NodeType ?? RunNodeType.None, IsLocked = node != null && node.Status == RunNodeStatus.Locked, IsCurrent = node != null && node.IsCurrentNode, IsCompleted = node != null && node.Status == RunNodeStatus.Completed, IsException = node != null && node.Status == RunNodeStatus.Exception, CanClick = node != null && node.CanEnter }; } } return new NodeMapFormContext { Title = rawData?.Title ?? "节点地图", ProgressText = rawData?.ProgressText ?? "0 / 0", CurrentNodeText = rawData?.CurrentNodeText ?? "当前节点: 无", IsRunCompleted = rawData != null && rawData.IsRunCompleted, NodeItems = nodeItemContexts }; } } }