Skip to content

Commit

Permalink
Fixed bug related to automatic server restarts. Better handling of HT…
Browse files Browse the repository at this point in the history
…ML notation in server names.
  • Loading branch information
Razzmatazzz committed Mar 1, 2021
1 parent 02d94f0 commit 2c7c02e
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 122 deletions.
161 changes: 47 additions & 114 deletions MainWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -382,92 +382,80 @@ private void attachServerEventListeners(ValheimServer server)
{
//server.OutputDataReceived += Server_OutputDataReceived;
//server.ErrorDataReceived += Server_OutputDataReceived;
server.LoggedMessage += ((object sender, LoggedMessageEventArgs e) => {
this.Dispatcher.Invoke(() =>
{
var server = (ValheimServer)sender;
logMessage(server.DisplayName+": "+e.LogEntry.Message, e.LogEntry.Type);
});
});
server.Exited += Server_Exited;
server.Started += Server_Started;
server.StartFailed += Server_StartFailed;
server.FailedPassword += Server_FailedPassword;
server.StopFailed += Server_StopFailed;
server.PlayerConnected += Server_PlayerConnected;
server.PlayerDisconnected += Server_PlayerDisconnected;
server.PlayerDied += Server_PlayerDied;
server.RandomServerEvent += Server_RandomServerEvent;
server.ScheduledRestart += Server_ScheduledRestart;
server.ErrorOccurred += Server_ErrorOccurred;
}
catch (Exception ex)
{
logMessage($"Error attaching event listeners: {ex.Message}", LogEntryType.Error);
}
}

private void Server_ErrorOccurred(object sender, ServerErrorEventArgs e)
{
var server = (ValheimServer)sender;
logMessage($"{server.Name} {e.Message}", LogEntryType.Error);
}

private void Server_ScheduledRestart(object sender, EventArgs e)
{
var server = (ValheimServer)sender;
logMessage($"Initiating scheduled restart for {server.Name}...");
}

private void Server_StartFailed(object sender, ServerErrorEventArgs e)
private void Server_StopFailed(object sender, ServerErrorEventArgs e)
{
try
{
var server = (ValheimServer)sender;
this.Dispatcher.Invoke(() =>
{
logMessage($"{server.Name} {e.Message}", LogEntryType.Error);
RefreshDataGrid();
});
}
catch (Exception ex)
{
logMessage($"Error responding to server start failed event: {ex.Message}", LogEntryType.Error);
logMessage($"Error responding to server stop failed event: {ex.Message}", LogEntryType.Error);
}
}

private void Server_Started(object sender, EventArgs e)
private void Server_StartFailed(object sender, ServerErrorEventArgs e)
{
try
{
var server = (ValheimServer)sender;
this.Dispatcher.Invoke(() =>
{
logMessage($"Server {server.Name} started.", LogEntryType.Success);
RefreshDataGrid();
});
}
catch (Exception ex)
{
logMessage($"Error responding to server started event: {ex.Message}", LogEntryType.Error);
logMessage($"Error responding to server start failed event: {ex.Message}", LogEntryType.Error);
}
}
private void Server_RandomServerEvent(object sender, RandomServerEventArgs e)

private void Server_Started(object sender, EventArgs e)
{
try
{
var server = (ValheimServer)sender;
this.Dispatcher.Invoke(() =>
{
logMessage($"Server {server.Name}: random event {e.EventName}.");
RefreshDataGrid();
});
}
catch (Exception ex)
{
logMessage($"Error responding to random server event: {ex.Message}", LogEntryType.Error);
logMessage($"Error responding to server started event: {ex.Message}", LogEntryType.Error);
}
}

private void Server_PlayerDisconnected(object sender, PlayerEventArgs e)
{
try
{
var server = (ValheimServer)sender;
this.Dispatcher.Invoke(() =>
{
logMessage($"Server {server.Name}: player {e.Player.Name} ({e.Player.SteamID}) disconnected");
RefreshDataGrid();
});
}
Expand All @@ -484,7 +472,6 @@ private void Server_PlayerConnected(object sender, PlayerEventArgs e)
var server = (ValheimServer)sender;
this.Dispatcher.Invoke(() =>
{
logMessage($"Server {server.Name}: player {e.Player.Name} ({e.Player.SteamID}) connected");
RefreshDataGrid();
});
}
Expand All @@ -493,39 +480,6 @@ private void Server_PlayerConnected(object sender, PlayerEventArgs e)
logMessage($"Error responding to PlayerConnected event: {ex.Message}", LogEntryType.Error);
}
}

private void Server_PlayerDied(object sender, PlayerEventArgs e)
{
try
{
var server = (ValheimServer)sender;
this.Dispatcher.Invoke(() =>
{
logMessage($"Server {server.Name}: player {e.Player.Name} ({e.Player.SteamID}) died");
RefreshDataGrid();
});
}
catch (Exception ex)
{
logMessage($"Error responding to PlayerDied event: {ex.Message}", LogEntryType.Error);
}
}

