NHSE/NHSE.WinForms/Subforms/Map/MuseumEditor.cs
2026-01-13 16:02:58 -06:00

123 lines
3.3 KiB
C#

using System;
using System.Windows.Forms;
using NHSE.Core;
namespace NHSE.WinForms;
public partial class MuseumEditor : Form
{
private readonly Core.MuseumEditor Editor;
private int Index = -1;
public MuseumEditor(Museum museum)
{
InitializeComponent();
this.TranslateInterface(GameInfo.CurrentLanguage);
Editor = new Core.MuseumEditor(museum);
CAL_Date.MinDate = DateTime.MinValue;
var str = GameInfo.Strings;
ItemEdit.Initialize(str.ItemDataSource);
for (int i = 0; i < Editor.Dates.Length; i++)
LB_Donations.Items.Add(Editor.GetDonationText(str, i));
DialogResult = DialogResult.Cancel;
LB_Donations.SelectedIndex = 0;
}
private void B_Cancel_Click(object sender, EventArgs e) => Close();
private void B_Save_Click(object sender, EventArgs e)
{
DialogResult = DialogResult.OK;
Editor.Save();
Close();
}
private void LB_Counts_SelectedIndexChanged(object sender, EventArgs e)
{
if (LB_Donations.SelectedIndex < 0 || Changing)
return;
SaveIndex(Index);
Index = LB_Donations.SelectedIndex;
LoadIndex(Index);
}
private void LoadIndex(in int index)
{
if (index < 0)
return;
var date = (DateTime)Editor.Dates[index];
if (date < CAL_Date.MinDate)
date = CAL_Date.MinDate;
CAL_Date.Value = date;
NUD_Player.Value = Editor.Players[index];
ItemEdit.LoadItem(Editor.Items[index]);
}
private void SaveIndex(in int index)
{
if (index < 0)
return;
var date = CAL_Date.Value;
if (date == CAL_Date.MinDate)
date = DateTime.MinValue;
Editor.Dates[index] = date;
Editor.Players[index] = (byte)NUD_Player.Value;
ItemEdit.SetItem(Editor.Items[index]);
SetNameForIndex(index);
}
private bool Changing;
private void SetNameForIndex(in int index)
{
Changing = true;
LB_Donations.Items[index] = Editor.GetDonationText(GameInfo.Strings, index);
Changing = false;
}
private void B_Dump_Click(object sender, EventArgs e)
{
Editor.Save();
MiscDumpHelper.DumpMuseum(Editor.Museum);
}
private void B_Load_Click(object sender, EventArgs e)
{
if (!MiscDumpHelper.LoadMuseum(Editor.Museum))
return;
// data imported, mark as saved and close
DialogResult = DialogResult.OK;
Close();
}
private void B_GiveAll_Click(object sender, EventArgs e)
{
SaveIndex(Index);
Editor.GiveAll(GameInfo.GetStrings("en").itemlist, 1000);
Editor.Save();
System.Media.SystemSounds.Asterisk.Play();
DialogResult = DialogResult.OK;
Close();
}
private void B_SortDate_Click(object sender, EventArgs e)
{
SaveIndex(Index);
Editor.SortAll();
Editor.Save();
System.Media.SystemSounds.Asterisk.Play();
DialogResult = DialogResult.OK;
Close();
}
private static void ShowContextMenuBelow(ToolStripDropDown c, Control n) => c.Show(n.PointToScreen(new System.Drawing.Point(0, n.Height)));
private void B_Tools_Click(object sender, EventArgs e) => ShowContextMenuBelow(CM_Tools, B_Tools);
}