using System.Collections.Generic; using System.IO; using Nebula.Launcher.Utils; using Robust.LoaderApi; namespace Nebula.Launcher.FileApis; public class HashApi : IFileApi { private readonly IFileApi _fileApi; public Dictionary Manifest; public HashApi(List manifest, IFileApi fileApi) { _fileApi = fileApi; Manifest = new Dictionary(); foreach (var item in manifest) Manifest.TryAdd(item.Path, item); } public bool TryOpen(string path, out Stream? stream) { if (path[0] == '/') path = path.Substring(1); if (Manifest.TryGetValue(path, out var a) && _fileApi.TryOpen(a.Hash, out stream)) return true; stream = null; return false; } public IEnumerable AllFiles => Manifest.Keys; }