4public sealed class NdsDirectory
7 private IReadOnlyList<NdsDirectory> _directories = Array.Empty<NdsDirectory>();
9 private IReadOnlyList<NdsFile> _files = Array.Empty<
NdsFile>();
16 internal NdsDirectory(ushort
id,
string name,
string fullPath, NdsDirectory? parent)
25 public ushort
Id {
get; }
28 public string Name {
get; }
37 public IReadOnlyList<NdsDirectory>
Directories => _directories;
40 public IReadOnlyList<NdsFile>
Files => _files;
47 foreach (
NdsFile file
in _files)
54 foreach (NdsDirectory directory
in _directories)
69 foreach (NdsDirectory directory
in _directories)
71 yield
return directory;
74 foreach (NdsDirectory descendant
in directory.EnumerateDirectories())
76 yield
return descendant;
85 internal void SetChildren(IReadOnlyList<NdsDirectory> directories, IReadOnlyList<NdsFile> files)
87 _directories = directories;
IReadOnlyList< NdsFile > Files
Gets immediate child files in FNT order.
IEnumerable< NdsFile > EnumerateFiles(bool recursive=true)
Walks named payloads in encoded depth-first order without allocating a flattened collection.
IEnumerable< NdsDirectory > EnumerateDirectories(bool recursive=true)
Walks child directory nodes in encoded depth-first order while excluding the current node.
IReadOnlyList< NdsDirectory > Directories
Gets immediate child directories in FNT order.
string Name
Gets the byte-preserving Latin-1 name projection, or an empty string for the synthetic root.
string FullPath
Uses ordinal slash-separated semantics and represents the root with exactly /.
ushort Id
Combines the 0xF000 directory tag with the main-table record index in its low 12 bits.
NdsDirectory? Parent
Gets the parent, or null for the root.
Connects a byte-preserving FNT path and stable FAT identifier to lazily read cartridge bytes.