Add copy URL button and add error handling on loading sokoban files

This commit is contained in:
2026-09-11 11:22:58 -05:00
parent a7a00c1f74
commit f42406513d
2 changed files with 29 additions and 5 deletions

View File

@@ -102,6 +102,7 @@ namespace NethackHelper {
this.fileToolStripMenuItem = new ToolStripMenuItem();
this.resetToolStripMenuItem = new ToolStripMenuItem();
this.toolTip1 = new ToolTip(this.components);
this.copyOverlayURLToolStripMenuItem = new ToolStripMenuItem();
extrinsicLabel = new Label();
intrinsicLabel = new Label();
label3 = new Label();
@@ -1082,7 +1083,7 @@ namespace NethackHelper {
//
// fileToolStripMenuItem
//
this.fileToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { this.resetToolStripMenuItem });
this.fileToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { this.resetToolStripMenuItem, this.copyOverlayURLToolStripMenuItem });
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new Size(37, 20);
this.fileToolStripMenuItem.Text = "File";
@@ -1090,9 +1091,16 @@ namespace NethackHelper {
// resetToolStripMenuItem
//
this.resetToolStripMenuItem.Name = "resetToolStripMenuItem";
this.resetToolStripMenuItem.Size = new Size(102, 22);
this.resetToolStripMenuItem.Size = new Size(180, 22);
this.resetToolStripMenuItem.Text = "Reset";
//
// copyOverlayURLToolStripMenuItem
//
this.copyOverlayURLToolStripMenuItem.Name = "copyOverlayURLToolStripMenuItem";
this.copyOverlayURLToolStripMenuItem.Size = new Size(180, 22);
this.copyOverlayURLToolStripMenuItem.Text = "Copy Overlay URL";
this.copyOverlayURLToolStripMenuItem.Click += this.copyOverlayURLToolStripMenuItem_Click;
//
// MainForm
//
this.AutoScaleDimensions = new SizeF(7F, 15F);
@@ -1205,5 +1213,6 @@ namespace NethackHelper {
private PropertyBox waterWalkingBox;
private PropertyBox lifeSavingBox;
private PropertyBox flyingBox;
private ToolStripMenuItem copyOverlayURLToolStripMenuItem;
}
}

View File

@@ -7,6 +7,7 @@ namespace NethackHelper {
using System.IO;
using System.Threading.Tasks;
using System.Windows.Forms;
using YamlDotNet.Core;
public partial class MainForm : Form {
private const int PORT = 5993;
@@ -37,9 +38,19 @@ namespace NethackHelper {
this.charismaSelector.ValueMember = "Modifier";
foreach (var filename in Directory.EnumerateFiles("sokoban", "*.yaml")) {
var sokoban = new SokobanSolution(YamlOptions.DeserializeFile<SokobanFile>(filename));
this.sokobans.Add(sokoban);
this.sokobanLevelList.Items.Add(sokoban.Name);
try {
var sokoban = new SokobanSolution(YamlOptions.DeserializeFile<SokobanFile>(filename));
this.sokobans.Add(sokoban);
this.sokobanLevelList.Items.Add(sokoban.Name);
} catch (YamlException err) {
Console.Error.WriteLine("Error loading sokoban file {0}", filename);
Console.Error.WriteLine(err.Message);
Console.Error.WriteLine(err.StackTrace);
} catch (SokobanError err) {
Console.Error.WriteLine("Error loading sokoban file {0}", filename);
Console.Error.WriteLine(err.Message);
Console.Error.WriteLine(err.StackTrace);
}
}
var versions = YamlOptions.DeserializeFile<List<Version>>("items/versions.yaml");
@@ -261,5 +272,9 @@ namespace NethackHelper {
private void godAngryCheckbox_CheckedChanged(object sender, EventArgs e) {
TrackerManager.Instance.Tracker.UpdateAngry(godAngryCheckbox.Checked);
}
private void copyOverlayURLToolStripMenuItem_Click(object sender, EventArgs e) {
Clipboard.SetText($"http://localhost:{PORT}/tracker.html");
}
}
}