private void Server_FailedPassword(object sender, FailedPasswordEventArgs e)
{
try
{
var server = (ValheimServer)sender;
this.Dispatcher.Invoke(() =>
{
logMessage($"Server {server.Name}: failed password attempt for steamid {e.SteamID}.");
});
}
catch (Exception ex)
{
logMessage($"Error responding to FailedPassword event: {ex.Message}", LogEntryType.Error);
}
}
private void serversMenuAdd_Click(object sender, RoutedEventArgs e)
{
try
Expand Down Expand Up @@ -666,7 +620,6 @@ private void StartServer(ValheimServer server)
}
server.Start();
RefreshDataGrid();
logMessage($"Server {server.Name} starting...", LogEntryType.Normal);
}
catch (Exception ex)
{
Expand Down Expand Up @@ -725,14 +678,6 @@ private void Server_Exited(object sender, ServerExitedEventArgs e)
var server = (ValheimServer)sender;
this.Dispatcher.Invoke(() =>
{
if (e.ExitCode == 0 || e.ExitCode == -1073741510)
{
logMessage($"Server {server.Name} stopped.");
}
else
{
logMessage($"Server {server.Name}: exited with code {e.ExitCode}.", LogEntryType.Error);
}
RefreshDataGrid();
if (server.Autostart && e.ExitCode != 0 && e.ExitCode != -1073741510 && !e.IntentionalExit && !server.Running)
{
Expand All @@ -746,22 +691,6 @@ private void Server_Exited(object sender, ServerExitedEventArgs e)
}
}

private void Server_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
try
{
Debug.WriteLine(e.Data);
this.Dispatcher.Invoke(() =>
{
logMessage(e.Data);
});
}
catch (Exception ex)
{
logMessage($"Error receiving output from server: {ex.Message}", LogEntryType.Error);
}
}

public void logMessage(string msg)
{
logMessage(msg, LogEntryType.Normal);
Expand All @@ -775,34 +704,37 @@ public void logMessage(string msg, LogEntryType lt)
public void logMessage(LogEntry entry)
{
logEntries.Add(entry);
if (!suppressLog)
this.Dispatcher.Invoke(() =>
{
if (txtLog.Document.Blocks.Count > 0)
{
txtLog.Document.Blocks.InsertBefore(txtLog.Document.Blocks.FirstBlock, (Block)entry);
}
else
{
txtLog.Document.Blocks.Add((Block)entry);
}
if (entry.Message.Contains('\n'))
{
lblLastMessage.Content = entry.Message.Split('\n')[0];
}
else
{
lblLastMessage.Content = entry.Message;
}
lblLastMessage.Foreground = new SolidColorBrush(entry.Color);
if (entry.Type == LogEntryType.Normal)
{
lblLastMessage.FontWeight = FontWeights.Normal;
}
else
if (!suppressLog)
{
lblLastMessage.FontWeight = FontWeights.Bold;
if (txtLog.Document.Blocks.Count > 0)
{
txtLog.Document.Blocks.InsertBefore(txtLog.Document.Blocks.FirstBlock, (Block)entry);
}
else
{
txtLog.Document.Blocks.Add((Block)entry);
}
if (entry.Message.Contains('\n'))
{
lblLastMessage.Content = entry.Message.Split('\n')[0];
}
else
{
lblLastMessage.Content = entry.Message;
}
lblLastMessage.Foreground = new SolidColorBrush(entry.Color);
if (entry.Type == LogEntryType.Normal)
{
lblLastMessage.FontWeight = FontWeights.Normal;
}
else
{
lblLastMessage.FontWeight = FontWeights.Bold;
}
}
}
});
/*if (Properties.Settings.Default.CreateLogFile)
{
StreamWriter writer = System.IO.File.AppendText("log.txt");
Expand Down Expand Up @@ -834,7 +766,6 @@ private void Window_StateChanged(object sender, EventArgs e)
}
}


private void dgServers_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.Column.Header.Equals("SaveDir") ||
Expand All @@ -849,7 +780,8 @@ private void dgServers_AutoGeneratingColumn(object sender, DataGridAutoGeneratin
e.Column.Header.Equals("Public") ||
e.Column.Header.Equals("InstallMethod") ||
e.Column.Header.Equals("InstallPath") ||
e.Column.Header.Equals("LogEntries"))
e.Column.Header.Equals("LogEntries") ||
e.Column.Header.Equals("DisplayName"))
{
e.Cancel = true;
}
Expand Down Expand Up @@ -1065,6 +997,7 @@ private void serversMenuDetails_Click(object sender, RoutedEventArgs e)
}
}
ServerDetailsWindow window = new ServerDetailsWindow(server);
window.WindowStartupLocation = WindowStartupLocation.CenterScreen;
this.serverDetailWindows.Add(window);
window.Closed += ((object sender, EventArgs e) =>
{
Expand Down
3 changes: 2 additions & 1 deletion ServerDetailsWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ public void RefreshControls()
{
try
{
Title = $"{this.Server.Name} Details";
Title = $"{this.Server.DisplayName} Details";
lblPlayerCount.Content = this.Server.PlayerCount;
dgPlayers.ItemsSource = this.Server.Players;
dgPlayers.Items.Refresh();
Expand Down Expand Up @@ -331,6 +331,7 @@ private void btnSave_Click(object sender, RoutedEventArgs e)
if (txtName.Text.Length > 0)
{
Server.Name = txtName.Text;
Title = Server.DisplayName;
} else
{
txtName.Text = Server.Name;
Expand Down
Loading

0 comments on commit 2c7c02e

Please sign in to comment.