diff --git a/src/ARKServerManager/ARKServerManager.csproj b/src/ARKServerManager/ARKServerManager.csproj index 8d30e72a..c7410cc7 100644 --- a/src/ARKServerManager/ARKServerManager.csproj +++ b/src/ARKServerManager/ARKServerManager.csproj @@ -208,6 +208,9 @@ AddUserWindow.xaml + + DataDirectoryWindow.xaml + PlayerListWindow.xaml @@ -391,6 +394,10 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + Designer MSBuild:Compile diff --git a/src/ARKServerManager/App.config b/src/ARKServerManager/App.config index 5c237c8e..605e2a65 100644 --- a/src/ARKServerManager/App.config +++ b/src/ARKServerManager/App.config @@ -344,6 +344,9 @@ version.txt + + asmdata + diff --git a/src/ARKServerManager/App.xaml.cs b/src/ARKServerManager/App.xaml.cs index 80da3fb6..6df4b3e8 100644 --- a/src/ARKServerManager/App.xaml.cs +++ b/src/ARKServerManager/App.xaml.cs @@ -410,69 +410,15 @@ namespace ServerManagerTool ApplicationStarted = true; - // Initial configuration setting - if (String.IsNullOrWhiteSpace(Config.Default.DataDir)) - { - MessageBox.Show(_globalizer.GetResourceString("Application_DataDirectoryLabel"), _globalizer.GetResourceString("Application_DataDirectoryTitle"), MessageBoxButton.OK, MessageBoxImage.Information); + if (string.IsNullOrWhiteSpace(Config.Default.DataDir)) + { + var dataDirectoryWindow = new DataDirectoryWindow(); + dataDirectoryWindow.WindowStartupLocation = WindowStartupLocation.CenterScreen; + var result = dataDirectoryWindow.ShowDialog(); - var installationFolder = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); - if (!installationFolder.EndsWith(@"\")) - installationFolder += @"\"; - - var desktopFolder1 = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); - var desktopFolder2 = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); - - while (String.IsNullOrWhiteSpace(Config.Default.DataDir)) + if (!result.HasValue || !result.Value) { - var dialog = new CommonOpenFileDialog - { - EnsureFileExists = true, - IsFolderPicker = true, - Multiselect = false, - Title = _globalizer.GetResourceString("Application_DataDirectory_DialogTitle"), - InitialDirectory = Path.GetPathRoot(installationFolder) - }; - - if (dialog.ShowDialog() != CommonFileDialogResult.Ok) - { - Environment.Exit(0); - } - - MessageBoxResult confirm = MessageBoxResult.Cancel; - - // check if the folder is under the installation folder - var newDataFolder = dialog.FileName; - if (!newDataFolder.EndsWith(@"\")) - newDataFolder += @"\"; - - if (newDataFolder.StartsWith(installationFolder)) - { - confirm = MessageBoxResult.No; - MessageBox.Show(_globalizer.GetResourceString("Application_DataDirectory_DataDirectoryWithinInstallFolderErrorLabel"), _globalizer.GetResourceString("Application_DataDirectory_DataDirectoryFolderErrorTitle"), MessageBoxButton.OK, MessageBoxImage.Error); - } - else if (newDataFolder.StartsWith(desktopFolder1) || newDataFolder.StartsWith(desktopFolder2)) - { - confirm = MessageBoxResult.No; - MessageBox.Show(_globalizer.GetResourceString("Application_DataDirectory_DataDirectoryWithinDesktopFolderErrorLabel"), _globalizer.GetResourceString("Application_DataDirectory_DataDirectoryFolderErrorTitle"), MessageBoxButton.OK, MessageBoxImage.Error); - } - else - { - confirm = MessageBox.Show(String.Format(_globalizer.GetResourceString("Application_DataDirectory_ConfirmLabel"), Path.Combine(newDataFolder, Config.Default.ProfilesDir), Path.Combine(newDataFolder, Config.Default.SteamCmdDir)), _globalizer.GetResourceString("Application_DataDirectory_ConfirmTitle"), MessageBoxButton.YesNoCancel, MessageBoxImage.Question); - } - - if (confirm == MessageBoxResult.Cancel) - { - Environment.Exit(0); - } - else if (confirm == MessageBoxResult.Yes) - { - if (newDataFolder.EndsWith(@"\")) - newDataFolder = newDataFolder.Substring(0, newDataFolder.Length -1); - - Config.Default.DataDir = newDataFolder; - ReconfigureLogging(); - break; - } + Environment.Exit(0); } } diff --git a/src/ARKServerManager/Config.Designer.cs b/src/ARKServerManager/Config.Designer.cs index e4c1ef54..dbac3d1f 100644 --- a/src/ARKServerManager/Config.Designer.cs +++ b/src/ARKServerManager/Config.Designer.cs @@ -2803,5 +2803,14 @@ namespace ServerManagerTool { this["MainWindow_Top"] = value; } } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("asmdata")] + public string DefaultDataDirectoryName { + get { + return ((string)(this["DefaultDataDirectoryName"])); + } + } } } diff --git a/src/ARKServerManager/Config.settings b/src/ARKServerManager/Config.settings index ea5d849e..72345566 100644 --- a/src/ARKServerManager/Config.settings +++ b/src/ARKServerManager/Config.settings @@ -776,5 +776,8 @@ 50 + + asmdata + \ No newline at end of file diff --git a/src/ARKServerManager/Globalization/en-US/en-US.xaml b/src/ARKServerManager/Globalization/en-US/en-US.xaml index c8c83020..49ab73d1 100644 --- a/src/ARKServerManager/Globalization/en-US/en-US.xaml +++ b/src/ARKServerManager/Globalization/en-US/en-US.xaml @@ -165,6 +165,25 @@ Processor + + Data Folder Selection + It appears you do not have a data directory set. The data directory is where your profiles and SteamCMD will be stored. It is not the same as the server installation directory, which you can choose for each profile. + Select the drive where the data folder should be located. + Data Folder Name: + The name of the server manager data folder. + Local Disk + {0} free of {1} + + Ok + Cancel + Refresh + + Data Directory Selection Error + The data folder name you have entered is not valid. + Server Manager Restart Required + The data folder has been set, you must now restart the server manager to use the new settings. + + Close diff --git a/src/ARKServerManager/Windows/DataDirectoryWindow.xaml b/src/ARKServerManager/Windows/DataDirectoryWindow.xaml new file mode 100644 index 00000000..6a7e6bf3 --- /dev/null +++ b/src/ARKServerManager/Windows/DataDirectoryWindow.xaml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +