namespace ResTreeLib; public record ResearchNodeData { public int Index { get; init; } public Trf0Element Node { get; init; } = null!; public NodeState State { get; init; } // From TRF1 public string ShortName { get; set; } = ""; public string LongName { get; init; } = ""; public string HelpText { get; set; } = ""; public string Description { get; init; } = ""; /// /// These IDs define what technologies a player must complete before the current node becomes available for research. /// These are derived from TRF2 (which stores the count of parents) and TRF3 (which contains the flat list of parent IDs). /// /// /// If Flamethrower Mk II has PrerequisiteIds = [18], then the node with index 18 (Flamethrower Mk I) must be finished first. /// public uint[] PrerequisiteIds { get; init; } = []; // From TRF2/3 /// /// These IDs define the immediate "downstream" effects or technologies that are triggered when the current research is finished. /// These are derived from TRF4 (the count of unlocks) and TRF5 (the flat list of target IDs). /// public uint[] UnlockIds { get; init; } = []; // From TRF4/5 }