Merge branch 'master' into playlists

This commit is contained in:
Assistant 2020-05-17 19:14:34 -06:00
commit b4583a3530
17 changed files with 546 additions and 98 deletions

View file

@ -47,6 +47,9 @@
<setting name="SelectedTheme" serializeAs="String">
<value />
</setting>
<setting name="ReinstallInstalled" serializeAs="String">
<value>True</value>
</setting>
</ModAssistant.Properties.Settings>
<ModAssistant.Settings1>
<setting name="InstallFolder" serializeAs="String">

View file

@ -28,6 +28,8 @@
<ResourceDictionary x:Name="GridViewColumnHeader_Style" Source="Styles/GridViewColumnHeader.xaml" />
<ResourceDictionary x:Name="ListView_Style" Source="Styles/ListView.xaml" />
<ResourceDictionary x:Name="ListViewItem_Style" Source="Styles/ListViewItem.xaml" />
<ResourceDictionary x:Name="Menu_Style" Source="Styles/Menu.xaml" />
<ResourceDictionary x:Name="MenuItem_Style" Source="Styles/MenuItem.xaml" />
<ResourceDictionary x:Name="CheckBox_Style" Source="Styles/CheckBox.xaml" />
<ResourceDictionary x:Name="ComboBoxItem_Style" Source="Styles/ComboBoxItem.xaml" />
<ResourceDictionary x:Name="ComboBox_Style" Source="Styles/ComboBox.xaml" />

View file

@ -20,8 +20,11 @@ namespace ModAssistant
public static bool SaveModSelection;
public static bool CheckInstalledMods;
public static bool SelectInstalledMods;
public static bool ReinstallInstalledMods;
public static string Version = Assembly.GetExecutingAssembly().GetName().Version.ToString();
public static List<string> SavedMods = ModAssistant.Properties.Settings.Default.SavedMods.Split(',').ToList();
public static bool Update = true;
public static bool GUI = true;
private async void Application_Startup(object sender, StartupEventArgs e)
@ -64,69 +67,113 @@ namespace ModAssistant
SaveModSelection = ModAssistant.Properties.Settings.Default.SaveSelected;
CheckInstalledMods = ModAssistant.Properties.Settings.Default.CheckInstalled;
SelectInstalledMods = ModAssistant.Properties.Settings.Default.SelectInstalled;
ReinstallInstalledMods = ModAssistant.Properties.Settings.Default.ReinstallInstalled;
if (e.Args.Length == 0)
await ArgumentHandler(e.Args);
await Init(Update, GUI);
}
private async Task Init(bool Update, bool GUI)
{
if (Update)
{
await Task.Run(async () => await Updater.Run());
}
if (GUI)
{
MainWindow window = new MainWindow();
window.Show();
}
else
{
await ArgumentHandler(e.Args);
}
}
private async Task ArgumentHandler(string[] args)
{
switch (args[0])
while (args.Length > 0)
{
case "--install":
if (args.Length < 2 || string.IsNullOrEmpty(args[1]))
{
Utils.SendNotify(string.Format((string)Current.FindResource("App:InvalidArgument"), "--install"));
}
else
{
await OneClickInstaller.InstallAsset(args[1]);
}
break;
switch (args[0])
{
case "--install":
if (args.Length < 2 || string.IsNullOrEmpty(args[1]))
{
Utils.SendNotify(string.Format((string)Current.FindResource("App:InvalidArgument"), "--install"));
}
else
{
await OneClickInstaller.InstallAsset(args[1]);
}
case "--no-update":
MainWindow window = new MainWindow();
window.Show();
break;
Update = false;
GUI = false;
args = Shift(args, 2);
break;
case "--register":
if (args.Length < 2 || string.IsNullOrEmpty(args[1]))
{
Utils.SendNotify(string.Format((string)Current.FindResource("App:InvalidArgument"), "--register"));
}
else
{
OneClickInstaller.Register(args[1], true);
}
case "--no-update":
Update = false;
args = Shift(args);
break;
break;
case "--language":
if (args.Length < 2 || string.IsNullOrEmpty(args[1]))
{
Utils.SendNotify(string.Format((string)Current.FindResource("App:InvalidArgument"), "--language"));
}
else
{
LoadLanguage(args[1]);
}
case "--unregister":
if (args.Length < 2 || string.IsNullOrEmpty(args[1]))
{
Utils.SendNotify(string.Format((string)Current.FindResource("App:InvalidArgument"), "--unregister"));
}
else
{
OneClickInstaller.Unregister(args[1], true);
}
break;
args = Shift(args, 2);
break;
default:
Utils.SendNotify((string)Current.FindResource("App:UnrecognizedArgument"));
break;
case "--register":
if (args.Length < 2 || string.IsNullOrEmpty(args[1]))
{
Utils.SendNotify(string.Format((string)Current.FindResource("App:InvalidArgument"), "--register"));
}
else
{
OneClickInstaller.Register(args[1], true);
}
Update = false;
GUI = false;
args = Shift(args, 2);
break;
case "--unregister":
if (args.Length < 2 || string.IsNullOrEmpty(args[1]))
{
Utils.SendNotify(string.Format((string)Current.FindResource("App:InvalidArgument"), "--unregister"));
}
else
{
OneClickInstaller.Unregister(args[1], true);
}
Update = false;
GUI = false;
args = Shift(args, 2);
break;
default:
Utils.SendNotify((string)Current.FindResource("App:UnrecognizedArgument"));
args = Shift(args);
break;
}
}
}
private static string[] Shift(string[] array, int places = 1)
{
if (places >= array.Length) return Array.Empty<string>();
string[] newArray = new string[array.Length - places];
for(int i = places; i < array.Length; i++)
{
newArray[i - places] = array[i];
}
Current.Shutdown();
return newArray;
}
private void Application_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)

