restree leftovers

This commit is contained in:
bird_egop
2026-05-09 18:39:26 +03:00
parent 8091a727ba
commit d73a6dde70
5 changed files with 169 additions and 74 deletions
+20 -16
View File
@@ -1,18 +1,22 @@
namespace ResTreeLib;
// Result DTO for easier use
namespace ResTreeLib;
// TRF0 node payload (40 bytes).
// Field naming for the first 16 bytes is based on empirical checks over the mission .trf set.
// ResearchCost/ResearchTime look gameplay-related (strong mutual correlation and upgrade-level scaling).
// ViewPosX/ViewPosY behave like 2D layout coordinates; very large Y outliers are mostly unnamed/off-screen nodes.
public record Trf0Element
{
public float ResearchCost; // field_0
public float ResearchTime; // field_4
public float ViewPosX; // field_8
public float ViewPosY; // field_12
public uint OffsetShortName_TRF7; // offset_into_TRF7
public uint OffsetLongName_TRF8; // offset_into_TRF8
public uint OffsetHelpText_TRF9; // offset_into_TRF9
public uint OffsetDescription_TRFA; // offset_into_TRFA
public ushort OffsetAux_TRFB; // offset_into_TRFB
public float ResearchCost; // 0..45 in sample files
public float ResearchTime; // 0..150 in sample files
public float ViewPosX; // 0..80 in sample files
public float ViewPosY; // 0..1500 in sample files
public uint OffsetShortName_TRF7;
public uint OffsetLongName_TRF8;
public uint OffsetHelpText_TRF9;
public uint OffsetDescription_TRFA;
public ushort OffsetAux_TRFB;
public byte TurretType;
public byte MainType;
public byte SubType;
@@ -24,8 +28,8 @@ public record Trf0Element
[Flags]
public enum NodeState : byte
{
Hidden = 0,
Available = 1 << 0, // 0x01
Hidden = 0,
Available = 1 << 0, // 0x01
Researched = 1 << 1, // 0x02
Active = 1 << 2 // 0x04 - If not set, node is disabled
}
Active = 1 << 2 // 0x04: if not set, node is disabled
}