2019-04-22 18:41:43 +12:00
using System ;
using System.Collections.Generic ;
using System.Linq ;
using System.Text ;
using System.Threading.Tasks ;
using System.Windows ;
using System.Windows.Controls ;
using System.Windows.Data ;
using System.Windows.Documents ;
using System.Windows.Input ;
using System.Windows.Media ;
using System.Windows.Media.Imaging ;
using System.Windows.Navigation ;
using System.Windows.Shapes ;
using System.Globalization ;
2019-12-19 18:41:32 +13:00
using System.IO ;
using Path = System . IO . Path ;
2019-04-22 18:41:43 +12:00
namespace ModAssistant.Pages
{
/// <summary>
/// Interaction logic for Options.xaml
/// </summary>
///
public partial class Options : Page
{
public static Options Instance = new Options ( ) ;
public string InstallDirectory { get ; set ; }
public string InstallType { get ; set ; }
public bool SaveSelection { get ; set ; }
public bool CheckInstalledMods { get ; set ; }
2019-05-04 23:07:52 +12:00
public bool SelectInstalledMods { get ; set ; }
2019-05-08 04:56:54 +12:00
public bool ModelSaberProtocolHandlerEnabled { get ; set ; }
public bool BeatSaverProtocolHandlerEnabled { get ; set ; }
public bool ModSaberProtocolHandlerEnabled { get ; set ; }
2019-05-04 23:07:52 +12:00
2019-04-22 18:41:43 +12:00
public Options ( )
{
InitializeComponent ( ) ;
InstallDirectory = App . BeatSaberInstallDirectory ;
InstallType = App . BeatSaberInstallType ;
SaveSelection = App . SaveModSelection ;
CheckInstalledMods = App . CheckInstalledMods ;
2019-05-04 23:07:52 +12:00
SelectInstalledMods = App . SelectInstalledMods ;
if ( ! CheckInstalledMods )
SelectInstalled . IsEnabled = false ;
2019-04-22 18:41:43 +12:00
2019-05-08 04:56:54 +12:00
UpdateHandlerStatus ( ) ;
2019-05-05 04:08:54 +12:00
2019-04-22 18:41:43 +12:00
this . DataContext = this ;
}
2019-05-08 04:56:54 +12:00
public void UpdateHandlerStatus ( )
{
ModelSaberProtocolHandlerEnabled = OneClickInstaller . IsRegistered ( "modelsaber" ) ;
BeatSaverProtocolHandlerEnabled = OneClickInstaller . IsRegistered ( "beatsaver" ) ;
ModSaberProtocolHandlerEnabled = OneClickInstaller . IsRegistered ( "modsaber" ) ;
}
private void SelectDirButton_Click ( object sender , RoutedEventArgs e )
2019-04-22 18:41:43 +12:00
{
Utils . GetManualDir ( ) ;
2019-05-25 08:32:34 +12:00
DirectoryTextBlock . Text = InstallDirectory ;
GameTypeTextBlock . Text = InstallType ;
2019-04-22 18:41:43 +12:00
}
2019-12-19 17:13:44 +13:00
private void OpenDirButton_Click ( object sender , RoutedEventArgs e )
{
System . Diagnostics . Process . Start ( InstallDirectory ) ;
}
2019-04-22 18:41:43 +12:00
private void Test_Click ( object sender , RoutedEventArgs e )
{
MessageBox . Show ( Utils . GetSteamDir ( ) ) ;
}
private void SaveSelected_Checked ( object sender , RoutedEventArgs e )
{
Properties . Settings . Default . SaveSelected = true ;
App . SaveModSelection = true ;
Properties . Settings . Default . Save ( ) ;
}
private void SaveSelected_Unchecked ( object sender , RoutedEventArgs e )
{
Properties . Settings . Default . SaveSelected = false ;
App . SaveModSelection = false ;
Properties . Settings . Default . Save ( ) ;
}
private void CheckInstalled_Checked ( object sender , RoutedEventArgs e )
{
Properties . Settings . Default . CheckInstalled = true ;
App . CheckInstalledMods = true ;
CheckInstalledMods = true ;
Properties . Settings . Default . Save ( ) ;
2019-05-04 23:07:52 +12:00
SelectInstalled . IsEnabled = true ;
2019-05-19 03:32:14 +12:00
if ( MainWindow . ModsOpened )
Mods . Instance . PendingChanges = true ;
2019-04-22 18:41:43 +12:00
}
private void CheckInstalled_Unchecked ( object sender , RoutedEventArgs e )
{
Properties . Settings . Default . CheckInstalled = false ;
App . CheckInstalledMods = false ;
CheckInstalledMods = false ;
Properties . Settings . Default . Save ( ) ;
2019-05-04 23:07:52 +12:00
SelectInstalled . IsEnabled = false ;
2019-05-19 03:32:14 +12:00
if ( MainWindow . ModsOpened )
Mods . Instance . PendingChanges = true ;
2019-04-22 18:41:43 +12:00
}
2019-05-08 04:56:54 +12:00
public void ModelSaberProtocolHandler_Checked ( object sender , RoutedEventArgs e )
2019-04-22 18:41:43 +12:00
{
2019-05-08 04:56:54 +12:00
OneClickInstaller . Register ( "modelsaber" ) ;
}
2019-04-22 18:41:43 +12:00
2019-05-08 04:56:54 +12:00
public void ModelSaberProtocolHandler_Unchecked ( object sender , RoutedEventArgs e )
{
OneClickInstaller . Unregister ( "modelsaber" ) ;
2019-04-22 18:41:43 +12:00
}
2019-05-08 04:56:54 +12:00
public void BeatSaverProtocolHandler_Checked ( object sender , RoutedEventArgs e )
2019-04-22 18:41:43 +12:00
{
2019-05-08 04:56:54 +12:00
OneClickInstaller . Register ( "beatsaver" ) ;
}
2019-04-22 18:41:43 +12:00
2019-05-08 04:56:54 +12:00
public void BeatSaverProtocolHandler_Unchecked ( object sender , RoutedEventArgs e )
{
OneClickInstaller . Unregister ( "beatsaver" ) ;
}
2019-05-04 23:07:52 +12:00
private void SelectInstalled_Checked ( object sender , RoutedEventArgs e )
{
Properties . Settings . Default . SelectInstalled = true ;
App . SelectInstalledMods = true ;
SelectInstalledMods = true ;
Properties . Settings . Default . Save ( ) ;
}
private void SelectInstalled_Unchecked ( object sender , RoutedEventArgs e )
{
Properties . Settings . Default . SelectInstalled = false ;
App . SelectInstalledMods = false ;
SelectInstalledMods = false ;
Properties . Settings . Default . Save ( ) ;
}
2019-12-19 18:24:12 +13:00
private void OpenLogsDirButton_Click ( object sender , RoutedEventArgs e )
{
//
}
private async void YeetBSIPAButton_Click ( object sender , RoutedEventArgs e )
{
if ( Mods . Instance . AllModsList = = null )
{
MainWindow . Instance . MainText = "Getting Mod List..." ;
await Task . Run ( ( ) = > Mods . Instance . GetAllMods ( ) ) ;
MainWindow . Instance . MainText = "Finding BSIPA Version..." ;
await Task . Run ( ( ) = > Mods . Instance . GetBSIPAVersion ( ) ) ;
}
foreach ( Mod mod in Mods . InstalledMods )
{
if ( mod . name . ToLower ( ) = = "bsipa" )
{
Mods . Instance . UninstallMod ( mod ) ;
break ;
}
}
MainWindow . Instance . MainText = "BSIPA Uninstalled..." ;
}
2019-12-19 18:41:32 +13:00
private async void YeetModsButton_Click ( object sender , RoutedEventArgs e )
2019-12-19 18:24:12 +13:00
{
2019-12-19 18:41:32 +13:00
if ( System . Windows . Forms . MessageBox . Show ( $"Are you sure you want to remove ALL mods?\nThis cannot be undone." , $"Uninstall All Mods?" , System . Windows . Forms . MessageBoxButtons . YesNo ) = = System . Windows . Forms . DialogResult . Yes )
{
if ( Mods . Instance . AllModsList = = null )
{
MainWindow . Instance . MainText = "Getting Mod List..." ;
await Task . Run ( ( ) = > Mods . Instance . CheckInstalledMods ( ) ) ;
}
foreach ( Mod mod in Mods . InstalledMods )
{
Mods . Instance . UninstallMod ( mod ) ;
}
if ( Directory . Exists ( Path . Combine ( App . BeatSaberInstallDirectory , "Plugins" ) ) )
Directory . Delete ( Path . Combine ( App . BeatSaberInstallDirectory , "Plugins" ) , true ) ;
if ( Directory . Exists ( Path . Combine ( App . BeatSaberInstallDirectory , "Libs" ) ) )
Directory . Delete ( Path . Combine ( App . BeatSaberInstallDirectory , "Libs" ) , true ) ;
if ( Directory . Exists ( Path . Combine ( App . BeatSaberInstallDirectory , "IPA" ) ) )
Directory . Delete ( Path . Combine ( App . BeatSaberInstallDirectory , "IPA" ) , true ) ;
MainWindow . Instance . MainText = "All Mods Uninstalled..." ;
}
2019-12-19 18:24:12 +13:00
}
2019-04-22 18:41:43 +12:00
}
}