View file

@ -95,6 +95,7 @@
<sys:String x:Key="Options:SaveSelectedMods">Options:SaveSelectedMods</sys:String>
<sys:String x:Key="Options:CheckInstalledMods">Options:CheckInstalledMods</sys:String>
<sys:String x:Key="Options:SelectInstalledMods">Options:SelectInstalledMods</sys:String>
<sys:String x:Key="Options:ReinstallInstalledMods">Options:Reinstall Installed Mods</sys:String>
<sys:String x:Key="Options:EnableOneClickInstalls">Options:EnableOneClickInstalls</sys:String>
<sys:String x:Key="Options:BeatSaver">Options:BeatSaver</sys:String>
<sys:String x:Key="Options:ModelSaber">Options:ModelSaber</sys:String>
@ -122,6 +123,7 @@
<sys:String x:Key="Options:AllModsUninstalled">Options:AllModsUninstalled</sys:String>
<sys:String x:Key="Options:CurrentThemeRemoved">Options:CurrentThemeRemoved</sys:String>
<sys:String x:Key="Options:ThemeFolderNotFound">Options:ThemeFolderNotFound</sys:String>
<sys:String x:Key="Options:AppDataNotFound">Options:AppDataNotFound</sys:String>
<!-- Loading Page -->
<sys:String x:Key="Loading:Loading">Loading:Loading</sys:String>

View file

@ -135,6 +135,7 @@
<sys:String x:Key="Options:SaveSelectedMods">Save Selected Mods</sys:String>
<sys:String x:Key="Options:CheckInstalledMods">Detect Installed Mods</sys:String>
<sys:String x:Key="Options:SelectInstalledMods">Select Installed Mods</sys:String>
<sys:String x:Key="Options:ReinstallInstalledMods">Reinstall Installed Mods</sys:String>
<sys:String x:Key="Options:EnableOneClickInstalls">Enable OneClick™ Installs</sys:String>
<sys:String x:Key="Options:BeatSaver">BeatSaver</sys:String>
<sys:String x:Key="Options:ModelSaber">ModelSaber</sys:String>
@ -162,6 +163,7 @@
<sys:String x:Key="Options:AllModsUninstalled">All Mods Uninstalled</sys:String>
<sys:String x:Key="Options:CurrentThemeRemoved">Current theme has been removed, reverting to default...</sys:String>
<sys:String x:Key="Options:ThemeFolderNotFound">Themes folder not found! Try exporting the template...</sys:String>
<sys:String x:Key="Options:AppDataNotFound">AppData folder not found! Try launching your game.</sys:String>
<!-- Loading Page -->
<sys:String x:Key="Loading:Loading">Loading Mods</sys:String>

View file

