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
+11 -2
View File
@@ -102,6 +102,7 @@ namespace NethackHelper {
this.fileToolStripMenuItem = new ToolStripMenuItem(); this.fileToolStripMenuItem = new ToolStripMenuItem();
this.resetToolStripMenuItem = new ToolStripMenuItem(); this.resetToolStripMenuItem = new ToolStripMenuItem();
this.toolTip1 = new ToolTip(this.components); this.toolTip1 = new ToolTip(this.components);
this.copyOverlayURLToolStripMenuItem = new ToolStripMenuItem();
extrinsicLabel = new Label(); extrinsicLabel = new Label();
intrinsicLabel = new Label(); intrinsicLabel = new Label();
label3 = new Label(); label3 = new Label();
@@ -1082,7 +1083,7 @@ namespace NethackHelper {
// //
// fileToolStripMenuItem // 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.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new Size(37, 20); this.fileToolStripMenuItem.Size = new Size(37, 20);
this.fileToolStripMenuItem.Text = "File"; this.fileToolStripMenuItem.Text = "File";
@@ -1090,9 +1091,16 @@ namespace NethackHelper {
// resetToolStripMenuItem // resetToolStripMenuItem
// //
this.resetToolStripMenuItem.Name = "resetToolStripMenuItem"; this.resetToolStripMenuItem.Name = "resetToolStripMenuItem";
this.resetToolStripMenuItem.Size = new Size(102, 22); this.resetToolStripMenuItem.Size = new Size(180, 22);
this.resetToolStripMenuItem.Text = "Reset"; 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 // MainForm
// //
this.AutoScaleDimensions = new SizeF(7F, 15F); this.AutoScaleDimensions = new SizeF(7F, 15F);
@@ -1205,5 +1213,6 @@ namespace NethackHelper {
private PropertyBox waterWalkingBox; private PropertyBox waterWalkingBox;
private PropertyBox lifeSavingBox; private PropertyBox lifeSavingBox;
private PropertyBox flyingBox; private PropertyBox flyingBox;
private ToolStripMenuItem copyOverlayURLToolStripMenuItem;
} }
} }
+18 -3
View File
@@ -7,6 +7,7 @@ namespace NethackHelper {
using System.IO; using System.IO;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using YamlDotNet.Core;
public partial class MainForm : Form { public partial class MainForm : Form {
private const int PORT = 5993; private const int PORT = 5993;
@@ -37,9 +38,19 @@ namespace NethackHelper {
this.charismaSelector.ValueMember = "Modifier"; this.charismaSelector.ValueMember = "Modifier";
foreach (var filename in Directory.EnumerateFiles("sokoban", "*.yaml")) { foreach (var filename in Directory.EnumerateFiles("sokoban", "*.yaml")) {
var sokoban = new SokobanSolution(YamlOptions.DeserializeFile<SokobanFile>(filename)); try {
this.sokobans.Add(sokoban); var sokoban = new SokobanSolution(YamlOptions.DeserializeFile<SokobanFile>(filename));
this.sokobanLevelList.Items.Add(sokoban.Name); 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"); var versions = YamlOptions.DeserializeFile<List<Version>>("items/versions.yaml");
@@ -261,5 +272,9 @@ namespace NethackHelper {
private void godAngryCheckbox_CheckedChanged(object sender, EventArgs e) { private void godAngryCheckbox_CheckedChanged(object sender, EventArgs e) {
TrackerManager.Instance.Tracker.UpdateAngry(godAngryCheckbox.Checked); TrackerManager.Instance.Tracker.UpdateAngry(godAngryCheckbox.Checked);
} }
private void copyOverlayURLToolStripMenuItem_Click(object sender, EventArgs e) {
Clipboard.SetText($"http://localhost:{PORT}/tracker.html");
}
} }
} }