using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Bloxstrap.AppData { public abstract class CommonAppData { // in case a new package is added, you can find the corresponding directory // by opening the stock bootstrapper in a hex editor private IReadOnlyDictionary _commonMap { get; } = new Dictionary() { { "Libraries.zip", @"" }, { "redist.zip", @"" }, { "shaders.zip", @"shaders\" }, { "ssl.zip", @"ssl\" }, // the runtime installer is only extracted if it needs installing { "WebView2.zip", @"" }, { "WebView2RuntimeInstaller.zip", @"WebView2RuntimeInstaller\" }, { "content-avatar.zip", @"content\avatar\" }, { "content-configs.zip", @"content\configs\" }, { "content-fonts.zip", @"content\fonts\" }, { "content-sky.zip", @"content\sky\" }, { "content-sounds.zip", @"content\sounds\" }, { "content-textures2.zip", @"content\textures\" }, { "content-models.zip", @"content\models\" }, { "content-textures3.zip", @"PlatformContent\pc\textures\" }, { "content-terrain.zip", @"PlatformContent\pc\terrain\" }, { "content-platform-fonts.zip", @"PlatformContent\pc\fonts\" }, { "extracontent-luapackages.zip", @"ExtraContent\LuaPackages\" }, { "extracontent-translations.zip", @"ExtraContent\translations\" }, { "extracontent-models.zip", @"ExtraContent\models\" }, { "extracontent-textures.zip", @"ExtraContent\textures\" }, { "extracontent-places.zip", @"ExtraContent\places\" }, }; public virtual string ExecutableName { get; } = null!; public virtual string Directory { get; } = null!; public string LockFilePath => Path.Combine(Directory, "Bloxstrap.lock"); public string ExecutablePath => Path.Combine(Directory, ExecutableName); public virtual IReadOnlyDictionary PackageDirectoryMap { get; set; } public CommonAppData() { if (PackageDirectoryMap is null) { PackageDirectoryMap = _commonMap; return; } var merged = new Dictionary(); foreach (var entry in _commonMap) merged[entry.Key] = entry.Value; foreach (var entry in PackageDirectoryMap) merged[entry.Key] = entry.Value; PackageDirectoryMap = merged; } } }