@ -0,0 +1,230 @@
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ModAssistant"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<sys:String x:Key="ResourceDictionaryName">i18n:en-US</sys:String>
<!-- App -->
<sys:String x:Key="App:InstallDirDialog:Title">Beat Saber installatie map niet gevonden!</sys:String>
<sys:String x:Key="App:InstallDirDialog:OkCancel">Klik OK om opnieuw te proberen, of Annuleren om de applicatie af te sluiten.</sys:String>
<sys:String x:Key="App:InvalidArgument">Ongeldig argument! '{0}' heeft een optie nodig.</sys:String>
<sys:String x:Key="App:UnrecognizedArgument">Niet herkend argument. Mod Assistant sluit af.</sys:String>
<sys:String x:Key="App:UnhandledException">Een onverwerkte foutcode is zojuist opgetreden</sys:String>
<sys:String x:Key="App:Exception">Foutcode</sys:String>
<!-- Main Window -->
<sys:String x:Key="MainWindow:WindowTitle">ModAssistant</sys:String>
<sys:String x:Key="MainWindow:IntroButton">Introductie</sys:String>
<sys:String x:Key="MainWindow:ModsButton">Mods</sys:String>
<sys:String x:Key="MainWindow:AboutButton">Over</sys:String>
<sys:String x:Key="MainWindow:OptionsButton">Opties</sys:String>
<sys:String x:Key="MainWindow:GameVersionLabel">Game Versie</sys:String>
<sys:String x:Key="MainWindow:VersionLabel">Versie</sys:String>
<sys:String x:Key="MainWindow:ModInfoButton">Mod Info</sys:String>
<sys:String x:Key="MainWindow:InstallButtonTop">Installeren</sys:String>
<sys:String x:Key="MainWindow:InstallButtonBottom">of Update</sys:String>
<sys:String x:Key="MainWindow:GameVersionLoadFailed">Kan de game versie niet laden, Mods tabblad zal onbeschikbaar zijn.</sys:String>
<sys:String x:Key="MainWindow:GameUpdateDialog:Title">Nieuwe Game Versie Gedetecteerd!</sys:String>
<sys:String x:Key="MainWindow:GameUpdateDialog:Line1">Het lijkt erop dat er een game update is geweest.</sys:String>
<sys:String x:Key="MainWindow:GameUpdateDialog:Line2">Controleer alstublieft of de correcte versie geselecteerd is linksonder in de hoek</sys:String>
<sys:String x:Key="MainWindow:NoModSelected">Geen mod geselecteerd!</sys:String>
<sys:String x:Key="MainWindow:NoModInfoPage">{0} heeft geen info pagina</sys:String>
<!-- Introductie Pagina -->
<sys:String x:Key="Intro:Title">Introductie</sys:String>
<sys:String x:Key="Intro:PageTitle">Welkom bij Mod Assistant</sys:String>
<sys:String x:Key="Intro:Terms:Header">Lees deze pagina alstublieft volledig en aandachtig</sys:String>
<Span x:Key="Intro:Terms:Line1">
Door het gebruiken van dit programma verlkaar ik de volgende voorwaarden te hebben gelezen en hier mee akkoord te gaan:
</Span>
<Span x:Key="Intro:Terms:Line2">
Beat Saber
Ondersteund mods <Bold>niet</Bold> van zichzelf, dit betekent dat:
</Span>
<Span x:Key="Intro:Terms:Term1">
Mods
Elke update <Bold>niet meer werken</Bold>, dit is normaal en <Bold>niet</Bold> de fout van Beat Games.
</Span>
<Span x:Key="Intro:Terms:Term2">
Mods
<Bold>zullen</Bold> bugs en prestatievermindering veroorzaken. Dit is <Bold>niet</Bold> een fout van Beat Games.
</Span>
<Span x:Key="Intro:Terms:Term3">
Mods worden
<Bold>gratis</Bold> gemaakt door mensen in hun
<Bold>vrije tijd.</Bold> Wees alstublieft geduldig en begripvol.
</Span>
<Span x:Key="Intro:ReviewsBeatGamesFault">
Laat <Bold>GEEN</Bold> negatieve beoordelingen achter op beat saber omdat mods niet meer werken. Dit is
<Bold>niet</Bold> de fout van Beat Games.
<LineBreak/> Ze proberen niet mods ontoegankelijk te maken.
</Span>
<Span x:Key="Intro:ReviewsRustySpoon">
Als ik blijf zien dat mensen negatieve reviews achterlaten
<Italic>omdat</Italic> mods niet meer werken,
<LineBreak/>
<Bold>zal ik persoonlijk met een roestige lepel mods niet meer laten werken</Bold>
</Span>
<Span x:Key="Intro:WikiGuide">
Lees alstublieft de 'Beginners Guide' op de wiki
<Hyperlink local:HyperlinkExtensions.IsExternal="True" NavigateUri="https://bsmg.wiki/pc-modding.html">
Wiki
</Hyperlink>. (engels)
</Span>
<sys:String x:Key="Intro:AgreeButton">Accepteer</sys:String>
<sys:String x:Key="Intro:DisagreeButton">Accepteer niet</sys:String>
<sys:String x:Key="Intro:ClosingApp">Sluit applicatie af: U accepteerde de voorwaarden niet.</sys:String>
<sys:String x:Key="Intro:VersionDownloadFailed">Kon de versie lijst niet downloaden</sys:String>
<sys:String x:Key="Intro:ModsTabDisabled">Mods tabblad uitgeschakeld. Herstart het programma om opnieuw te proberen.</sys:String>
<sys:String x:Key="Intro:ModsTabEnabled">U kan nu het mods tabblad gebruiken!</sys:String>
<!-- Mods Page -->
<sys:String x:Key="Mods:Title">Mods</sys:String>
<sys:String x:Key="Mods:Header:Name">Naam</sys:String>
<sys:String x:Key="Mods:Header:Installed">Geïnstalleerd</sys:String>
<sys:String x:Key="Mods:Header:Latest">Recentst</sys:String>
<sys:String x:Key="Mods:Header:Description">Beschrijving</sys:String>
<sys:String x:Key="Mods:Header:Uninstall">Deïnstalleer</sys:String>
<sys:String x:Key="Mods:UninstallButton">Deïnstalleer</sys:String>
<sys:String x:Key="Mods:LoadFailed">Kon de mod lijst niet laden</sys:String>
<sys:String x:Key="Mods:CheckingInstalledMods">Geïnstalleerde mods controleren</sys:String>
<sys:String x:Key="Mods:LoadingMods">Mods Laden</sys:String>
<sys:String x:Key="Mods:FinishedLoadingMods">Klaar met mods laden</sys:String>
<sys:String x:Key="Mods:InstallingMod">{0} wordt geïnstalleerd</sys:String>
<sys:String x:Key="Mods:InstalledMod">{0} is geïnstalleerd</sys:String>
<sys:String x:Key="Mods:FinishedInstallingMods">Klaar met mods installeren</sys:String>
<sys:String x:Key="Mods:ModDownloadLinkMissing">Kon de download link voor {0} niet vinden</sys:String>
<sys:String x:Key="Mods:UninstallBox:Title">{0} deïnstalleren?</sys:String>
<sys:String x:Key="Mods:UninstallBox:Body1"> Weet U zeker dat U {0} wilt verwijderen?</sys:String>
<sys:String x:Key="Mods:UninstallBox:Body2">Dit zou uw andere mods niet meer kunnen laten werken</sys:String>
<sys:String x:Key="Mods:FailedExtract">Kon {0} niet extracten, probeer opniew over {1} seconden. ({2}/{3})</sys:String>
<sys:String x:Key="Mods:FailedExtractMaxReached">Kon {0} niet extracten na maximaal aantal pogingen ({1}), Overslaan. Deze mod werkt msischien niet goed dus ga verder op eigen risico</sys:String>
<!-- About Page -->
<sys:String x:Key="About:Title">Over</sys:String>
<sys:String x:Key="About:PageTitle">Over Mod Assistant</sys:String>
<sys:String x:Key="About:List:Header">Ik ben Assistant, en ik heb Mod Assistant gemaakt om te assisteren met mods, met een aantal principes als basis:</sys:String>
<sys:String x:Key="About:List:Item1">Eenvoud</sys:String>
<sys:String x:Key="About:List:Item2">Draagbaarheid</sys:String>
<sys:String x:Key="About:List:Item3">Één enkel uitvoerbaar bestand</sys:String>
<sys:String x:Key="About:List:Item4">Verantwoordelijk gebruik</sys:String>
<Span x:Key="About:SupportAssistant">
Als U dit programma nuttig vind en mij graag wilt steunen, ga dan naar mijn
<Hyperlink local:HyperlinkExtensions.IsExternal="True" NavigateUri="https://bs.assistant.moe/Donate/">
donatie pagina
</Hyperlink>
of mijn
<Hyperlink local:HyperlinkExtensions.IsExternal="True" NavigateUri="https://www.patreon.com/AssistantMoe">
Patreon
</Hyperlink>
</Span>
<sys:String x:Key="About:SpecialThanks">Bijzondere dank ♥</sys:String>
<sys:String x:Key="About:Donate">Doneer</sys:String>
<sys:String x:Key="About:HeadpatsButton">Tik op hoofd</sys:String>
<sys:String x:Key="About:HugsButton">Knuffels</sys:String>
<!-- Options Page -->
<sys:String x:Key="Options:Title">Opties</sys:String>
<sys:String x:Key="Options:PageTitle">Instellingen</sys:String>
<sys:String x:Key="Options:InstallFolder">Installatie map</sys:String>
<sys:String x:Key="Options:SelectFolderButton">Selecteer map</sys:String>
<sys:String x:Key="Options:OpenFolderButton">Open map</sys:String>
<sys:String x:Key="Options:SaveSelectedMods">Sla geselecteerde mods op</sys:String>
<sys:String x:Key="Options:CheckInstalledMods">Detecteer geïnstalleerde mods</sys:String>
<sys:String x:Key="Options:SelectInstalledMods">Selecteer geïnstalleerde mods</sys:String>
<sys:String x:Key="Options:ReinstallInstalledMods">Geïnstalleerde mods herinstalleren</sys:String>
<sys:String x:Key="Options:EnableOneClickInstalls">Activeer OneClick™ Installaties</sys:String>
<sys:String x:Key="Options:BeatSaver">BeatSaver</sys:String>
<sys:String x:Key="Options:ModelSaber">ModelSaber</sys:String>
<sys:String x:Key="Options:GameType">Game Type</sys:String>
<sys:String x:Key="Options:GameType:Steam">Steam</sys:String>
<sys:String x:Key="Options:GameType:Oculus">Oculus</sys:String>
<sys:String x:Key="Options:Diagnostics">Diagnostiek</sys:String>
<sys:String x:Key="Options:OpenLogsButton">Open Logs</sys:String>
<sys:String x:Key="Options:OpenAppDataButton">Open AppData</sys:String>
<sys:String x:Key="Options:UninstallBSIPAButton">Deïnstalleer BSIPA</sys:String>
<sys:String x:Key="Options:RemoveAllModsButton">Verwijder Alle Mods</sys:String>
<sys:String x:Key="Options:ApplicationTheme">Applicatie thema</sys:String>
<sys:String x:Key="Options:ExportTemplateButton">Exporteer sjabloon</sys:String>
<sys:String x:Key="Options:UploadingLog">Log aan het uploaden</sys:String>
<sys:String x:Key="Options:LogUrlCopied">Log URL gekopieerd naar klembord!</sys:String>
<sys:String x:Key="Options:LogUploadFailed">Log Upload Mislukt</sys:String>
<sys:String x:Key="Options:LogUploadFailed:Title">Log upload mislukt!</sys:String>
<sys:String x:Key="Options:LogUploadFailed:Body">Kon het log bestand niet uploaden naar teknik, probeer alstublieft opnieuw of upload handmatig.</sys:String>
<sys:String x:Key="Options:GettingModList">Mod Lijst Ophalen</sys:String>
<sys:String x:Key="Options:FindingBSIPAVersion">BSIPA versie vinden</sys:String>
<sys:String x:Key="Options:BSIPAUninstalled">BSIPA Gedeïnstalleerd</sys:String>
<sys:String x:Key="Options:YeetModsBox:Title">Deïnstalleer ALLE mods?</sys:String>
<sys:String x:Key="Options:YeetModsBox:RemoveAllMods">Weet U zeker dat U ALLE mods wilt deïnstalleren?</sys:String>
<sys:String x:Key="Options:YeetModsBox:CannotBeUndone">Dit kan niet ongedaan gemaakt worden.</sys:String>
<sys:String x:Key="Options:AllModsUninstalled">Alle mods gedeïnstalleerd</sys:String>
<sys:String x:Key="Options:CurrentThemeRemoved">Huidig thema is verwijderd, terugvallen op standaard...</sys:String>
<sys:String x:Key="Options:ThemeFolderNotFound">Thema map niet gevonden! probeer het sjabloon te exporteren...</sys:String>
<sys:String x:Key="Options:AppDataNotFound">Appdata map niet gevonden! probeer Uw spel te starten.</sys:String>
<!-- Loading Page -->
<sys:String x:Key="Loading:Loading">Mods Laden</sys:String>
<!-- Invalid Page -->
<sys:String x:Key="Invalid:Title">Ongeldig</sys:String>
<sys:String x:Key="Invalid:PageTitle">Ongeldige Installatie Gedetecteerd</sys:String>
<sys:String x:Key="Invalid:PageSubtitle">Uw game installatie is corrupt of ongeldig</sys:String>
<sys:String x:Key="Invalid:List:Header">Dit kan gebeuren als U een gepirateerde versie heeft, of een gepirateerde versie over de legitieme versie heeft gekopieerd</sys:String>
<Span x:Key="Invalid:List:Line1">
Als Uw game versie is gepirateerd,
<Bold>Koop alstublieft de game
<Hyperlink NavigateUri="https://beatgames.com/" local:HyperlinkExtensions.IsExternal="True">
HIER
</Hyperlink>
</Bold>.
</Span>
<Span x:Key="Invalid:List:Line2">
Als Uw game versie
<Bold>niet</Bold> gepirateerd is, doe dan alstublieft
<Hyperlink NavigateUri="https://bsmg.wiki/support#clean-installation" local:HyperlinkExtensions.IsExternal="True">
een "schone" installatie
</Hyperlink>.
</Span>
<Span x:Key="Invalid:List:Line3">
Als dat allebei niet helpt, vraag om hulp in de
<Span Foreground="Blue">#support</Span> channel in
<Hyperlink NavigateUri="https://discord.gg/beatsabermods" local:HyperlinkExtensions.IsExternal="True">
BSMG
</Hyperlink>. (Engels)
</Span>
<sys:String x:Key="Invalid:BoughtGame1">Als U een gepirateerde versie van het spel had maar nu het spel hebt gekocht</sys:String>
<sys:String x:Key="Invalid:SelectFolderButton">Selecteer map</sys:String>
<sys:String x:Key="Invalid:BoughtGame2">Dan moet U Mod Assistant opnieuw starten na het wisselen naar de legitieme installatie</sys:String>
<!-- OneClick Class -->
<sys:String x:Key="OneClick:MapDownloadFailed">Kon de Map details niet vinden.</sys:String>
<sys:String x:Key="OneClick:SongDownloadFailed">Kon het nummer niet downloaden.</sys:String>
<sys:String x:Key="OneClick:SongDownload:Failed">Kon het nummer niet downlaoden.</sys:String>
<sys:String x:Key="OneClick:SongDownload:NetworkIssues">Er kunnen problemen zijn met BeatSaver of Uw internet verbinding.</sys:String>
<sys:String x:Key="OneClick:SongDownload:FailedTitle">Kon de ZIP van het nummer niet downloaden</sys:String>
<sys:String x:Key="OneClick:InstallDirNotFound">Kon het Beat Saber installatie pad niet vinden</sys:String>
<sys:String x:Key="OneClick:InstalledAsset">{0} Geïnstalleerd</sys:String>
<sys:String x:Key="OneClick:AssetInstallFailed">Installatie mislukt</sys:String>
<sys:String x:Key="OneClick:ProtocolHandler:Registered">{0} OneClick™ Installeer afhandelingen geregistreerd!</sys:String>
<sys:String x:Key="OneClick:ProtocolHandler:Unregistered">{0} OneClick™ Install afhandelingen uitgeregistreerd!</sys:String>
<!-- Themes Class -->
<sys:String x:Key="Themes:ThemeNotFound">Thema niet gevonden, terugvallen op standaard thema...</sys:String>
<sys:String x:Key="Themes:ThemeSet">Theme ingesteld op {0}.</sys:String>
<sys:String x:Key="Themes:ThemeMissing">{0} bestaat niet.</sys:String>
<sys:String x:Key="Themes:SavedTemplateTheme">Thema sjabloon &quot;{0}&quot; opgeslagen in de thema map.</sys:String>
<sys:String x:Key="Themes:TemplateThemeExists">Thema sjabloon bestaat al!</sys:String>
<sys:String x:Key="Themes:FailedToLoadXaml">.xaml bestand laden voor {0} mislukt: {1}</sys:String>
<!-- Updater Class -->
<sys:String x:Key="Updater:CheckFailed">Kon niet controleren voor updates</sys:String>
<sys:String x:Key="Updater:DownloadFailed">Kon update niet downloaden</sys:String>
<!-- Utils Class -->
<sys:String x:Key="Utils:NotificationTitle">Mod Assistant</sys:String>
<sys:String x:Key="Utils:NoInstallFolder">Kon Uw Beat Saber installatie map niet vinden. Selecteer deze alstublieft handmatig.</sys:String>
<sys:String x:Key="Utils:RunAsAdmin">Mod Assistant moet deze taak als adminstrator uitvoeren. Probeer alstublieft opnieuw.</sys:String>
<sys:String x:Key="Utils:InstallDir:DialogTitle">Selecteer Uw Beat Saber installatie map</sys:String>
<sys:String x:Key="Utils:CannotOpenFolder">Kan map niet openen: {0}</sys:String>
</ResourceDictionary>

