mirror of
https://github.com/bloxstraplabs/bloxstrap.git
synced 2025-04-21 10:01:27 -07:00
Add auto-updating ReShade config
This commit is contained in:
parent
b74f9776b8
commit
c65b43a353
@ -1,16 +1,11 @@
|
|||||||
using System;
|
using System.Diagnostics;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Reflection.Metadata.Ecma335;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.IO.Compression;
|
using System.IO.Compression;
|
||||||
|
|
||||||
using Bloxstrap.Models;
|
using Bloxstrap.Models;
|
||||||
|
|
||||||
using IniParser;
|
using IniParser;
|
||||||
using IniParser.Model;
|
using IniParser.Model;
|
||||||
using System.Diagnostics;
|
|
||||||
|
|
||||||
namespace Bloxstrap.Helpers.Integrations
|
namespace Bloxstrap.Helpers.Integrations
|
||||||
{
|
{
|
||||||
@ -26,109 +21,9 @@ namespace Bloxstrap.Helpers.Integrations
|
|||||||
// and here we're effectively choosing for the user... hm...
|
// and here we're effectively choosing for the user... hm...
|
||||||
// i mean, it should be fine? importing shaders is still gonna be a thing, though maybe not as simple, but most people would be looking to use extravi's presets anyway
|
// i mean, it should be fine? importing shaders is still gonna be a thing, though maybe not as simple, but most people would be looking to use extravi's presets anyway
|
||||||
|
|
||||||
// based on the shaders we have installed, we're gonna have to parse and adjust this... yay.............
|
private static string ShadersFolder { get => Path.Combine(Directories.ReShade, "Shaders"); }
|
||||||
#region Config
|
private static string TexturesFolder { get => Path.Combine(Directories.ReShade, "Textures"); }
|
||||||
private static readonly string StockConfig =
|
private static string ConfigLocation { get => Path.Combine(Directories.Modifications, "ReShade.ini"); }
|
||||||
"[APP]\r\n" +
|
|
||||||
"ForceFullscreen=0\r\n" +
|
|
||||||
"ForceVsync=0\r\n" +
|
|
||||||
"ForceWindowed=0\r\n" +
|
|
||||||
"\r\n" +
|
|
||||||
"[GENERAL]\r\n" +
|
|
||||||
"EffectSearchPaths=..\\..\\ReShade\\Shaders\r\n" +
|
|
||||||
"PerformanceMode=1\r\n" +
|
|
||||||
"PreprocessorDefinitions=RESHADE_DEPTH_LINEARIZATION_FAR_PLANE=1000.0,RESHADE_DEPTH_INPUT_IS_UPSIDE_DOWN=0,RESHADE_DEPTH_INPUT_IS_REVERSED=1,RESHADE_DEPTH_INPUT_IS_LOGARITHMIC=0\r\n" +
|
|
||||||
"PresetPath=..\\..\\ReShade\\Presets\\ReShadePreset.ini\r\n" +
|
|
||||||
"TextureSearchPaths=..\\..\\ReShade\\Textures\r\n" +
|
|
||||||
"\r\n" +
|
|
||||||
"[INPUT]\r\n" +
|
|
||||||
"ForceShortcutModifiers=1\r\n" +
|
|
||||||
"InputProcessing=2\r\n" +
|
|
||||||
"GamepadNavigation=1\r\n" +
|
|
||||||
"KeyEffects=117,0,1,0\r\n" +
|
|
||||||
"KeyNextPreset=0,0,0,0\r\n" +
|
|
||||||
"KeyOverlay=9,0,1,0\r\n" +
|
|
||||||
"KeyPerformanceMode=0,0,0,0\r\n" +
|
|
||||||
"KeyPreviousPreset=0,0,0,0\r\n" +
|
|
||||||
"KeyReload=0,0,0,0\r\n" +
|
|
||||||
"KeyScreenshot=44,0,0,0\r\n" +
|
|
||||||
"\r\n" +
|
|
||||||
"[SCREENSHOT]\r\n" +
|
|
||||||
"SavePath=..\\..\\ReShade\\Screenshots\r\n" +
|
|
||||||
"\r\n" +
|
|
||||||
"[STYLE]\r\n" +
|
|
||||||
"Alpha=1.000000\r\n" +
|
|
||||||
"Border=0.862745,0.862745,0.862745,0.300000\r\n" +
|
|
||||||
"BorderShadow=0.000000,0.000000,0.000000,0.000000\r\n" +
|
|
||||||
"Button=0.156863,0.313726,0.941177,0.440000\r\n" +
|
|
||||||
"ButtonActive=0.156863,0.313726,0.941177,1.000000\r\n" +
|
|
||||||
"ButtonHovered=0.156863,0.313726,0.941177,0.860000\r\n" +
|
|
||||||
"CheckMark=0.156863,0.313726,0.941177,0.800000\r\n" +
|
|
||||||
"ChildBg=0.109804,0.109804,0.109804,0.000000\r\n" +
|
|
||||||
"ChildRounding=6.000000\r\n" +
|
|
||||||
"ColFPSText=1.000000,1.000000,0.784314,1.000000\r\n" +
|
|
||||||
"DockingEmptyBg=0.200000,0.200000,0.200000,1.000000\r\n" +
|
|
||||||
"DockingPreview=0.156863,0.313726,0.941177,0.532000\r\n" +
|
|
||||||
"DragDropTarget=1.000000,1.000000,0.000000,0.900000\r\n" +
|
|
||||||
"EditorFont=..\\..\\ReShade\\Fonts\\Hack-Regular.ttf\r\n" +
|
|
||||||
"EditorFontSize=18\r\n" +
|
|
||||||
"EditorStyleIndex=0\r\n" +
|
|
||||||
"Font=..\\..\\ReShade\\Fonts\\NunitoSans-Regular.ttf\r\n" +
|
|
||||||
"FontSize=18\r\n" +
|
|
||||||
"FPSScale=1.000000\r\n" +
|
|
||||||
"FrameBg=0.109804,0.109804,0.109804,1.000000\r\n" +
|
|
||||||
"FrameBgActive=0.156863,0.313726,0.941177,1.000000\r\n" +
|
|
||||||
"FrameBgHovered=0.156863,0.313726,0.941177,0.680000\r\n" +
|
|
||||||
"FrameRounding=6.000000\r\n" +
|
|
||||||
"GrabRounding=6.000000\r\n" +
|
|
||||||
"Header=0.156863,0.313726,0.941177,0.760000\r\n" +
|
|
||||||
"HeaderActive=0.156863,0.313726,0.941177,1.000000\r\n" +
|
|
||||||
"HeaderHovered=0.156863,0.313726,0.941177,0.860000\r\n" +
|
|
||||||
"MenuBarBg=0.109804,0.109804,0.109804,0.570000\r\n" +
|
|
||||||
"ModalWindowDimBg=0.800000,0.800000,0.800000,0.350000\r\n" +
|
|
||||||
"NavHighlight=0.260000,0.590000,0.980000,1.000000\r\n" +
|
|
||||||
"NavWindowingDimBg=0.800000,0.800000,0.800000,0.200000\r\n" +
|
|
||||||
"NavWindowingHighlight=1.000000,1.000000,1.000000,0.700000\r\n" +
|
|
||||||
"PlotHistogram=0.862745,0.862745,0.862745,0.630000\r\n" +
|
|
||||||
"PlotHistogramHovered=0.156863,0.313726,0.941177,1.000000\r\n" +
|
|
||||||
"PlotLines=0.862745,0.862745,0.862745,0.630000\r\n" +
|
|
||||||
"PlotLinesHovered=0.156863,0.313726,0.941177,1.000000\r\n" +
|
|
||||||
"PopupBg=0.047059,0.047059,0.047059,0.920000\r\n" +
|
|
||||||
"PopupRounding=6.000000\r\n" +
|
|
||||||
"ResizeGrip=0.156863,0.313726,0.941177,0.200000\r\n" +
|
|
||||||
"ResizeGripActive=0.156863,0.313726,0.941177,1.000000\r\n" +
|
|
||||||
"ResizeGripHovered=0.156863,0.313726,0.941177,0.780000\r\n" +
|
|
||||||
"ScrollbarBg=0.109804,0.109804,0.109804,1.000000\r\n" +
|
|
||||||
"ScrollbarGrab=0.156863,0.313726,0.941177,0.310000\r\n" +
|
|
||||||
"ScrollbarGrabActive=0.156863,0.313726,0.941177,1.000000\r\n" +
|
|
||||||
"ScrollbarGrabHovered=0.156863,0.313726,0.941177,0.780000\r\n" +
|
|
||||||
"ScrollbarRounding=6.000000\r\n" +
|
|
||||||
"Separator=0.862745,0.862745,0.862745,0.320000\r\n" +
|
|
||||||
"SeparatorActive=0.862745,0.862745,0.862745,1.000000\r\n" +
|
|
||||||
"SeparatorHovered=0.862745,0.862745,0.862745,0.780000\r\n" +
|
|
||||||
"SliderGrab=0.156863,0.313726,0.941177,0.240000\r\n" +
|
|
||||||
"SliderGrabActive=0.156863,0.313726,0.941177,1.000000\r\n" +
|
|
||||||
"StyleIndex=3\r\n" +
|
|
||||||
"Tab=0.156863,0.313726,0.941177,0.440000\r\n" +
|
|
||||||
"TabActive=0.156863,0.313726,0.941177,1.000000\r\n" +
|
|
||||||
"TabHovered=0.156863,0.313726,0.941177,0.860000\r\n" +
|
|
||||||
"TableBorderLight=0.230000,0.230000,0.250000,1.000000\r\n" +
|
|
||||||
"TableBorderStrong=0.310000,0.310000,0.350000,1.000000\r\n" +
|
|
||||||
"TableHeaderBg=0.190000,0.190000,0.200000,1.000000\r\n" +
|
|
||||||
"TableRowBg=0.000000,0.000000,0.000000,0.000000\r\n" +
|
|
||||||
"TableRowBgAlt=1.000000,1.000000,1.000000,0.060000\r\n" +
|
|
||||||
"TabRounding=6.000000\r\n" +
|
|
||||||
"TabUnfocused=0.156863,0.313726,0.941177,0.448000\r\n" +
|
|
||||||
"TabUnfocusedActive=0.156863,0.313726,0.941177,0.780000\r\n" +
|
|
||||||
"Text=0.862745,0.862745,0.862745,1.000000\r\n" +
|
|
||||||
"TextDisabled=0.862745,0.862745,0.862745,0.580000\r\n" +
|
|
||||||
"TextSelectedBg=0.156863,0.313726,0.941177,0.430000\r\n" +
|
|
||||||
"TitleBg=0.156863,0.313726,0.941177,0.450000\r\n" +
|
|
||||||
"TitleBgActive=0.156863,0.313726,0.941177,0.580000\r\n" +
|
|
||||||
"TitleBgCollapsed=0.156863,0.313726,0.941177,0.350000\r\n" +
|
|
||||||
"WindowBg=0.047059,0.047059,0.047059,1.000000\r\n" +
|
|
||||||
"WindowRounding=6.000000";
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
// this is a list of selectable shaders to download:
|
// this is a list of selectable shaders to download:
|
||||||
// this should be formatted as { FolderName, GithubRepositoryUrl }
|
// this should be formatted as { FolderName, GithubRepositoryUrl }
|
||||||
@ -162,6 +57,49 @@ namespace Bloxstrap.Helpers.Integrations
|
|||||||
return $",..\\..\\ReShade\\{type}\\{name}";
|
return $",..\\..\\ReShade\\{type}\\{name}";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static async Task DownloadConfig()
|
||||||
|
{
|
||||||
|
Debug.WriteLine("[ReShade] Downloading config file...");
|
||||||
|
|
||||||
|
{
|
||||||
|
byte[] bytes = await Program.HttpClient.GetByteArrayAsync("https://github.com/Extravi/extravi.github.io/raw/main/update/config.zip");
|
||||||
|
|
||||||
|
using MemoryStream zipStream = new(bytes);
|
||||||
|
using ZipArchive archive = new(zipStream);
|
||||||
|
|
||||||
|
// when we extract the file we have to make sure the last modified date is overwritten
|
||||||
|
// or else it will synchronize with the config in the version folder
|
||||||
|
archive.Entries.Where(x => x.FullName == "ReShade.ini").First().ExtractToFile(ConfigLocation, true);
|
||||||
|
File.SetLastWriteTime(ConfigLocation, DateTime.Now);
|
||||||
|
|
||||||
|
// we also gotta download the editor fonts
|
||||||
|
foreach (ZipArchiveEntry entry in archive.Entries.Where(x => x.FullName.EndsWith(".ttf")))
|
||||||
|
entry.ExtractToFile(Path.Combine(Directories.ReShade, "Fonts", entry.FullName), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// now we have to adjust the config file to use the paths that we need
|
||||||
|
|
||||||
|
FileIniDataParser parser = new();
|
||||||
|
IniData data = parser.ReadFile(ConfigLocation);
|
||||||
|
|
||||||
|
data["GENERAL"]["EffectSearchPaths"] = "..\\..\\ReShade\\Shaders";
|
||||||
|
data["GENERAL"]["TextureSearchPaths"] = "..\\..\\ReShade\\Textures";
|
||||||
|
data["GENERAL"]["PresetPath"] = data["GENERAL"]["PresetPath"].Replace(".\\reshade-presets\\", "..\\..\\ReShade\\Presets\\");
|
||||||
|
data["SCREENSHOT"]["SavePath"] = "..\\..\\ReShade\\Screenshots";
|
||||||
|
data["STYLE"]["EditorFont"] = data["STYLE"]["EditorFont"].Replace(".\\", "..\\..\\ReShade\\Fonts\\");
|
||||||
|
data["STYLE"]["Font"] = data["STYLE"]["Font"].Replace(".\\", "..\\..\\ReShade\\Fonts\\");
|
||||||
|
|
||||||
|
// add search paths for shaders and textures
|
||||||
|
|
||||||
|
foreach (string name in Directory.GetDirectories(ShadersFolder).Select(x => Path.GetRelativePath(ShadersFolder, x)).ToArray())
|
||||||
|
data["GENERAL"]["EffectSearchPaths"] += GetSearchPath("Shaders", name);
|
||||||
|
|
||||||
|
foreach (string name in Directory.GetDirectories(TexturesFolder).Select(x => Path.GetRelativePath(TexturesFolder, x)).ToArray())
|
||||||
|
data["GENERAL"]["TextureSearchPaths"] += GetSearchPath("Textures", name);
|
||||||
|
|
||||||
|
parser.WriteFile(ConfigLocation, data);
|
||||||
|
}
|
||||||
|
|
||||||
public static void SynchronizeConfigFile()
|
public static void SynchronizeConfigFile()
|
||||||
{
|
{
|
||||||
Debug.WriteLine($"[ReShade] Synchronizing configuration file...");
|
Debug.WriteLine($"[ReShade] Synchronizing configuration file...");
|
||||||
@ -175,7 +113,7 @@ namespace Bloxstrap.Helpers.Integrations
|
|||||||
// anyway, this is where i'm expecting most of the bugs to arise from
|
// anyway, this is where i'm expecting most of the bugs to arise from
|
||||||
// config synchronization will be done whenever roblox updates or whenever we launch roblox
|
// config synchronization will be done whenever roblox updates or whenever we launch roblox
|
||||||
|
|
||||||
string modFolderConfigPath = Path.Combine(Directories.Modifications, "ReShade.ini");
|
string modFolderConfigPath = ConfigLocation;
|
||||||
string versionFolderConfigPath = Path.Combine(Directories.Versions, Program.Settings.VersionGuid, "ReShade.ini");
|
string versionFolderConfigPath = Path.Combine(Directories.Versions, Program.Settings.VersionGuid, "ReShade.ini");
|
||||||
|
|
||||||
// we shouldn't be here if the mod config doesn't already exist
|
// we shouldn't be here if the mod config doesn't already exist
|
||||||
@ -271,7 +209,7 @@ namespace Bloxstrap.Helpers.Integrations
|
|||||||
|
|
||||||
// now we have to update ReShade.ini and add the installed shaders to the search paths
|
// now we have to update ReShade.ini and add the installed shaders to the search paths
|
||||||
FileIniDataParser parser = new();
|
FileIniDataParser parser = new();
|
||||||
IniData data = parser.ReadFile(Path.Combine(Directories.Modifications, "ReShade.ini"));
|
IniData data = parser.ReadFile(ConfigLocation);
|
||||||
|
|
||||||
if (!data["GENERAL"]["EffectSearchPaths"].Contains(name))
|
if (!data["GENERAL"]["EffectSearchPaths"].Contains(name))
|
||||||
data["GENERAL"]["EffectSearchPaths"] += GetSearchPath("Shaders", name);
|
data["GENERAL"]["EffectSearchPaths"] += GetSearchPath("Shaders", name);
|
||||||
@ -280,7 +218,7 @@ namespace Bloxstrap.Helpers.Integrations
|
|||||||
if (Directory.Exists(Path.Combine(Directories.ReShade, "Textures", name)) && !data["GENERAL"]["TextureSearchPaths"].Contains(name))
|
if (Directory.Exists(Path.Combine(Directories.ReShade, "Textures", name)) && !data["GENERAL"]["TextureSearchPaths"].Contains(name))
|
||||||
data["GENERAL"]["TextureSearchPaths"] += GetSearchPath("Textures", name);
|
data["GENERAL"]["TextureSearchPaths"] += GetSearchPath("Textures", name);
|
||||||
|
|
||||||
parser.WriteFile(Path.Combine(Directories.Modifications, "ReShade.ini"), data);
|
parser.WriteFile(ConfigLocation, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DeleteShaders(string name)
|
public static void DeleteShaders(string name)
|
||||||
@ -296,31 +234,29 @@ namespace Bloxstrap.Helpers.Integrations
|
|||||||
if (Directory.Exists(texturesPath))
|
if (Directory.Exists(texturesPath))
|
||||||
Directory.Delete(texturesPath, true);
|
Directory.Delete(texturesPath, true);
|
||||||
|
|
||||||
string configFile = Path.Combine(Directories.Modifications, "ReShade.ini");
|
if (!File.Exists(ConfigLocation))
|
||||||
|
|
||||||
if (!File.Exists(configFile))
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// now we have to update ReShade.ini and remove the installed shaders from the search paths
|
// now we have to update ReShade.ini and remove the installed shaders from the search paths
|
||||||
FileIniDataParser parser = new();
|
FileIniDataParser parser = new();
|
||||||
IniData data = parser.ReadFile(configFile);
|
IniData data = parser.ReadFile(ConfigLocation);
|
||||||
|
|
||||||
string configShaderSearchPaths = data["GENERAL"]["EffectSearchPaths"];
|
string shaderSearchPaths = data["GENERAL"]["EffectSearchPaths"];
|
||||||
string configTextureSearchPaths = data["GENERAL"]["TextureSearchPaths"];
|
string textureSearchPaths = data["GENERAL"]["TextureSearchPaths"];
|
||||||
|
|
||||||
if (configShaderSearchPaths.Contains(name))
|
if (shaderSearchPaths.Contains(name))
|
||||||
{
|
{
|
||||||
string searchPath = GetSearchPath("Shaders", name);
|
string searchPath = GetSearchPath("Shaders", name);
|
||||||
data["GENERAL"]["EffectSearchPaths"] = configShaderSearchPaths.Remove(configShaderSearchPaths.IndexOf(searchPath), searchPath.Length);
|
data["GENERAL"]["EffectSearchPaths"] = shaderSearchPaths.Remove(shaderSearchPaths.IndexOf(searchPath), searchPath.Length);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (configTextureSearchPaths.Contains(name))
|
if (textureSearchPaths.Contains(name))
|
||||||
{
|
{
|
||||||
string searchPath = GetSearchPath("Textures", name);
|
string searchPath = GetSearchPath("Textures", name);
|
||||||
data["GENERAL"]["TextureSearchPaths"] = configTextureSearchPaths.Remove(configTextureSearchPaths.IndexOf(searchPath), searchPath.Length);
|
data["GENERAL"]["TextureSearchPaths"] = textureSearchPaths.Remove(textureSearchPaths.IndexOf(searchPath), searchPath.Length);
|
||||||
}
|
}
|
||||||
|
|
||||||
parser.WriteFile(configFile, data);
|
parser.WriteFile(ConfigLocation, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task InstallExtraviPresets()
|
public static async Task InstallExtraviPresets()
|
||||||
@ -368,7 +304,6 @@ namespace Bloxstrap.Helpers.Integrations
|
|||||||
Debug.WriteLine("[ReShade] Checking ReShade modifications... ");
|
Debug.WriteLine("[ReShade] Checking ReShade modifications... ");
|
||||||
|
|
||||||
string injectorLocation = Path.Combine(Directories.Modifications, "dxgi.dll");
|
string injectorLocation = Path.Combine(Directories.Modifications, "dxgi.dll");
|
||||||
string configLocation = Path.Combine(Directories.Modifications, "ReShade.ini");
|
|
||||||
|
|
||||||
// initialize directories
|
// initialize directories
|
||||||
Directory.CreateDirectory(Directories.ReShade);
|
Directory.CreateDirectory(Directories.ReShade);
|
||||||
@ -393,8 +328,8 @@ namespace Bloxstrap.Helpers.Integrations
|
|||||||
if (File.Exists(injectorLocation))
|
if (File.Exists(injectorLocation))
|
||||||
File.Delete(injectorLocation);
|
File.Delete(injectorLocation);
|
||||||
|
|
||||||
if (File.Exists(configLocation))
|
if (File.Exists(ConfigLocation))
|
||||||
File.Delete(configLocation);
|
File.Delete(ConfigLocation);
|
||||||
|
|
||||||
DeleteShaders("Stock");
|
DeleteShaders("Stock");
|
||||||
|
|
||||||
@ -404,6 +339,7 @@ namespace Bloxstrap.Helpers.Integrations
|
|||||||
// the version manfiest contains the version of reshade available for download and the last date the presets were updated
|
// the version manfiest contains the version of reshade available for download and the last date the presets were updated
|
||||||
var versionManifest = await Utilities.GetJson<ReShadeVersionManifest>("https://raw.githubusercontent.com/Extravi/extravi.github.io/main/update/version.json");
|
var versionManifest = await Utilities.GetJson<ReShadeVersionManifest>("https://raw.githubusercontent.com/Extravi/extravi.github.io/main/update/version.json");
|
||||||
bool shouldFetchReShade = false;
|
bool shouldFetchReShade = false;
|
||||||
|
bool shouldFetchConfig = false;
|
||||||
|
|
||||||
if (!File.Exists(injectorLocation))
|
if (!File.Exists(injectorLocation))
|
||||||
{
|
{
|
||||||
@ -418,6 +354,15 @@ namespace Bloxstrap.Helpers.Integrations
|
|||||||
shouldFetchReShade = true;
|
shouldFetchReShade = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!File.Exists(ConfigLocation))
|
||||||
|
{
|
||||||
|
shouldFetchConfig = true;
|
||||||
|
}
|
||||||
|
else if (versionManifest is not null)
|
||||||
|
{
|
||||||
|
// todo: add config update checking here
|
||||||
|
}
|
||||||
|
|
||||||
if (shouldFetchReShade)
|
if (shouldFetchReShade)
|
||||||
{
|
{
|
||||||
Debug.WriteLine("[ReShade] Installing ReShade...");
|
Debug.WriteLine("[ReShade] Installing ReShade...");
|
||||||
@ -428,23 +373,10 @@ namespace Bloxstrap.Helpers.Integrations
|
|||||||
using ZipArchive archive = new(zipStream);
|
using ZipArchive archive = new(zipStream);
|
||||||
archive.ExtractToDirectory(Directories.Modifications, true);
|
archive.ExtractToDirectory(Directories.Modifications, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// we also gotta download the editor fonts
|
|
||||||
if (Utilities.IsDirectoryEmpty(Path.Combine(Directories.ReShade, "Fonts")))
|
|
||||||
{
|
|
||||||
byte[] bytes = await Program.HttpClient.GetByteArrayAsync("https://github.com/Extravi/extravi.github.io/raw/main/update/config.zip");
|
|
||||||
|
|
||||||
using MemoryStream zipStream = new(bytes);
|
|
||||||
using ZipArchive archive = new(zipStream);
|
|
||||||
|
|
||||||
foreach (ZipArchiveEntry entry in archive.Entries.Where(x => x.FullName.EndsWith(".ttf")))
|
|
||||||
entry.ExtractToFile(Path.Combine(Directories.ReShade, "Fonts", entry.FullName));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// and write the stock config if we need to
|
if (shouldFetchConfig)
|
||||||
if (!File.Exists(configLocation))
|
await DownloadConfig();
|
||||||
await File.WriteAllTextAsync(configLocation, StockConfig);
|
|
||||||
|
|
||||||
await DownloadShaders("Stock");
|
await DownloadShaders("Stock");
|
||||||
|
|
||||||
|
@ -131,7 +131,7 @@ namespace Bloxstrap
|
|||||||
|
|
||||||
string commandLine = "";
|
string commandLine = "";
|
||||||
|
|
||||||
#if DEBUG
|
#if false//DEBUG
|
||||||
new Preferences().ShowDialog();
|
new Preferences().ShowDialog();
|
||||||
#else
|
#else
|
||||||
if (args.Length > 0)
|
if (args.Length > 0)
|
||||||
|
Loading…
Reference in New Issue
Block a user