private async void Button_Click(object sender, RoutedEventArgs e) { #region Console/List Button Styling List <Button> toggleButtons = new List <Button>() { NetworkConsoleButton, DebugConsoleButton, WorldGenConsoleButton, PlayerListButton, AdminButton, PermittedButton, BannedButton }; if (toggleButtons.Contains(sender)) { var accentBrush = (Brush)FindResource("MahApps.Brushes.Accent"); var textBrush = (Brush)FindResource("MahApps.Brushes.Text"); foreach (Button button in toggleButtons) { if (sender == button) { button.Foreground = accentBrush; button.BorderBrush = accentBrush; button.BorderThickness = new Thickness(1); } else { button.Foreground = textBrush; button.BorderBrush = null; button.BorderThickness = new Thickness(0); } } } #endregion #region List Buttons if (sender == AdminButton) { LeTransit.Content = adminView; } if (sender == PermittedButton) { LeTransit.Content = permittedView; } if (sender == BannedButton) { LeTransit.Content = bannedView; } if (sender == PlayerListButton) { LeTransit.Content = playerView; } #endregion #region Console Buttons if (sender == NetworkConsoleButton) { LeTransit.Content = networkConsole; currentConsole = Enums.ConsoleType.Network; ClearBadgeForButton(NetworkConsoleButton); return; } if (sender == DebugConsoleButton) { LeTransit.Content = debugConsole; currentConsole = Enums.ConsoleType.Debug; ClearBadgeForButton(DebugConsoleButton); return; } if (sender == WorldGenConsoleButton) { LeTransit.Content = worldConsole; currentConsole = Enums.ConsoleType.WorldGen; ClearBadgeForButton(WorldGenConsoleButton); return; } #endregion #region Setting Tab Buttons if (sender == SteamButton) { if (SteamManager.SteamCMD.GetSteamCMDState() != SteamManager.SteamCMD.SteamCMDState.Installed) { SteamManager.SteamCMD.DownloadAndInstall(); } //else // TODO: Uninstall SteamCMD? } if (sender == SteamUpdate) { if (ValheimServer.ValidatePath(workingDirectory)) { var version = SteamManager.Server.GetVersion(workingDirectory); var latest = SteamManager.Server.GetLatestVersion(); if (version == latest) { MessageBox.Show("Latest version is already installed, not update necessary.", "Information", MessageBoxButton.OK, MessageBoxImage.Information); } else { MessageBoxResult mbr = MessageBox.Show("Update Available!", "Update?", MessageBoxButton.YesNo, MessageBoxImage.Question); if (mbr == MessageBoxResult.Yes) { await SteamManager.Server.UpdateValdiate(workingDirectory); } else { return; } } } } #endregion if (sender == ServerDirButton) { using (WinForms.FolderBrowserDialog fbd = new WinForms.FolderBrowserDialog()) { fbd.RootFolder = Environment.SpecialFolder.MyComputer; fbd.ShowNewFolderButton = true; fbd.Description = "Browse to the Valheim Dedicated Server directory"; if (fbd.ShowDialog() == WinForms.DialogResult.OK) { string path = fbd.SelectedPath; if (!String.IsNullOrWhiteSpace(path)) { // Make sure the directory exists if (Directory.Exists(path) && ValheimManager.IsValidServerDirectory(path)) { // Save the location ServerDirTextBox.Text = path; workingDirectory = path; Settings.Default.ServerPath = path; Settings.Default.Save(); UpdateWorlds(); } else { if (!ValheimManager.IsValidServerDirectory(path)) { MessageBox.Show("Specified directory does not seem to be a valid directory! Make sure you're choosing the folder containing the Valheim server files.", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); } else { MessageBox.Show("Specified directory does not seem to Exist!", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); } } } } else { // User cancelled } } } if (sender == SaveDirButton) { using (WinForms.FolderBrowserDialog fbd = new WinForms.FolderBrowserDialog()) { fbd.RootFolder = Environment.SpecialFolder.MyComputer; fbd.ShowNewFolderButton = true; fbd.Description = "Choose a Directory"; if (fbd.ShowDialog() == WinForms.DialogResult.OK) { string path = fbd.SelectedPath; if (Directory.Exists(path)) { SaveDirTextBox.Text = path; saveDirectory = path; Settings.Default.SavePath = path; Settings.Default.Save(); UpdateWorlds(); } } else { // User cancelled } } } if (sender == StartButton) { if (!String.IsNullOrWhiteSpace(workingDirectory) && File.Exists(Path.Combine(workingDirectory, "valheim_server.exe"))) { if (!ValheimServer.IsServerRunning()) { // Check all parameters before we start the serveroni await ValheimServer.StartAsync(new ValheimServer.ServerSettings { ServerPath = Path.Combine(workingDirectory, "valheim_server.exe"), ServerName = ServerNameTextBox.Text, ServerPassword = ServerPasswordTextBox.Password, ServerPort = (int)ServerPortNUD.Value, SaveDirectory = null, WorldName = WorldNameTextBox.Text }); } else { if (MessageBox.Show("Are you sure you wish to stop the server?", "Warning", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes) { ValheimServer.Stop(); } else { return; } } } else { MessageBox.Show("Error, unable to locate valheim_server.exe!", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } } if (sender == CreateTaskButton) { Scheduling.TaskWindow window = new Scheduling.TaskWindow(); window.Owner = this; bool dr = window.ShowDialog().GetValueOrDefault(); if (dr) { } } }
private void MetroWindow_ContentRendered(object sender, EventArgs e) { #region Load Settings // Location if (Settings.Default.StartX != 0 && Settings.Default.StartY != 0) { this.Left = Settings.Default.StartX; this.Top = Settings.Default.StartY; } else { this.WindowStartupLocation = WindowStartupLocation.CenterScreen; } // Size if (Settings.Default.SizeX > 0 && Settings.Default.SizeY > 0) { this.SizeToContent = SizeToContent.Manual; this.Width = Settings.Default.SizeX; this.Height = Settings.Default.SizeY; } else { this.SizeToContent = SizeToContent.WidthAndHeight; this.Width = this.MinWidth; this.Height = this.MinHeight; } // Path to server string serverPath = Settings.Default.ServerPath; if (!String.IsNullOrWhiteSpace(serverPath) && Directory.Exists(serverPath) && ValheimManager.IsValidServerDirectory(serverPath)) { ServerDirTextBox.Text = serverPath; workingDirectory = serverPath; } // Save dir string savePath = Settings.Default.SavePath; if (!String.IsNullOrWhiteSpace(savePath) && Directory.Exists(savePath)) { SaveDirTextBox.Text = savePath; saveDirectory = savePath; } // Server name string serverName = Settings.Default.ServerName; if (!String.IsNullOrWhiteSpace(serverName)) { ServerNameTextBox.Text = serverName; } // Password string password = Settings.Default.ServerPassword; if (!String.IsNullOrWhiteSpace(password)) { ServerPasswordTextBox.Password = password; } // Port int serverPort = Settings.Default.ServerPort; if (serverPort != 0) { ServerPortNUD.Value = serverPort; } else { ServerPortNUD.Value = 2456; } #endregion #region Check Worlds UpdateWorlds(); if (WorldsDropDown.Items.Count > 0) { foreach (string world in WorldsDropDown.Items) { int i = 0; if (world == Settings.Default.PreviousWorld) { WorldsDropDown.SelectedIndex = i; break; } i++; } } #endregion syncContext = SynchronizationContext.Current; IsServerSetupValid(); // TODO: Verify path before doing this adminView.LoadEntriesFromFile(ValheimManager.GetListPath(Enums.ListType.Admin)); permittedView.LoadEntriesFromFile(ValheimManager.GetListPath(Enums.ListType.Permitted)); bannedView.LoadEntriesFromFile(ValheimManager.GetListPath(Enums.ListType.Banned)); ValheimServer.OnServerStarted += ValheimServer_OnServerStarted; ValheimServer.OnServerStopped += ValheimServer_OnServerStopped; ValheimServer.OnOutputReceived += ValheimServer_OnOutputReceived; ValheimServer.OnServerStateChanged += ValheimServer_OnServerStateChanged; Scheduling.ScheduledTask task1 = new Scheduling.ScheduledTask { Days = Scheduling.Days.All, Task = Scheduling.TaskKind.Restart, Time = DateTime.Now }; Scheduling.ScheduledTask task2 = new Scheduling.ScheduledTask { Days = Scheduling.Days.Weekdays, Task = Scheduling.TaskKind.Update, Time = DateTime.Now }; Scheduling.ScheduledTask task3 = new Scheduling.ScheduledTask { Days = Scheduling.Days.Weekends, Task = Scheduling.TaskKind.Restart, Time = DateTime.Now }; Scheduling.ScheduledTask task4 = new Scheduling.ScheduledTask { Days = Scheduling.Days.Wednesday, Task = Scheduling.TaskKind.UpdateAndRestart, Time = DateTime.Now }; foreach (var task in new Scheduling.ScheduledTask[] { task1, task2, task3, task4 }) { ScheduleGrid.Items.Add(task); } ScheduleGrid.Items.Refresh(); }