View file

@ -59,7 +59,7 @@
<Span x:Key="Intro:WikiGuide">
<Bold><Span Foreground="Red">请务必阅读</Span>
<Hyperlink local:HyperlinkExtensions.IsExternal="True" NavigateUri="https://bs-wgzeyu.gtxcn.com/">
BS常见问题解答(中文)
BS中文教程及常见问题解答
</Hyperlink>
</Bold>,以及
<Hyperlink local:HyperlinkExtensions.IsExternal="True" NavigateUri="https://bsmg.wiki/pc-modding.html">
@ -127,6 +127,7 @@
<sys:String x:Key="Options:SaveSelectedMods">保存选中的Mod</sys:String>
<sys:String x:Key="Options:CheckInstalledMods">检查已安装的Mod</sys:String>
<sys:String x:Key="Options:SelectInstalledMods">选中已安装的Mod</sys:String>
<sys:String x:Key="Options:ReinstallInstalledMods">重新安装已有Mod</sys:String>
<sys:String x:Key="Options:EnableOneClickInstalls">在以下站点启用OneClick™一键安装</sys:String>
<sys:String x:Key="Options:BeatSaver">BeatSaver</sys:String>
<sys:String x:Key="Options:ModelSaber">ModelSaber</sys:String>
@ -154,6 +155,7 @@
<sys:String x:Key="Options:AllModsUninstalled">已卸载所有Mod</sys:String>
<sys:String x:Key="Options:CurrentThemeRemoved">当前主题已被删除,恢复为默认...</sys:String>
<sys:String x:Key="Options:ThemeFolderNotFound">找不到主题文件夹!请尝试导出模板</sys:String>
<sys:String x:Key="Options:AppDataNotFound">找不到游戏存档路径!请尝试启动游戏后重试。</sys:String>
<!-- Loading Page -->
<sys:String x:Key="Loading:Loading">正在加载Mod...</sys:String>

View file

@ -198,26 +198,31 @@
</StackPanel>
</Button>
<Button
Name="InstallButton"
Grid.Column="2"
Width="100"
<StackPanel
Grid.Column="2" Orientation="Horizontal"
Height="40"
Width="100"
Margin="0,10,0,0"
HorizontalAlignment="Right"
Click="InstallButton_Click"
IsEnabled="False">
<StackPanel>
<TextBlock
HorizontalAlignment="Right">
<Button
Name="InstallButton"
Width="100"
Height="40"
HorizontalAlignment="Right"
Click="InstallButton_Click"
IsEnabled="False">
<StackPanel>
<TextBlock
HorizontalAlignment="Center"
VerticalAlignment="Bottom"
Text="{DynamicResource MainWindow:InstallButtonTop}" />
<TextBlock
<TextBlock
HorizontalAlignment="Center"
VerticalAlignment="Bottom"
Text="{DynamicResource MainWindow:InstallButtonBottom}" />
</StackPanel>
</Button>
</StackPanel>
</Button>
</StackPanel>
</Grid>
</Grid>
</Grid>

View file

@ -102,6 +102,10 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Localisation\nl.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Localisation\zh.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
@ -179,6 +183,14 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Styles\MenuItem.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Styles\Menu.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Styles\RepeatButton.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>

View file

@ -317,7 +317,10 @@ namespace ModAssistant.Pages
foreach (Mod mod in ModsList)
{
// Ignore mods that are newer than installed version
if (mod.ListItem.IsNewerVersionInstalled) continue;
if (mod.ListItem.GetVersionComparison > 0) continue;
// Ignore mods that are on current version if we aren't reinstalling mods
if (mod.ListItem.GetVersionComparison == 0 && !App.ReinstallInstalledMods) continue;
if (mod.name.ToLower() == "bsipa")
{
@ -573,12 +576,13 @@ namespace ModAssistant.Pages
}
}
public bool IsNewerVersionInstalled
public int GetVersionComparison
{
get
{
if (!IsInstalled) return false;
return _installedVersion > ModVersion;
if (!IsInstalled || _installedVersion < ModVersion) return -1;
if (_installedVersion > ModVersion) return 1;
return 0;
}
}

View file

@ -28,6 +28,7 @@
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
@ -71,17 +72,17 @@
<Button
Grid.Row="2"
Grid.Column="2"
Width="93"
Height="30"
Margin="3"
Margin="5"
Padding="5"
Click="SelectDirButton_Click"
Content="{DynamicResource Options:SelectFolderButton}" />
<Button
Grid.Row="2"
Grid.Column="3"
Width="93"
Height="30"
Margin="3"
Margin="5"
Padding="5"
Click="OpenDirButton_Click"
Content="{DynamicResource Options:OpenFolderButton}" />
@ -135,9 +136,26 @@
Checked="SelectInstalled_Checked"
IsChecked="{Binding SelectInstalledMods, Mode=TwoWay}"
Unchecked="SelectInstalled_Unchecked" />
<TextBlock
Grid.Row="6"
Margin="50,5,5,5"
HorizontalAlignment="Left"
FontSize="16"
FontWeight="Bold"
Text="{DynamicResource Options:ReinstallInstalledMods}" />
<CheckBox
Name="ReinstallInstalled"
Grid.Row="6"
Grid.Column="1"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Checked="ReinstallInstalled_Checked"
IsChecked="{Binding ReinstallInstalledMods, Mode=TwoWay}"
Unchecked="ReinstallInstalled_Unchecked" />
<TextBlock
Grid.Row="7"
Margin="5"
HorizontalAlignment="Left"
FontSize="16"
@ -147,7 +165,7 @@
</TextBlock>
<TextBlock
Grid.Row="7"
Grid.Row="8"
Margin="50,5,5,5"
HorizontalAlignment="Left"
FontSize="16"
@ -155,7 +173,7 @@
Text="{DynamicResource Options:BeatSaver}" />
<CheckBox
Name="BeatSaverProtocolHandler"
Grid.Row="7"
Grid.Row="8"
Grid.Column="1"
HorizontalAlignment="Left"
VerticalAlignment="Center"
@ -164,7 +182,7 @@
Unchecked="BeatSaverProtocolHandler_Unchecked" />
<TextBlock
Grid.Row="8"
Grid.Row="9"
Margin="50,5,5,5"
HorizontalAlignment="Left"
FontSize="16"
@ -172,7 +190,7 @@
Text="{DynamicResource Options:ModelSaber}" />
<CheckBox
Name="ModelSaberProtocolHandler"
Grid.Row="8"
Grid.Row="9"
Grid.Column="1"
HorizontalAlignment="Left"
VerticalAlignment="Center"
@ -226,18 +244,18 @@
Name="ApplicationThemeExportTemplate"
Grid.Row="13"
Grid.Column="2"
Width="93"
Height="30"
Margin="3"
Margin="5"
Padding="5"
Click="ApplicationThemeExportTemplate_Click"
Content="{DynamicResource Options:ExportTemplateButton}" />
<Button
Name="ApplicationThemeOpenThemesFolder"
Grid.Row="13"
Grid.Column="3"
Width="93"
Height="30"
Margin="3"
Margin="5"
Padding="5"
Click="ApplicationThemeOpenThemesFolder_Click"
Content="{DynamicResource Options:OpenFolderButton}" />
@ -250,33 +268,34 @@
Text="{DynamicResource Options:Diagnostics}" />
<StackPanel
Grid.Row="15"
Grid.ColumnSpan="4"
Margin="0"
HorizontalAlignment="Left"
Orientation="Horizontal">
<Button
Width="80"
Height="30"
Margin="5"
Padding="5"
Click="OpenLogsDirButton_Click"
Content="{DynamicResource Options:OpenLogsButton}" />
<Button
x:Name="OpenAppData"
Width="100"
Height="30"
Margin="5"
Padding="5"
Click="OpenAppDataButton_Click"
Content="{DynamicResource Options:OpenAppDataButton}" />
<Button
x:Name="YeetBSIPA"
Width="100"
Height="30"
Margin="5"
Padding="5"
Click="YeetBSIPAButton_Click"
Content="{DynamicResource Options:UninstallBSIPAButton}" />
<Button
Width="110"
Height="30"
Margin="5"
Padding="5"
Background="{DynamicResource ButtonDangerBackground}"
Click="YeetModsButton_Click">
<TextBlock Foreground="White" Text="{DynamicResource Options:RemoveAllModsButton}" />

View file

@ -21,6 +21,7 @@ namespace ModAssistant.Pages
public bool SaveSelection { get; set; }
public bool CheckInstalledMods { get; set; }
public bool SelectInstalledMods { get; set; }
public bool ReinstallInstalledMods { get; set; }
public bool ModelSaberProtocolHandlerEnabled { get; set; }
public bool BeatSaverProtocolHandlerEnabled { get; set; }
public string LogURL { get; private set; }
@ -33,8 +34,13 @@ namespace ModAssistant.Pages
SaveSelection = App.SaveModSelection;
CheckInstalledMods = App.CheckInstalledMods;
SelectInstalledMods = App.SelectInstalledMods;
ReinstallInstalledMods = App.ReinstallInstalledMods;
if (!CheckInstalledMods)
{
SelectInstalled.IsEnabled = false;
ReinstallInstalled.IsEnabled = false;
}
UpdateHandlerStatus();
@ -85,6 +91,7 @@ namespace ModAssistant.Pages
CheckInstalledMods = true;
Properties.Settings.Default.Save();
SelectInstalled.IsEnabled = true;
ReinstallInstalled.IsEnabled = true;
if (MainWindow.ModsOpened)
{
@ -99,6 +106,7 @@ namespace ModAssistant.Pages
CheckInstalledMods = false;
Properties.Settings.Default.Save();
SelectInstalled.IsEnabled = false;
ReinstallInstalled.IsEnabled = false;
if (MainWindow.ModsOpened)
{
@ -142,6 +150,22 @@ namespace ModAssistant.Pages
Properties.Settings.Default.Save();
}
private void ReinstallInstalled_Checked(object sender, RoutedEventArgs e)
{
Properties.Settings.Default.ReinstallInstalled = true;
App.ReinstallInstalledMods = true;
ReinstallInstalledMods = true;
Properties.Settings.Default.Save();
}
private void ReinstallInstalled_Unchecked(object sender, RoutedEventArgs e)
{
Properties.Settings.Default.ReinstallInstalled = false;
App.ReinstallInstalledMods = false;
ReinstallInstalledMods = false;
Properties.Settings.Default.Save();
}
private async void OpenLogsDirButton_Click(object sender, RoutedEventArgs e)
{
try
@ -194,7 +218,14 @@ namespace ModAssistant.Pages
string location = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),
"AppData", "LocalLow", "Hyperbolic Magnetism");
Utils.OpenFolder(location);
if (Directory.Exists(location))
{
Utils.OpenFolder(location);
}
else
{
MessageBox.Show((string)Application.Current.FindResource("Options:AppDataNotFound"));
}
}
private async void YeetBSIPAButton_Click(object sender, RoutedEventArgs e)

View file

@ -1,4 +1,4 @@
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
@ -9,20 +9,20 @@
//------------------------------------------------------------------------------
namespace ModAssistant.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.4.0.0")]
public sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
@ -34,7 +34,7 @@ namespace ModAssistant.Properties {
this["InstallFolder"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
@ -46,7 +46,7 @@ namespace ModAssistant.Properties {
this["StoreType"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
@ -58,7 +58,7 @@ namespace ModAssistant.Properties {
this["SaveSelected"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
@ -70,7 +70,7 @@ namespace ModAssistant.Properties {
this["CheckInstalled"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
@ -82,7 +82,7 @@ namespace ModAssistant.Properties {
this["SavedMods"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
@ -94,7 +94,7 @@ namespace ModAssistant.Properties {
this["Agreed"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
@ -106,7 +106,7 @@ namespace ModAssistant.Properties {
this["SelectInstalled"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
@ -118,7 +118,7 @@ namespace ModAssistant.Properties {
this["GameVersion"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
@ -130,7 +130,7 @@ namespace ModAssistant.Properties {
this["AllGameVersions"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
@ -142,7 +142,7 @@ namespace ModAssistant.Properties {
this["UpgradeRequired"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
@ -154,7 +154,7 @@ namespace ModAssistant.Properties {
this["LastTab"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
@ -166,5 +166,17 @@ namespace ModAssistant.Properties {
this["SelectedTheme"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool ReinstallInstalled {
get {
return ((bool)(this["ReinstallInstalled"]));
}
set {
this["ReinstallInstalled"] = value;
}
}
}
}

View file

@ -38,5 +38,8 @@
<Setting Name="SelectedTheme" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="ReinstallInstalled" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
</Settings>
</SettingsFile>
</SettingsFile>

View file

@ -0,0 +1,8 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="Menu">
<Setter Property="Background" Value="{DynamicResource ButtonBackground}" />
<Setter Property="BorderBrush" Value="{DynamicResource ButtonBackground}" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="Foreground" Value="{DynamicResource TextColor}" />
</Style>
</ResourceDictionary>

View file

@ -0,0 +1,66 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="MenuItem">
<Setter Property="Background" Value="{DynamicResource ButtonBackground}" />
<Setter Property="BorderBrush" Value="{DynamicResource ButtonBackground}" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="Foreground" Value="{DynamicResource TextColor}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type MenuItem}">
<Border
x:Name="templateRoot"
BorderBrush="{DynamicResource ButtonOutline}"
BorderThickness="{TemplateBinding BorderThickness}"
Padding="4"
Background="{TemplateBinding Background}"
SnapsToDevicePixels="True">
<Grid VerticalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<ContentPresenter x:Name="Icon" Content="{TemplateBinding Icon}" ContentSource="Icon" HorizontalAlignment="Center" Height="16" Margin="3" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="Center" Width="16"/>
<Path x:Name="GlyphPanel" Data="F1M10,1.2L4.7,9.1 4.5,9.1 0,5.2 1.3,3.5 4.3,6.1 8.3,0 10,1.2z" Fill="{TemplateBinding Foreground}" FlowDirection="LeftToRight" Margin="3" Visibility="Collapsed" VerticalAlignment="Center"/>
<ContentPresenter ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" Grid.Column="1" ContentStringFormat="{TemplateBinding HeaderStringFormat}" ContentSource="Header" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
<Popup x:Name="PART_Popup" AllowsTransparency="True" Focusable="False" IsOpen="{Binding IsSubmenuOpen, RelativeSource={RelativeSource TemplatedParent}}" PopupAnimation="{DynamicResource {x:Static SystemParameters.MenuPopupAnimationKey}}" Placement="Bottom">
<ScrollViewer x:Name="SubMenuScrollViewer" Style="{DynamicResource {ComponentResourceKey ResourceId=MenuScrollViewer, TypeInTargetAssembly={x:Type FrameworkElement}}}">
<Grid RenderOptions.ClearTypeHint="Enabled">
<Canvas HorizontalAlignment="Left" Height="0" VerticalAlignment="Top" Width="1">
<Rectangle x:Name="OpaqueRect" Fill="Black" Height="{Binding ActualHeight, ElementName=SubMenuBorder}" Width="{Binding ActualWidth, ElementName=SubMenuBorder}"/>
</Canvas>
<Rectangle Fill="#FFD7D7D7" HorizontalAlignment="Left" Margin="29,2,0,2" Width="1" />
<ItemsPresenter x:Name="ItemsPresenter" Margin="0,0,0,0" KeyboardNavigation.DirectionalNavigation="Cycle" Grid.IsSharedSizeScope="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" KeyboardNavigation.TabNavigation="Cycle"/>
</Grid>
</ScrollViewer>
</Popup>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSuspendingPopupAnimation" Value="True">
<Setter Property="PopupAnimation" TargetName="PART_Popup" Value="None"/>
</Trigger>
<Trigger Property="Icon" Value="{x:Null}">
<Setter Property="Visibility" TargetName="Icon" Value="Collapsed"/>
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Visibility" TargetName="GlyphPanel" Value="Visible"/>
<Setter Property="Visibility" TargetName="Icon" Value="Collapsed"/>
</Trigger>
<Trigger Property="IsHighlighted" Value="True">
<Setter Property="Background" Value="{DynamicResource ButtonHighlightedBackground}" />
<Setter Property="Foreground" Value="{DynamicResource TextHighlighted}" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="TextElement.Foreground" TargetName="templateRoot" Value="#FF707070"/>
<Setter Property="Fill" TargetName="GlyphPanel" Value="#FF707070"/>
</Trigger>
<Trigger Property="CanContentScroll" SourceName="SubMenuScrollViewer" Value="False">
<Setter Property="Canvas.Top" TargetName="OpaqueRect" Value="{Binding VerticalOffset, ElementName=SubMenuScrollViewer}"/>
<Setter Property="Canvas.Left" TargetName="OpaqueRect" Value="{Binding HorizontalOffset, ElementName=SubMenuScrollViewer}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>

View file

@ -1,7 +1,7 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<!--
ModAssistant BSMG theem by Megalon2D
ModAssistant BSMG theme by Megalon2D
https://twitter.com/megalon2D
-->