diff --git a/PKHeX.Core/PKM/PK3.cs b/PKHeX.Core/PKM/PK3.cs index e0af2509f..abc240fb7 100644 --- a/PKHeX.Core/PKM/PK3.cs +++ b/PKHeX.Core/PKM/PK3.cs @@ -151,6 +151,7 @@ public PK3(byte[] decryptedData = null, string ident = null) public override int Stat_SPE { get => BitConverter.ToUInt16(Data, 0x5E); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x5E); } public override int Stat_SPA { get => BitConverter.ToUInt16(Data, 0x60); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x60); } public override int Stat_SPD { get => BitConverter.ToUInt16(Data, 0x62); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x62); } + public sbyte HeldMailID { get => (sbyte)Data[0x55]; set => Data[0x55] = (byte)value; } // Generated Attributes public override int AbilityNumber { get => 1 << (AbilityBit ? 1 : 0); set => AbilityBit = value > 1; } // 1/2 -> 0/1 diff --git a/PKHeX.Core/PKM/PK4.cs b/PKHeX.Core/PKM/PK4.cs index c20132d23..b3ff32851 100644 --- a/PKHeX.Core/PKM/PK4.cs +++ b/PKHeX.Core/PKM/PK4.cs @@ -324,6 +324,7 @@ public override int Ball public override int Stat_SPE { get => BitConverter.ToUInt16(Data, 0x96); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x96); } public override int Stat_SPA { get => BitConverter.ToUInt16(Data, 0x98); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x98); } public override int Stat_SPD { get => BitConverter.ToUInt16(Data, 0x9A); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x9A); } + public byte[] HeldMailData { get => Data.Skip(0x9C).Take(0x38).ToArray(); set => value.CopyTo(Data, 0x9C); } public override int PSV => (int)((PID >> 16 ^ PID & 0xFFFF) >> 3); public override int TSV => (TID ^ SID) >> 3; diff --git a/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.Designer.cs b/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.Designer.cs index 5be2c6ccb..79459d642 100644 --- a/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.Designer.cs +++ b/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.Designer.cs @@ -112,6 +112,7 @@ private void InitializeComponent() this.B_OpenUGSEditor = new System.Windows.Forms.Button(); this.B_Roamer = new System.Windows.Forms.Button(); this.B_FestivalPlaza = new System.Windows.Forms.Button(); + this.B_MailBox = new System.Windows.Forms.Button(); this.tabBoxMulti.SuspendLayout(); this.Tab_Box.SuspendLayout(); this.Tab_PartyBattle.SuspendLayout(); @@ -786,6 +787,7 @@ private void InitializeComponent() this.FLP_SAVtools.Controls.Add(this.B_OpenUGSEditor); this.FLP_SAVtools.Controls.Add(this.B_Roamer); this.FLP_SAVtools.Controls.Add(this.B_FestivalPlaza); + this.FLP_SAVtools.Controls.Add(this.B_MailBox); this.FLP_SAVtools.Location = new System.Drawing.Point(6, 10); this.FLP_SAVtools.Name = "FLP_SAVtools"; this.FLP_SAVtools.Size = new System.Drawing.Size(297, 88); @@ -1044,6 +1046,16 @@ private void InitializeComponent() this.B_FestivalPlaza.UseVisualStyleBackColor = true; this.B_FestivalPlaza.Click += new System.EventHandler(this.B_FestivalPlaza_Click); // + // B_MailBox + // + this.B_MailBox.Location = new System.Drawing.Point(96, 235); + this.B_MailBox.Name = "B_MailBox"; + this.B_MailBox.Size = new System.Drawing.Size(87, 23); + this.B_MailBox.TabIndex = 32; + this.B_MailBox.Text = "Mail Box"; + this.B_MailBox.UseVisualStyleBackColor = true; + this.B_MailBox.Click += new System.EventHandler(this.B_MailBox_Click); + // // SAVEditor // this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; @@ -1181,5 +1193,6 @@ private void InitializeComponent() private System.Windows.Forms.Button B_OpenUGSEditor; private System.Windows.Forms.Button B_Roamer; private System.Windows.Forms.Button B_FestivalPlaza; + private System.Windows.Forms.Button B_MailBox; } } diff --git a/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs b/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs index b1853f6ef..0b239ea7f 100644 --- a/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs +++ b/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs @@ -1010,6 +1010,7 @@ private void ToggleViewSubEditors(SaveFile sav) B_OpenRTCEditor.Enabled = sav.RS || sav.E || sav.Generation == 2; B_OpenUGSEditor.Enabled = sav.DP || sav.Pt; B_FestivalPlaza.Enabled = sav.Generation == 7; + B_MailBox.Enabled = sav.Generation >= 2 && sav.Generation <= 4; } GB_SAVtools.Visible = sav.Exportable && FLP_SAVtools.Controls.Cast().Any(c => c.Enabled); foreach (Control c in FLP_SAVtools.Controls.Cast()) @@ -1146,5 +1147,10 @@ private void B_FestivalPlaza_Click(object sender, EventArgs e) if (SAV.Generation == 7) new SAV_FestivalPlaza(SAV).ShowDialog(); } + private void B_MailBox_Click(object sender, EventArgs e) + { + new SAV_MailBox(SAV).ShowDialog(); + ResetParty(); + } } } diff --git a/PKHeX.WinForms/PKHeX.WinForms.csproj b/PKHeX.WinForms/PKHeX.WinForms.csproj index 498d668de..68eba5e66 100644 --- a/PKHeX.WinForms/PKHeX.WinForms.csproj +++ b/PKHeX.WinForms/PKHeX.WinForms.csproj @@ -498,6 +498,12 @@ SAV_Inventory.cs + + Form + + + SAV_MailBox.cs + Form @@ -712,6 +718,9 @@ SAV_Inventory.cs + + SAV_MailBox.cs + SAV_SimplePokedex.cs diff --git a/PKHeX.WinForms/Subforms/Save Editors/SAV_MailBox.Designer.cs b/PKHeX.WinForms/Subforms/Save Editors/SAV_MailBox.Designer.cs new file mode 100644 index 000000000..87c8936a2 --- /dev/null +++ b/PKHeX.WinForms/Subforms/Save Editors/SAV_MailBox.Designer.cs @@ -0,0 +1,999 @@ +namespace PKHeX.WinForms +{ + partial class SAV_MailBox + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SAV_MailBox)); + this.B_Cancel = new System.Windows.Forms.Button(); + this.B_Save = new System.Windows.Forms.Button(); + this.LB_PartyHeld = new System.Windows.Forms.ListBox(); + this.LB_PCBOX = new System.Windows.Forms.ListBox(); + this.B_Delete = new System.Windows.Forms.Button(); + this.L_BoxSize = new System.Windows.Forms.Label(); + this.TB_MessageBody21 = new System.Windows.Forms.TextBox(); + this.TB_MessageBody22 = new System.Windows.Forms.TextBox(); + this.TB_AuthorName = new System.Windows.Forms.TextBox(); + this.NUD_AuthorTID = new System.Windows.Forms.NumericUpDown(); + this.CB_AppearPKM1 = new System.Windows.Forms.ComboBox(); + this.CB_MailType = new System.Windows.Forms.ComboBox(); + this.NUD_AuthorSID = new System.Windows.Forms.NumericUpDown(); + this.NUD_BoxSize = new System.Windows.Forms.NumericUpDown(); + this.GB_MessageTB = new System.Windows.Forms.GroupBox(); + this.GB_MessageNUD = new System.Windows.Forms.GroupBox(); + this.NUD_Message23 = new System.Windows.Forms.NumericUpDown(); + this.NUD_Message13 = new System.Windows.Forms.NumericUpDown(); + this.NUD_Message03 = new System.Windows.Forms.NumericUpDown(); + this.NUD_Message22 = new System.Windows.Forms.NumericUpDown(); + this.NUD_Message21 = new System.Windows.Forms.NumericUpDown(); + this.NUD_Message20 = new System.Windows.Forms.NumericUpDown(); + this.NUD_Message12 = new System.Windows.Forms.NumericUpDown(); + this.NUD_Message11 = new System.Windows.Forms.NumericUpDown(); + this.NUD_Message10 = new System.Windows.Forms.NumericUpDown(); + this.NUD_Message02 = new System.Windows.Forms.NumericUpDown(); + this.NUD_Message01 = new System.Windows.Forms.NumericUpDown(); + this.NUD_Message00 = new System.Windows.Forms.NumericUpDown(); + this.GB_Author = new System.Windows.Forms.GroupBox(); + this.CB_AuthorVersion = new System.Windows.Forms.ComboBox(); + this.CB_AuthorLang = new System.Windows.Forms.ComboBox(); + this.Label_OTGender = new System.Windows.Forms.Label(); + this.L_MailType = new System.Windows.Forms.Label(); + this.L_AppearPKM = new System.Windows.Forms.Label(); + this.GB_PKM = new System.Windows.Forms.GroupBox(); + this.L_HeldItem6 = new System.Windows.Forms.Label(); + this.NUD_MailID6 = new System.Windows.Forms.NumericUpDown(); + this.L_PKM6 = new System.Windows.Forms.Label(); + this.L_HeldItem5 = new System.Windows.Forms.Label(); + this.NUD_MailID5 = new System.Windows.Forms.NumericUpDown(); + this.L_PKM5 = new System.Windows.Forms.Label(); + this.L_HeldItem4 = new System.Windows.Forms.Label(); + this.NUD_MailID4 = new System.Windows.Forms.NumericUpDown(); + this.L_PKM4 = new System.Windows.Forms.Label(); + this.L_HeldItem3 = new System.Windows.Forms.Label(); + this.NUD_MailID3 = new System.Windows.Forms.NumericUpDown(); + this.L_PKM3 = new System.Windows.Forms.Label(); + this.L_HeldItem2 = new System.Windows.Forms.Label(); + this.NUD_MailID2 = new System.Windows.Forms.NumericUpDown(); + this.L_PKM2 = new System.Windows.Forms.Label(); + this.L_HeldItem1 = new System.Windows.Forms.Label(); + this.NUD_MailID1 = new System.Windows.Forms.NumericUpDown(); + this.L_PKM1 = new System.Windows.Forms.Label(); + this.L_PartyHeld = new System.Windows.Forms.Label(); + this.L_PCBOX = new System.Windows.Forms.Label(); + this.CB_AppearPKM2 = new System.Windows.Forms.ComboBox(); + this.CB_AppearPKM3 = new System.Windows.Forms.ComboBox(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_AuthorTID)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_AuthorSID)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_BoxSize)).BeginInit(); + this.GB_MessageTB.SuspendLayout(); + this.GB_MessageNUD.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Message23)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Message13)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Message03)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Message22)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Message21)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Message20)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Message12)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Message11)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Message10)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Message02)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Message01)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Message00)).BeginInit(); + this.GB_Author.SuspendLayout(); + this.GB_PKM.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_MailID6)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_MailID5)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_MailID4)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_MailID3)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_MailID2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_MailID1)).BeginInit(); + this.SuspendLayout(); + // + // B_Cancel + // + this.B_Cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.B_Cancel.Location = new System.Drawing.Point(425, 371); + this.B_Cancel.Name = "B_Cancel"; + this.B_Cancel.Size = new System.Drawing.Size(75, 23); + this.B_Cancel.TabIndex = 0; + this.B_Cancel.Text = "Cancel"; + this.B_Cancel.UseVisualStyleBackColor = true; + this.B_Cancel.Click += new System.EventHandler(this.B_Cancel_Click); + // + // B_Save + // + this.B_Save.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.B_Save.Location = new System.Drawing.Point(509, 371); + this.B_Save.Name = "B_Save"; + this.B_Save.Size = new System.Drawing.Size(75, 23); + this.B_Save.TabIndex = 1; + this.B_Save.Text = "Save"; + this.B_Save.UseVisualStyleBackColor = true; + this.B_Save.Click += new System.EventHandler(this.B_Save_Click); + // + // LB_PartyHeld + // + this.LB_PartyHeld.FormattingEnabled = true; + this.LB_PartyHeld.IntegralHeight = false; + this.LB_PartyHeld.ItemHeight = 12; + this.LB_PartyHeld.Location = new System.Drawing.Point(15, 36); + this.LB_PartyHeld.Name = "LB_PartyHeld"; + this.LB_PartyHeld.Size = new System.Drawing.Size(120, 82); + this.LB_PartyHeld.TabIndex = 2; + this.LB_PartyHeld.SelectedIndexChanged += new System.EventHandler(this.EntryControl); + // + // LB_PCBOX + // + this.LB_PCBOX.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.LB_PCBOX.FormattingEnabled = true; + this.LB_PCBOX.IntegralHeight = false; + this.LB_PCBOX.ItemHeight = 12; + this.LB_PCBOX.Location = new System.Drawing.Point(15, 154); + this.LB_PCBOX.Name = "LB_PCBOX"; + this.LB_PCBOX.Size = new System.Drawing.Size(120, 190); + this.LB_PCBOX.TabIndex = 3; + this.LB_PCBOX.SelectedIndexChanged += new System.EventHandler(this.EntryControl); + // + // B_Delete + // + this.B_Delete.Location = new System.Drawing.Point(330, 15); + this.B_Delete.Name = "B_Delete"; + this.B_Delete.Size = new System.Drawing.Size(75, 23); + this.B_Delete.TabIndex = 4; + this.B_Delete.Text = "Delete"; + this.B_Delete.UseVisualStyleBackColor = true; + this.B_Delete.Click += new System.EventHandler(this.B_Delete_Click); + // + // L_BoxSize + // + this.L_BoxSize.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.L_BoxSize.Location = new System.Drawing.Point(12, 350); + this.L_BoxSize.Name = "L_BoxSize"; + this.L_BoxSize.Size = new System.Drawing.Size(129, 18); + this.L_BoxSize.TabIndex = 5; + this.L_BoxSize.Text = "MailBox (PC) Served:"; + this.L_BoxSize.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // TB_MessageBody21 + // + this.TB_MessageBody21.Location = new System.Drawing.Point(9, 21); + this.TB_MessageBody21.MaxLength = 16; + this.TB_MessageBody21.Name = "TB_MessageBody21"; + this.TB_MessageBody21.Size = new System.Drawing.Size(160, 19); + this.TB_MessageBody21.TabIndex = 7; + this.TB_MessageBody21.Text = "MMMMMMMMMMMMMMMM"; + // + // TB_MessageBody22 + // + this.TB_MessageBody22.Location = new System.Drawing.Point(9, 49); + this.TB_MessageBody22.MaxLength = 16; + this.TB_MessageBody22.Name = "TB_MessageBody22"; + this.TB_MessageBody22.Size = new System.Drawing.Size(160, 19); + this.TB_MessageBody22.TabIndex = 8; + this.TB_MessageBody22.Text = "MMMMMMMMMMMMMMMM"; + // + // TB_AuthorName + // + this.TB_AuthorName.Location = new System.Drawing.Point(9, 21); + this.TB_AuthorName.MaxLength = 7; + this.TB_AuthorName.Name = "TB_AuthorName"; + this.TB_AuthorName.Size = new System.Drawing.Size(83, 19); + this.TB_AuthorName.TabIndex = 9; + this.TB_AuthorName.Text = "MMMMMMM"; + // + // NUD_AuthorTID + // + this.NUD_AuthorTID.Location = new System.Drawing.Point(9, 49); + this.NUD_AuthorTID.Maximum = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + this.NUD_AuthorTID.Name = "NUD_AuthorTID"; + this.NUD_AuthorTID.Size = new System.Drawing.Size(54, 19); + this.NUD_AuthorTID.TabIndex = 10; + this.NUD_AuthorTID.Value = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + // + // CB_AppearPKM1 + // + this.CB_AppearPKM1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CB_AppearPKM1.FormattingEnabled = true; + this.CB_AppearPKM1.Location = new System.Drawing.Point(235, 276); + this.CB_AppearPKM1.Name = "CB_AppearPKM1"; + this.CB_AppearPKM1.Size = new System.Drawing.Size(107, 20); + this.CB_AppearPKM1.TabIndex = 11; + // + // CB_MailType + // + this.CB_MailType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CB_MailType.FormattingEnabled = true; + this.CB_MailType.Location = new System.Drawing.Point(235, 247); + this.CB_MailType.Name = "CB_MailType"; + this.CB_MailType.Size = new System.Drawing.Size(107, 20); + this.CB_MailType.TabIndex = 12; + // + // NUD_AuthorSID + // + this.NUD_AuthorSID.Location = new System.Drawing.Point(72, 49); + this.NUD_AuthorSID.Maximum = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + this.NUD_AuthorSID.Name = "NUD_AuthorSID"; + this.NUD_AuthorSID.Size = new System.Drawing.Size(54, 19); + this.NUD_AuthorSID.TabIndex = 13; + this.NUD_AuthorSID.Value = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + // + // NUD_BoxSize + // + this.NUD_BoxSize.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.NUD_BoxSize.Location = new System.Drawing.Point(90, 371); + this.NUD_BoxSize.Maximum = new decimal(new int[] { + 10, + 0, + 0, + 0}); + this.NUD_BoxSize.Name = "NUD_BoxSize"; + this.NUD_BoxSize.Size = new System.Drawing.Size(37, 19); + this.NUD_BoxSize.TabIndex = 14; + this.NUD_BoxSize.Value = new decimal(new int[] { + 10, + 0, + 0, + 0}); + this.NUD_BoxSize.ValueChanged += new System.EventHandler(this.NUD_BoxSize_ValueChanged); + // + // GB_MessageTB + // + this.GB_MessageTB.Controls.Add(this.TB_MessageBody21); + this.GB_MessageTB.Controls.Add(this.TB_MessageBody22); + this.GB_MessageTB.Location = new System.Drawing.Point(144, 47); + this.GB_MessageTB.Name = "GB_MessageTB"; + this.GB_MessageTB.Size = new System.Drawing.Size(178, 77); + this.GB_MessageTB.TabIndex = 15; + this.GB_MessageTB.TabStop = false; + this.GB_MessageTB.Text = "Message"; + // + // GB_MessageNUD + // + this.GB_MessageNUD.Controls.Add(this.NUD_Message23); + this.GB_MessageNUD.Controls.Add(this.NUD_Message13); + this.GB_MessageNUD.Controls.Add(this.NUD_Message03); + this.GB_MessageNUD.Controls.Add(this.NUD_Message22); + this.GB_MessageNUD.Controls.Add(this.NUD_Message21); + this.GB_MessageNUD.Controls.Add(this.NUD_Message20); + this.GB_MessageNUD.Controls.Add(this.NUD_Message12); + this.GB_MessageNUD.Controls.Add(this.NUD_Message11); + this.GB_MessageNUD.Controls.Add(this.NUD_Message10); + this.GB_MessageNUD.Controls.Add(this.NUD_Message02); + this.GB_MessageNUD.Controls.Add(this.NUD_Message01); + this.GB_MessageNUD.Controls.Add(this.NUD_Message00); + this.GB_MessageNUD.Location = new System.Drawing.Point(144, 47); + this.GB_MessageNUD.Name = "GB_MessageNUD"; + this.GB_MessageNUD.Size = new System.Drawing.Size(261, 105); + this.GB_MessageNUD.TabIndex = 16; + this.GB_MessageNUD.TabStop = false; + this.GB_MessageNUD.Text = "Message"; + // + // NUD_Message23 + // + this.NUD_Message23.Location = new System.Drawing.Point(198, 77); + this.NUD_Message23.Maximum = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + this.NUD_Message23.Name = "NUD_Message23"; + this.NUD_Message23.Size = new System.Drawing.Size(54, 19); + this.NUD_Message23.TabIndex = 11; + this.NUD_Message23.Value = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + // + // NUD_Message13 + // + this.NUD_Message13.Location = new System.Drawing.Point(198, 49); + this.NUD_Message13.Maximum = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + this.NUD_Message13.Name = "NUD_Message13"; + this.NUD_Message13.Size = new System.Drawing.Size(54, 19); + this.NUD_Message13.TabIndex = 7; + this.NUD_Message13.Value = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + // + // NUD_Message03 + // + this.NUD_Message03.Location = new System.Drawing.Point(198, 21); + this.NUD_Message03.Maximum = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + this.NUD_Message03.Name = "NUD_Message03"; + this.NUD_Message03.Size = new System.Drawing.Size(54, 19); + this.NUD_Message03.TabIndex = 3; + this.NUD_Message03.Value = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + // + // NUD_Message22 + // + this.NUD_Message22.Location = new System.Drawing.Point(135, 77); + this.NUD_Message22.Maximum = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + this.NUD_Message22.Name = "NUD_Message22"; + this.NUD_Message22.Size = new System.Drawing.Size(54, 19); + this.NUD_Message22.TabIndex = 10; + this.NUD_Message22.Value = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + // + // NUD_Message21 + // + this.NUD_Message21.Location = new System.Drawing.Point(72, 77); + this.NUD_Message21.Maximum = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + this.NUD_Message21.Name = "NUD_Message21"; + this.NUD_Message21.Size = new System.Drawing.Size(54, 19); + this.NUD_Message21.TabIndex = 9; + this.NUD_Message21.Value = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + // + // NUD_Message20 + // + this.NUD_Message20.Location = new System.Drawing.Point(9, 77); + this.NUD_Message20.Maximum = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + this.NUD_Message20.Name = "NUD_Message20"; + this.NUD_Message20.Size = new System.Drawing.Size(54, 19); + this.NUD_Message20.TabIndex = 8; + this.NUD_Message20.Value = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + // + // NUD_Message12 + // + this.NUD_Message12.Location = new System.Drawing.Point(135, 49); + this.NUD_Message12.Maximum = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + this.NUD_Message12.Name = "NUD_Message12"; + this.NUD_Message12.Size = new System.Drawing.Size(54, 19); + this.NUD_Message12.TabIndex = 6; + this.NUD_Message12.Value = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + // + // NUD_Message11 + // + this.NUD_Message11.Location = new System.Drawing.Point(72, 49); + this.NUD_Message11.Maximum = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + this.NUD_Message11.Name = "NUD_Message11"; + this.NUD_Message11.Size = new System.Drawing.Size(54, 19); + this.NUD_Message11.TabIndex = 5; + this.NUD_Message11.Value = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + // + // NUD_Message10 + // + this.NUD_Message10.Location = new System.Drawing.Point(9, 49); + this.NUD_Message10.Maximum = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + this.NUD_Message10.Name = "NUD_Message10"; + this.NUD_Message10.Size = new System.Drawing.Size(54, 19); + this.NUD_Message10.TabIndex = 4; + this.NUD_Message10.Value = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + // + // NUD_Message02 + // + this.NUD_Message02.Location = new System.Drawing.Point(135, 21); + this.NUD_Message02.Maximum = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + this.NUD_Message02.Name = "NUD_Message02"; + this.NUD_Message02.Size = new System.Drawing.Size(54, 19); + this.NUD_Message02.TabIndex = 2; + this.NUD_Message02.Value = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + // + // NUD_Message01 + // + this.NUD_Message01.Location = new System.Drawing.Point(72, 21); + this.NUD_Message01.Maximum = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + this.NUD_Message01.Name = "NUD_Message01"; + this.NUD_Message01.Size = new System.Drawing.Size(54, 19); + this.NUD_Message01.TabIndex = 1; + this.NUD_Message01.Value = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + // + // NUD_Message00 + // + this.NUD_Message00.Location = new System.Drawing.Point(9, 21); + this.NUD_Message00.Maximum = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + this.NUD_Message00.Name = "NUD_Message00"; + this.NUD_Message00.Size = new System.Drawing.Size(54, 19); + this.NUD_Message00.TabIndex = 0; + this.NUD_Message00.Value = new decimal(new int[] { + 65535, + 0, + 0, + 0}); + // + // GB_Author + // + this.GB_Author.Controls.Add(this.CB_AuthorVersion); + this.GB_Author.Controls.Add(this.CB_AuthorLang); + this.GB_Author.Controls.Add(this.Label_OTGender); + this.GB_Author.Controls.Add(this.TB_AuthorName); + this.GB_Author.Controls.Add(this.NUD_AuthorTID); + this.GB_Author.Controls.Add(this.NUD_AuthorSID); + this.GB_Author.Location = new System.Drawing.Point(144, 161); + this.GB_Author.Name = "GB_Author"; + this.GB_Author.Size = new System.Drawing.Size(261, 77); + this.GB_Author.TabIndex = 17; + this.GB_Author.TabStop = false; + this.GB_Author.Text = "Author"; + // + // CB_AuthorVersion + // + this.CB_AuthorVersion.FormattingEnabled = true; + this.CB_AuthorVersion.Location = new System.Drawing.Point(135, 48); + this.CB_AuthorVersion.Name = "CB_AuthorVersion"; + this.CB_AuthorVersion.Size = new System.Drawing.Size(117, 20); + this.CB_AuthorVersion.TabIndex = 60; + // + // CB_AuthorLang + // + this.CB_AuthorLang.FormattingEnabled = true; + this.CB_AuthorLang.Location = new System.Drawing.Point(135, 19); + this.CB_AuthorLang.Name = "CB_AuthorLang"; + this.CB_AuthorLang.Size = new System.Drawing.Size(117, 20); + this.CB_AuthorLang.TabIndex = 59; + // + // Label_OTGender + // + this.Label_OTGender.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label_OTGender.Location = new System.Drawing.Point(101, 19); + this.Label_OTGender.Name = "Label_OTGender"; + this.Label_OTGender.Size = new System.Drawing.Size(20, 20); + this.Label_OTGender.TabIndex = 58; + this.Label_OTGender.Text = "G"; + this.Label_OTGender.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.Label_OTGender.Click += new System.EventHandler(this.Label_OTGender_Click); + // + // L_MailType + // + this.L_MailType.Location = new System.Drawing.Point(157, 247); + this.L_MailType.Name = "L_MailType"; + this.L_MailType.Size = new System.Drawing.Size(72, 18); + this.L_MailType.TabIndex = 18; + this.L_MailType.Text = "Mail Type:"; + this.L_MailType.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // L_AppearPKM + // + this.L_AppearPKM.Location = new System.Drawing.Point(144, 276); + this.L_AppearPKM.Name = "L_AppearPKM"; + this.L_AppearPKM.Size = new System.Drawing.Size(85, 18); + this.L_AppearPKM.TabIndex = 19; + this.L_AppearPKM.Text = "Appear PKM:"; + this.L_AppearPKM.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // GB_PKM + // + this.GB_PKM.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.GB_PKM.Controls.Add(this.L_HeldItem6); + this.GB_PKM.Controls.Add(this.NUD_MailID6); + this.GB_PKM.Controls.Add(this.L_PKM6); + this.GB_PKM.Controls.Add(this.L_HeldItem5); + this.GB_PKM.Controls.Add(this.NUD_MailID5); + this.GB_PKM.Controls.Add(this.L_PKM5); + this.GB_PKM.Controls.Add(this.L_HeldItem4); + this.GB_PKM.Controls.Add(this.NUD_MailID4); + this.GB_PKM.Controls.Add(this.L_PKM4); + this.GB_PKM.Controls.Add(this.L_HeldItem3); + this.GB_PKM.Controls.Add(this.NUD_MailID3); + this.GB_PKM.Controls.Add(this.L_PKM3); + this.GB_PKM.Controls.Add(this.L_HeldItem2); + this.GB_PKM.Controls.Add(this.NUD_MailID2); + this.GB_PKM.Controls.Add(this.L_PKM2); + this.GB_PKM.Controls.Add(this.L_HeldItem1); + this.GB_PKM.Controls.Add(this.NUD_MailID1); + this.GB_PKM.Controls.Add(this.L_PKM1); + this.GB_PKM.Location = new System.Drawing.Point(414, 15); + this.GB_PKM.Name = "GB_PKM"; + this.GB_PKM.Size = new System.Drawing.Size(170, 242); + this.GB_PKM.TabIndex = 20; + this.GB_PKM.TabStop = false; + this.GB_PKM.Text = "Held MailID"; + // + // L_HeldItem6 + // + this.L_HeldItem6.Location = new System.Drawing.Point(9, 218); + this.L_HeldItem6.Name = "L_HeldItem6"; + this.L_HeldItem6.Size = new System.Drawing.Size(100, 18); + this.L_HeldItem6.TabIndex = 17; + this.L_HeldItem6.Text = "(Mail)"; + this.L_HeldItem6.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // NUD_MailID6 + // + this.NUD_MailID6.Location = new System.Drawing.Point(118, 201); + this.NUD_MailID6.Maximum = new decimal(new int[] { + 5, + 0, + 0, + 0}); + this.NUD_MailID6.Minimum = new decimal(new int[] { + 1, + 0, + 0, + -2147483648}); + this.NUD_MailID6.Name = "NUD_MailID6"; + this.NUD_MailID6.Size = new System.Drawing.Size(43, 19); + this.NUD_MailID6.TabIndex = 16; + this.NUD_MailID6.Value = new decimal(new int[] { + 5, + 0, + 0, + 0}); + // + // L_PKM6 + // + this.L_PKM6.Location = new System.Drawing.Point(9, 200); + this.L_PKM6.Name = "L_PKM6"; + this.L_PKM6.Size = new System.Drawing.Size(100, 18); + this.L_PKM6.TabIndex = 15; + this.L_PKM6.Text = "Bulbasaur:"; + this.L_PKM6.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // L_HeldItem5 + // + this.L_HeldItem5.Location = new System.Drawing.Point(9, 182); + this.L_HeldItem5.Name = "L_HeldItem5"; + this.L_HeldItem5.Size = new System.Drawing.Size(100, 18); + this.L_HeldItem5.TabIndex = 14; + this.L_HeldItem5.Text = "(Mail)"; + this.L_HeldItem5.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // NUD_MailID5 + // + this.NUD_MailID5.Location = new System.Drawing.Point(118, 165); + this.NUD_MailID5.Maximum = new decimal(new int[] { + 5, + 0, + 0, + 0}); + this.NUD_MailID5.Minimum = new decimal(new int[] { + 1, + 0, + 0, + -2147483648}); + this.NUD_MailID5.Name = "NUD_MailID5"; + this.NUD_MailID5.Size = new System.Drawing.Size(43, 19); + this.NUD_MailID5.TabIndex = 13; + this.NUD_MailID5.Value = new decimal(new int[] { + 5, + 0, + 0, + 0}); + // + // L_PKM5 + // + this.L_PKM5.Location = new System.Drawing.Point(9, 164); + this.L_PKM5.Name = "L_PKM5"; + this.L_PKM5.Size = new System.Drawing.Size(100, 18); + this.L_PKM5.TabIndex = 12; + this.L_PKM5.Text = "Bulbasaur:"; + this.L_PKM5.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // L_HeldItem4 + // + this.L_HeldItem4.Location = new System.Drawing.Point(9, 146); + this.L_HeldItem4.Name = "L_HeldItem4"; + this.L_HeldItem4.Size = new System.Drawing.Size(100, 18); + this.L_HeldItem4.TabIndex = 11; + this.L_HeldItem4.Text = "(Mail)"; + this.L_HeldItem4.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // NUD_MailID4 + // + this.NUD_MailID4.Location = new System.Drawing.Point(118, 129); + this.NUD_MailID4.Maximum = new decimal(new int[] { + 5, + 0, + 0, + 0}); + this.NUD_MailID4.Minimum = new decimal(new int[] { + 1, + 0, + 0, + -2147483648}); + this.NUD_MailID4.Name = "NUD_MailID4"; + this.NUD_MailID4.Size = new System.Drawing.Size(43, 19); + this.NUD_MailID4.TabIndex = 10; + this.NUD_MailID4.Value = new decimal(new int[] { + 5, + 0, + 0, + 0}); + // + // L_PKM4 + // + this.L_PKM4.Location = new System.Drawing.Point(9, 128); + this.L_PKM4.Name = "L_PKM4"; + this.L_PKM4.Size = new System.Drawing.Size(100, 18); + this.L_PKM4.TabIndex = 9; + this.L_PKM4.Text = "Bulbasaur:"; + this.L_PKM4.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // L_HeldItem3 + // + this.L_HeldItem3.Location = new System.Drawing.Point(9, 110); + this.L_HeldItem3.Name = "L_HeldItem3"; + this.L_HeldItem3.Size = new System.Drawing.Size(100, 18); + this.L_HeldItem3.TabIndex = 8; + this.L_HeldItem3.Text = "(Mail)"; + this.L_HeldItem3.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // NUD_MailID3 + // + this.NUD_MailID3.Location = new System.Drawing.Point(118, 93); + this.NUD_MailID3.Maximum = new decimal(new int[] { + 5, + 0, + 0, + 0}); + this.NUD_MailID3.Minimum = new decimal(new int[] { + 1, + 0, + 0, + -2147483648}); + this.NUD_MailID3.Name = "NUD_MailID3"; + this.NUD_MailID3.Size = new System.Drawing.Size(43, 19); + this.NUD_MailID3.TabIndex = 7; + this.NUD_MailID3.Value = new decimal(new int[] { + 5, + 0, + 0, + 0}); + // + // L_PKM3 + // + this.L_PKM3.Location = new System.Drawing.Point(9, 92); + this.L_PKM3.Name = "L_PKM3"; + this.L_PKM3.Size = new System.Drawing.Size(100, 18); + this.L_PKM3.TabIndex = 6; + this.L_PKM3.Text = "Bulbasaur:"; + this.L_PKM3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // L_HeldItem2 + // + this.L_HeldItem2.Location = new System.Drawing.Point(9, 74); + this.L_HeldItem2.Name = "L_HeldItem2"; + this.L_HeldItem2.Size = new System.Drawing.Size(100, 18); + this.L_HeldItem2.TabIndex = 5; + this.L_HeldItem2.Text = "(Mail)"; + this.L_HeldItem2.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // NUD_MailID2 + // + this.NUD_MailID2.Location = new System.Drawing.Point(118, 57); + this.NUD_MailID2.Maximum = new decimal(new int[] { + 5, + 0, + 0, + 0}); + this.NUD_MailID2.Minimum = new decimal(new int[] { + 1, + 0, + 0, + -2147483648}); + this.NUD_MailID2.Name = "NUD_MailID2"; + this.NUD_MailID2.Size = new System.Drawing.Size(43, 19); + this.NUD_MailID2.TabIndex = 4; + this.NUD_MailID2.Value = new decimal(new int[] { + 5, + 0, + 0, + 0}); + // + // L_PKM2 + // + this.L_PKM2.Location = new System.Drawing.Point(9, 56); + this.L_PKM2.Name = "L_PKM2"; + this.L_PKM2.Size = new System.Drawing.Size(100, 18); + this.L_PKM2.TabIndex = 3; + this.L_PKM2.Text = "Bulbasaur:"; + this.L_PKM2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // L_HeldItem1 + // + this.L_HeldItem1.Location = new System.Drawing.Point(9, 38); + this.L_HeldItem1.Name = "L_HeldItem1"; + this.L_HeldItem1.Size = new System.Drawing.Size(100, 18); + this.L_HeldItem1.TabIndex = 2; + this.L_HeldItem1.Text = "(Mail)"; + this.L_HeldItem1.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // NUD_MailID1 + // + this.NUD_MailID1.Location = new System.Drawing.Point(118, 21); + this.NUD_MailID1.Maximum = new decimal(new int[] { + 5, + 0, + 0, + 0}); + this.NUD_MailID1.Minimum = new decimal(new int[] { + 1, + 0, + 0, + -2147483648}); + this.NUD_MailID1.Name = "NUD_MailID1"; + this.NUD_MailID1.Size = new System.Drawing.Size(43, 19); + this.NUD_MailID1.TabIndex = 1; + this.NUD_MailID1.Value = new decimal(new int[] { + 5, + 0, + 0, + 0}); + // + // L_PKM1 + // + this.L_PKM1.Location = new System.Drawing.Point(9, 20); + this.L_PKM1.Name = "L_PKM1"; + this.L_PKM1.Size = new System.Drawing.Size(100, 18); + this.L_PKM1.TabIndex = 0; + this.L_PKM1.Text = "Bulbasaur:"; + this.L_PKM1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // L_PartyHeld + // + this.L_PartyHeld.Location = new System.Drawing.Point(15, 12); + this.L_PartyHeld.Name = "L_PartyHeld"; + this.L_PartyHeld.Size = new System.Drawing.Size(100, 18); + this.L_PartyHeld.TabIndex = 21; + this.L_PartyHeld.Text = "MailBox (Party)"; + this.L_PartyHeld.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // L_PCBOX + // + this.L_PCBOX.Location = new System.Drawing.Point(15, 130); + this.L_PCBOX.Name = "L_PCBOX"; + this.L_PCBOX.Size = new System.Drawing.Size(88, 18); + this.L_PCBOX.TabIndex = 22; + this.L_PCBOX.Text = "MailBox (PC)"; + this.L_PCBOX.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // CB_AppearPKM2 + // + this.CB_AppearPKM2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CB_AppearPKM2.FormattingEnabled = true; + this.CB_AppearPKM2.Location = new System.Drawing.Point(351, 276); + this.CB_AppearPKM2.Name = "CB_AppearPKM2"; + this.CB_AppearPKM2.Size = new System.Drawing.Size(107, 20); + this.CB_AppearPKM2.TabIndex = 23; + // + // CB_AppearPKM3 + // + this.CB_AppearPKM3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CB_AppearPKM3.FormattingEnabled = true; + this.CB_AppearPKM3.Location = new System.Drawing.Point(467, 276); + this.CB_AppearPKM3.Name = "CB_AppearPKM3"; + this.CB_AppearPKM3.Size = new System.Drawing.Size(107, 20); + this.CB_AppearPKM3.TabIndex = 24; + // + // SAV_MailBox + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(599, 409); + this.Controls.Add(this.CB_AppearPKM3); + this.Controls.Add(this.CB_AppearPKM2); + this.Controls.Add(this.L_PCBOX); + this.Controls.Add(this.L_PartyHeld); + this.Controls.Add(this.GB_PKM); + this.Controls.Add(this.L_AppearPKM); + this.Controls.Add(this.L_MailType); + this.Controls.Add(this.GB_Author); + this.Controls.Add(this.GB_MessageTB); + this.Controls.Add(this.GB_MessageNUD); + this.Controls.Add(this.NUD_BoxSize); + this.Controls.Add(this.CB_MailType); + this.Controls.Add(this.CB_AppearPKM1); + this.Controls.Add(this.L_BoxSize); + this.Controls.Add(this.B_Delete); + this.Controls.Add(this.LB_PCBOX); + this.Controls.Add(this.LB_PartyHeld); + this.Controls.Add(this.B_Save); + this.Controls.Add(this.B_Cancel); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "SAV_MailBox"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "MailBox Editor"; + ((System.ComponentModel.ISupportInitialize)(this.NUD_AuthorTID)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_AuthorSID)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_BoxSize)).EndInit(); + this.GB_MessageTB.ResumeLayout(false); + this.GB_MessageTB.PerformLayout(); + this.GB_MessageNUD.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Message23)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Message13)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Message03)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Message22)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Message21)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Message20)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Message12)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Message11)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Message10)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Message02)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Message01)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_Message00)).EndInit(); + this.GB_Author.ResumeLayout(false); + this.GB_Author.PerformLayout(); + this.GB_PKM.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.NUD_MailID6)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_MailID5)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_MailID4)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_MailID3)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_MailID2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_MailID1)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button B_Cancel; + private System.Windows.Forms.Button B_Save; + private System.Windows.Forms.ListBox LB_PartyHeld; + private System.Windows.Forms.ListBox LB_PCBOX; + private System.Windows.Forms.Button B_Delete; + private System.Windows.Forms.Label L_BoxSize; + private System.Windows.Forms.TextBox TB_MessageBody21; + private System.Windows.Forms.TextBox TB_MessageBody22; + private System.Windows.Forms.TextBox TB_AuthorName; + private System.Windows.Forms.NumericUpDown NUD_AuthorTID; + private System.Windows.Forms.ComboBox CB_AppearPKM1; + private System.Windows.Forms.ComboBox CB_MailType; + private System.Windows.Forms.NumericUpDown NUD_AuthorSID; + private System.Windows.Forms.NumericUpDown NUD_BoxSize; + private System.Windows.Forms.GroupBox GB_MessageTB; + private System.Windows.Forms.GroupBox GB_MessageNUD; + private System.Windows.Forms.NumericUpDown NUD_Message22; + private System.Windows.Forms.NumericUpDown NUD_Message21; + private System.Windows.Forms.NumericUpDown NUD_Message20; + private System.Windows.Forms.NumericUpDown NUD_Message12; + private System.Windows.Forms.NumericUpDown NUD_Message11; + private System.Windows.Forms.NumericUpDown NUD_Message10; + private System.Windows.Forms.NumericUpDown NUD_Message02; + private System.Windows.Forms.NumericUpDown NUD_Message01; + private System.Windows.Forms.NumericUpDown NUD_Message00; + private System.Windows.Forms.GroupBox GB_Author; + private System.Windows.Forms.Label L_MailType; + private System.Windows.Forms.Label L_AppearPKM; + private System.Windows.Forms.GroupBox GB_PKM; + private System.Windows.Forms.NumericUpDown NUD_MailID1; + private System.Windows.Forms.Label L_PKM1; + private System.Windows.Forms.Label L_PartyHeld; + private System.Windows.Forms.Label L_PCBOX; + private System.Windows.Forms.Label L_HeldItem6; + private System.Windows.Forms.NumericUpDown NUD_MailID6; + private System.Windows.Forms.Label L_PKM6; + private System.Windows.Forms.Label L_HeldItem5; + private System.Windows.Forms.NumericUpDown NUD_MailID5; + private System.Windows.Forms.Label L_PKM5; + private System.Windows.Forms.Label L_HeldItem4; + private System.Windows.Forms.NumericUpDown NUD_MailID4; + private System.Windows.Forms.Label L_PKM4; + private System.Windows.Forms.Label L_HeldItem3; + private System.Windows.Forms.NumericUpDown NUD_MailID3; + private System.Windows.Forms.Label L_PKM3; + private System.Windows.Forms.Label L_HeldItem2; + private System.Windows.Forms.NumericUpDown NUD_MailID2; + private System.Windows.Forms.Label L_PKM2; + private System.Windows.Forms.Label L_HeldItem1; + private System.Windows.Forms.ComboBox CB_AppearPKM2; + private System.Windows.Forms.ComboBox CB_AppearPKM3; + private System.Windows.Forms.NumericUpDown NUD_Message03; + private System.Windows.Forms.NumericUpDown NUD_Message13; + private System.Windows.Forms.NumericUpDown NUD_Message23; + private System.Windows.Forms.ComboBox CB_AuthorVersion; + private System.Windows.Forms.ComboBox CB_AuthorLang; + private System.Windows.Forms.Label Label_OTGender; + } +} \ No newline at end of file diff --git a/PKHeX.WinForms/Subforms/Save Editors/SAV_MailBox.cs b/PKHeX.WinForms/Subforms/Save Editors/SAV_MailBox.cs new file mode 100644 index 000000000..464927caf --- /dev/null +++ b/PKHeX.WinForms/Subforms/Save Editors/SAV_MailBox.cs @@ -0,0 +1,631 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Windows.Forms; +using PKHeX.Core; + +namespace PKHeX.WinForms +{ + public partial class SAV_MailBox : Form + { + private readonly SaveFile Origin; + private readonly SaveFile SAV; + public SAV_MailBox(SaveFile sav) + { + SAV = (Origin = sav).Clone(); + Gen = SAV.Generation; + p = SAV.PartyData; + editing = true; + InitializeComponent(); + + Messages = new NumericUpDown[][] { + new[] { NUD_Message00, NUD_Message01, NUD_Message02, NUD_Message03 }, + new[] { NUD_Message10, NUD_Message11, NUD_Message12, NUD_Message13 }, + new[] { NUD_Message20, NUD_Message21, NUD_Message22, NUD_Message23 } + }; + PKMLabels = new[] { L_PKM1, L_PKM2, L_PKM3, L_PKM4, L_PKM5, L_PKM6 }; + PKMHeldItems = new[] { L_HeldItem1, L_HeldItem2, L_HeldItem3, L_HeldItem4, L_HeldItem5, L_HeldItem6 }; + PKMNUDs = new[] { NUD_MailID1, NUD_MailID2, NUD_MailID3, NUD_MailID4, NUD_MailID5, NUD_MailID6 }; + AppearPKMs = new[] { CB_AppearPKM1, CB_AppearPKM2, CB_AppearPKM3 }; + + NUD_BoxSize.Visible = L_BoxSize.Visible = Gen == 2; + GB_MessageTB.Visible = Gen == 2; + GB_MessageNUD.Visible = Gen != 2; + Messages[0][3].Visible = Messages[1][3].Visible = Messages[2][3].Visible = Gen == 4; + NUD_AuthorSID.Visible = Gen != 2; + Label_OTGender.Visible = CB_AuthorLang.Visible = CB_AuthorVersion.Visible = AppearPKMs[1].Visible = AppearPKMs[2].Visible = Gen == 4; + for (int i = p.Count; i < 6; i++) + PKMNUDs[i].Visible = PKMLabels[i].Visible = PKMHeldItems[i].Visible = false; + if (Gen == 2 || Gen == 4) + { + for (int i = 0; i < PKMNUDs.Length; i++) + { + PKMNUDs[i].Value = i; + PKMNUDs[i].Enabled = false; + } + } + + switch (SAV) + { + case SAV2 sav2: + m = new Mail2[6 + 10]; + for (int i = 0; i < m.Length; i++) + m[i] = new Mail2(sav2, i); + + NUD_BoxSize.Value = SAV.Data[0x834]; + MakePartyList(); + MakePCList(); + MailItemID = Enumerable.Range(0xB5, 9).ToArray(); + break; + case SAV3 sav3: + m = new Mail3[6 + 10]; + for (int i = 0; i < m.Length; i++) + m[i] = new Mail3(sav3, i); + + MakePartyList(); + MakePCList(); + MailItemID = Enumerable.Range(0x79, 12).ToArray(); + break; + case SAV4 sav4: + m = new Mail4[p.Count + 20]; + for (int i = 0; i < p.Count; i++) + m[i] = new Mail4((p[i] as PK4).HeldMailData); + for (int i = p.Count, j = 0; i < m.Length; i++, j++) + m[i] = new Mail4(sav4, j); + + MakePartyList(); + MakePCList(); + MailItemID = Enumerable.Range(0x89, 12).ToArray(); + break; + } + + if (Gen == 2 || Gen == 3) + { + CB_AppearPKM1.Items.Clear(); + CB_AppearPKM1.DisplayMember = "Text"; + CB_AppearPKM1.ValueMember = "Value"; + CB_AppearPKM1.DataSource = new BindingSource(GameInfo.SpeciesDataSource.Where(id => id.Value <= sav.MaxSpeciesID).ToList(), null); + } + else if (Gen == 4) + { + var species = GameInfo.SpeciesDataSource.Where(id => id.Value <= sav.MaxSpeciesID).ToList(); + foreach(ComboBox a in AppearPKMs) + { + a.Items.Clear(); + a.DisplayMember = "Text"; + a.ValueMember = "Value"; + a.DataSource = new BindingSource(species, null); + } + + CB_AuthorVersion.Items.Clear(); + CB_AuthorVersion.DisplayMember = "Text"; + CB_AuthorVersion.ValueMember = "Value"; + CB_AuthorVersion.DataSource = new BindingSource(new ComboItem[] { + new ComboItem { Text = "Diamond", Value = (int)GameVersion.D }, + new ComboItem { Text = "Pearl", Value = (int)GameVersion.P }, + new ComboItem { Text = "Platinum", Value = (int)GameVersion.Pt }, + new ComboItem { Text = "HeartGold", Value = (int)GameVersion.HG }, + new ComboItem { Text = "SoulSilver", Value = (int)GameVersion.P }, + }.ToList(), null); + + CB_AuthorLang.Items.Clear(); + CB_AuthorLang.DisplayMember = "Text"; + CB_AuthorLang.ValueMember = "Value"; + CB_AuthorLang.DataSource = new BindingSource(new ComboItem[] { + // not sure + new ComboItem { Text = "JP", Value = 1 }, + new ComboItem { Text = "US", Value = 2 }, + new ComboItem { Text = "KOR", Value = 3 }, + }.ToList(), null); + } + + string[] ItemList = GameInfo.Strings.GetItemStrings(Gen, SAV.Version); + CB_MailType.Items.Clear(); + CB_MailType.Items.Add(ItemList[0]); + for (int i = 0; i < MailItemID.Length; i++) + CB_MailType.Items.Add(ItemList[MailItemID[i]]); + + LoadPKM(true); + entry = -1; + editing = false; + LB_PartyHeld.SelectedIndex = 0; + } + private readonly int[] HoennListMixed = { + 277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300, + 304,305,309,310,392,393,394,311,312,306,307,364,365,366,301,302,303,370,371,372,335,336,350,320,315,316, + 322,355,382,383,384,356,357,337,338,353,354,386,387,363,367,368,330,331,313,314, + 339,340,321,351,352,308,332,333,334,344,345,358,359,380,379,348,349,323,324, + 326,327,318,319,388,389,390,391,328,329,385,317,377,378,361,362,369,411,376,360, + 346,347,341,342,343,373,374,375,381,325,395,396,397,398,399,400, + 401,402,403,407,408,404,405,406,409,410 + }; + private void LoadList() + { + if (entry < 6) MakePartyList(); + else MakePCList(); + } + private void MakePartyList() + { + LB_PartyHeld.BeginUpdate(); + int s = LB_PartyHeld.SelectedIndex; + LB_PartyHeld.Items.Clear(); + for (int i = 0, j = Gen == 4 ? p.Count : 6; i < j; i++) + LB_PartyHeld.Items.Add($"{i}: {m[i].AuthorName}"); + if (s != LB_PartyHeld.SelectedIndex && s < LB_PartyHeld.Items.Count) + LB_PartyHeld.SelectedIndex = s; + LB_PartyHeld.EndUpdate(); + } + private void MakePCList() + { + LB_PCBOX.BeginUpdate(); + int s = LB_PCBOX.SelectedIndex; + LB_PCBOX.Items.Clear(); + switch (Gen) + { + case 2: + for (int i = 6, j = 0, boxsize = (int)NUD_BoxSize.Value; i < m.Length; i++, j++) { + if (j < boxsize) LB_PCBOX.Items.Add($"{i}: {m[i].AuthorName}"); + else LB_PCBOX.Items.Add("x"); + } + break; + case 3: + for (int i = 6; i < m.Length; i++) { + if (m[i].MailType != 0) LB_PCBOX.Items.Add($"{i}: {m[i].AuthorName}"); + else LB_PCBOX.Items.Add("x"); + } + break; + case 4: + for (int i = p.Count; i < m.Length; i++) { + if (m[i].MailType <= 11) LB_PCBOX.Items.Add($"{i}: {m[i].AuthorName}"); + else LB_PCBOX.Items.Add("x"); + } + break; + } + if (s != LB_PCBOX.SelectedIndex && s < LB_PCBOX.Items.Count) + LB_PCBOX.SelectedIndex = s; + LB_PCBOX.EndUpdate(); + } + private void LoadPKM(bool isInit) + { + for (int i = 0, j, k; i < p.Count; i++) + { + if (isInit) + PKMLabels[i].Text = GetSpeciesNameFromCB(p[i].Species); + j = MailTypeToCBIndex(p[i].HeldItem); + PKMHeldItems[i].Text = j <= 0 ? "(not Mail)" : CB_MailType.Items[j].ToString(); + PKMHeldItems[i].TextAlign = j <= 0 ? ContentAlignment.TopLeft : ContentAlignment.TopRight; + if (Gen == 3) + { + k = (p[i] as PK3).HeldMailID; + PKMNUDs[i].Value = k >= -1 && k <= 5 ? k : -1; + } + } + } + private readonly Mail[] m; + private bool editing; + private int entry; + private readonly NumericUpDown[][] Messages; + private readonly NumericUpDown[] PKMNUDs; + private readonly Label[] PKMLabels, PKMHeldItems; + private readonly ComboBox[] AppearPKMs; + private readonly int Gen; + private void Save() + { + switch (Gen) + { + case 2: + foreach (var n in m) n.CopyTo(SAV); + // duplicate + int ofs = 0x600; + int len = 0x2F * 6; + Array.Copy(SAV.Data, ofs, SAV.Data, ofs + len, len); + ofs += len << 1; + SAV.Data[ofs] = (byte)NUD_BoxSize.Value; + len = 0x2F * 10 + 1; + Array.Copy(SAV.Data, ofs, SAV.Data, ofs + len, len); + break; + case 3: + foreach (var n in m) n.CopyTo(SAV); + for (int i = 0; i < p.Count; i++) + (p[i] as PK3).HeldMailID = (sbyte)PKMNUDs[i].Value; + break; + case 4: + for (int i = 0; i < p.Count; i++) + m[i].CopyTo(p[i] as PK4); + for (int i = p.Count; i < m.Length; i++) + m[i].CopyTo(SAV); + break; + } + SAV.PartyData = p; + } + private void TempSave() + { + switch (m[entry]) + { + case Mail2 m2: + m2.AuthorName = TB_AuthorName.Text; + m2.AuthorTID = (ushort)NUD_AuthorTID.Value; + m2.MailType = CBIndexToMailType(CB_MailType.SelectedIndex); + + m2.SetMessage(TB_MessageBody21.Text, TB_MessageBody22.Text); + m2.AppearPKM = CB_AppearPKM1.SelectedValue as int? ?? 0; + break; + case Mail3 m3: + m3.AuthorName = TB_AuthorName.Text; + m3.AuthorTID = (ushort)NUD_AuthorTID.Value; + m3.MailType = CBIndexToMailType(CB_MailType.SelectedIndex); + + for (int y = 0; y < 2; y++) + for (int x = 0; x < 2; x++) + m3.SetMessage(y, x, (ushort)Messages[y][x].Value); + m3.AuthorSID = (ushort)NUD_AuthorSID.Value; + int v = CB_AppearPKM1.SelectedValue as int? ?? 0; + m3.AppearPKM = v < 252 ? v : HoennListMixed[v - 252]; + break; + case Mail4 m4: + m4.AuthorName = TB_AuthorName.Text; + m4.AuthorTID = (ushort)NUD_AuthorTID.Value; + v = CB_MailType.SelectedIndex; + m4.MailType = v > 0 ? v - 1 : 0xFF; + + for (int y = 0; y < 2; y++) + for (int x = 0; x < 3; x++) + m4.SetMessage(y, x, (ushort)Messages[y][x].Value); + m4.AuthorSID = (ushort)NUD_AuthorSID.Value; + for (int i = 0; i < AppearPKMs.Length; i++) + m4.SetAppearPKM(i, (AppearPKMs[i].SelectedValue as int?) + 7 ?? 0); + m4.AuthorVersion = CB_AuthorVersion.SelectedValue as byte? ?? 0; + m4.AuthorLanguage = CB_AuthorLang.SelectedValue as byte? ?? 0; + break; + } + } + private string CheckValid() + { + string ret = ""; + // Gen3 + // A: held item is mail, but heldMailID is not 0 to 5. it should be 0 to 5, or held not mail. + // B: held item is mail, but mail is empty(mail type is 0). it should be not empty, or held not mail and heldMailId -1. + // C: held item is not mail, but heldMailID is not -1. it should be -1, or held mail and mail not empty. + // D: other pkm have same heldMailID. it should be different. + // E: mail is not empty, but no pkm refer to the mail. it should be empty, or someone refer to the mail. + if (Gen == 3) + { + int[] heldMailIDs = new int[p.Count]; + for (int i = 0, h; i < p.Count; i++) + { + h = (p[i] as PK3).HeldMailID; + heldMailIDs[i] = h; + if (ItemIsMail(p[i].HeldItem)) + { + if (h < 0 || h > 5) //A + ret += $"{Environment.NewLine}Party#{i + 1} MailID mismatch"; + else if (m[h].MailType == 0) //B + ret += $"{Environment.NewLine}Party#{i + 1} MailID mismatch"; + } + else if (h != -1) //C + ret += $"{Environment.NewLine}Party#{i + 1} MailID mismatch"; + } + for(int i = 0; i < 6; i++) + { + if (heldMailIDs.Count(v => v == i) > 1) //D + ret += $"{Environment.NewLine}MailID{i} duplicated"; + if (m[i].MailType != 0 && heldMailIDs.All(v => v != i)) //E + ret += $"{Environment.NewLine}MailID{i} not referred"; + } + } + // Gen2, Gen4 + // P: held item is mail, but mail is empty(invalid mail type. g2:not 181 to 189, g4:12 to 255). it should be not empty or held not mail. + // Q: held item is not mail, but mail is not empty. it should be empty or held mail. + else if (Gen == 2) + { + for(int i = 0; i < p.Count; i++) + { + if (ItemIsMail(p[i].HeldItem)) + { + if (!ItemIsMail(m[i].MailType)) //P + ret += $"{Environment.NewLine}MailID{i} MailType mismatch"; + } + else if (m[i].MailType != 0) //Q + ret += $"{Environment.NewLine}MailID{i} MailType mismatch"; + } + } + else if (Gen == 4) + { + for(int i = 0; i < p.Count; i++) + { + if (ItemIsMail(p[i].HeldItem)) + { + if (m[i].MailType >= 12) //P + ret += $"{Environment.NewLine}MailID{i} MailType mismatch"; + } + else if (m[i].MailType != 0xFF) //Q + ret += $"{Environment.NewLine}MailID{i} MailType mismatch"; + } + } + return ret; + } + + private void B_Cancel_Click(object sender, EventArgs e) => Close(); + + private void B_Save_Click(object sender, EventArgs e) + { + if (entry >= 0) TempSave(); + Save(); + string Err = CheckValid(); + if (Err.Length == 0 || DialogResult.Yes == WinFormsUtil.Prompt(MessageBoxButtons.YesNo, $"Validation Error. Save?{Environment.NewLine}{Err}")) + { + Origin.SetData(SAV.Data, 0); + Close(); + } + } + private bool ItemIsMail(int itemID) => Array.IndexOf(MailItemID, itemID) >= 0; + private int MailTypeToCBIndex(int mailtype) => 1 + Array.IndexOf(MailItemID, mailtype); + private int CBIndexToMailType(int cbindex) => cbindex <= 0 ? 0 : cbindex <= MailItemID.Length ? MailItemID[cbindex - 1] : MailItemID[0]; + private int[] MailItemID; + private IList p; + private string GetSpeciesNameFromCB(int index) + { + foreach (ComboItem i in CB_AppearPKM1.Items) + if (index == i.Value) return i.Text; + return "PKM"; + } + private DialogResult ModifyHeldItem() + { + DialogResult ret = DialogResult.Abort; + if (entry >= p.Count) return ret; + PKM s = p[entry]; + if (!ItemIsMail(s.HeldItem)) return ret; + System.Media.SystemSounds.Question.Play(); + ret = MessageBox.Show($"Modify {PKMLabels[entry].Text}'s HeldItem?{Environment.NewLine}{Environment.NewLine} {PKMHeldItems[entry].Text} -> {CB_MailType.Items[0].ToString()}{Environment.NewLine}{Environment.NewLine}Yes: Delete Mail & Modify PKM{Environment.NewLine}No: Delete Mail", "Prompt", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button3); + if (ret != DialogResult.Yes) return ret; + s.HeldItem = 0; + if (Gen == 3) (s as PK3).HeldMailID = -1; + LoadPKM(false); + return ret; + } + private void B_Delete_Click(object sender, EventArgs e) + { + if (entry < 0) return; + if (entry < 6) + { + DialogResult ret= ModifyHeldItem(); + if (ret == DialogResult.Cancel) return; + } + editing = true; + switch (Gen) + { + case 2: + TB_MessageBody21.Text = TB_MessageBody22.Text = ""; + break; + case 3: + for (int y = 0; y < 3; y++) + for (int x = 0; x < 3; x++) + Messages[y][x].Value = 0xFFFF; + NUD_AuthorSID.Value = 0; + break; + case 4: + for (int y = 0; y < 3; y++) + for (int x = 0; x < 4; x++) + Messages[y][x].Value = x == 1 ? 0 : 0xFFFF; + NUD_AuthorSID.Value = 0; + CB_AppearPKM2.SelectedValue = CB_AppearPKM3.SelectedValue = 0; + // which value to reset? (version value is not detected) + // CB_AuthorLang.SelectedIndex = 0; + // CB_AuthorVersion.SelectedValue = 0; + break; + } + TB_AuthorName.Text = ""; + NUD_AuthorTID.Value = 0; + CB_AppearPKM1.SelectedValue = Gen == 3 ? 1 : 0; + CB_MailType.SelectedIndex = 0; + TempSave(); + LoadList(); + editing = false; + } + private void EntryControl(object sender, EventArgs e) + { + if (editing) return; + editing = true; + int partyIndex = LB_PartyHeld.SelectedIndex; + int pcIndex = LB_PCBOX.SelectedIndex; + if (entry >= 0) + { + TempSave(); + LoadList(); + } + if (sender == LB_PartyHeld && pcIndex >= 0) + { + pcIndex = -1; + LB_PCBOX.SelectedIndex = -1; + } + else if (sender == LB_PCBOX && partyIndex >= 0) + { + partyIndex = -1; + LB_PartyHeld.SelectedIndex = -1; + } + if (partyIndex >= 0) + entry = partyIndex; + else if (pcIndex >= 0) + entry = 6 + pcIndex; + else entry = -1; + if (entry >= 0) LoadMail(); + editing = false; + } + private void LoadMail() + { + switch (m[entry]) + { + case Mail2 m2: + TB_AuthorName.Text = m2.AuthorName; + NUD_AuthorTID.Value = m2.AuthorTID; + CB_MailType.SelectedIndex = MailTypeToCBIndex(m2.MailType); + + TB_MessageBody21.Text = m2.GetMessage(false); + TB_MessageBody22.Text = m2.GetMessage(true); + AppearPKMs[0].SelectedValue = m2.AppearPKM; + break; + case Mail3 m3: + TB_AuthorName.Text = m3.AuthorName; + NUD_AuthorTID.Value = m3.AuthorTID; + CB_MailType.SelectedIndex = MailTypeToCBIndex(m3.MailType); + + for (int y = 0; y < 3; y++) + for (int x = 0; x < 3; x++) + Messages[y][x].Value = m3.GetMessage(y, x); + NUD_AuthorSID.Value = m3.AuthorSID; + int v = Array.IndexOf(HoennListMixed, m3.AppearPKM); + AppearPKMs[0].SelectedValue = m3.AppearPKM < 252 ? m3.AppearPKM : v >= 0 ? 252 + v : 0; + break; + case Mail4 m4: + TB_AuthorName.Text = m4.AuthorName; + NUD_AuthorTID.Value = m4.AuthorTID; + v = m4.MailType; + CB_MailType.SelectedIndex = v <= 11 ? v + 1 : 0; + + for (int y = 0; y < 3; y++) + for (int x = 0; x < 4; x++) + Messages[y][x].Value = m4.GetMessage(y, x); + NUD_AuthorSID.Value = m4.AuthorSID; + for (int i = 0; i < AppearPKMs.Length; i++) + AppearPKMs[i].SelectedValue = Math.Max(0, m4.GetAppearPKM(i) - 7); + LoadOTlabel(m4.AuthorGender); + CB_AuthorVersion.SelectedValue = m4.AuthorVersion; + CB_AuthorLang.SelectedValue = m4.AuthorLanguage; + break; + } + } + + private readonly string[] gendersymbols = { "♂", "♀" }; + private void LoadOTlabel(int b) + { + Label_OTGender.Text = gendersymbols[b & 1]; + Label_OTGender.ForeColor = b == 1 ? Color.Red : Color.Blue; + } + private void Label_OTGender_Click(object sender, EventArgs e) + { + if (entry < 0) return; + if (Gen != 4) return; + var mail = m[entry] as Mail4; + var b = mail.AuthorGender; + b ^= 1; + mail.AuthorGender = b; + LoadOTlabel(b); + } + + private void NUD_BoxSize_ValueChanged(object sender, EventArgs e) + { + if (editing) return; + editing = true; + MakePCList(); + editing = false; + } + } + public class Mail2 : Mail + { + private bool US; + public Mail2(SAV2 sav, int index) + { + US = !sav.Japanese && !sav.Korean; + DataOffset = index < 6 ? index * 0x2F + 0x600 : (index - 6) * 0x2F + 0x835; + Data = sav.GetData(DataOffset, 0x2F); + } + public override string GetMessage(bool isLastLine) => US ? StringConverter.GetString1(Data, isLastLine ? 0x11 : 0, 0x10, false) : string.Empty; + public override void SetMessage(string line1, string line2) + { + if (US) + { + StringConverter.SetString1(line2, 0x10, false, 0x10, 0x50).CopyTo(Data, 0x11); + StringConverter.SetString1(line1, 0x10, false, 0x10, (ushort)(Data.Skip(0x11).Take(0x10).All(v => v == 0x50) ? 0x50 : 0x7F)).CopyTo(Data, 0); + Data[0x10] = 0x4E; + } + } + public override string AuthorName + { + get => US ? StringConverter.GetString1(Data, 0x21, 7, false) : string.Empty; + set + { + if (US) + { + StringConverter.SetString1(value, 7, false, 8, 0x50).CopyTo(Data, 0x21); + Data[0x29] = Data[0x2A] = 0; + } + } + } + public override ushort AuthorTID + { + get => (ushort)(Data[0x2B] << 8 | Data[0x2C]); + set + { + Data[0x2B] = (byte)(value >> 8); + Data[0x2C] = (byte)(value & 0xFF); + } + } + public override int AppearPKM { get => Data[0x2D]; set => Data[0x2D] = (byte)value; } + public override int MailType { get => Data[0x2E]; set => Data[0x2E] = (byte)value; } + } + public class Mail3 : Mail + { + public Mail3(SAV3 sav, int index) + { + DataOffset = index * 0x24 + sav.GetBlockOffset(3) + 0xCE0; + Data = sav.GetData(DataOffset, 0x24); + } + public override ushort GetMessage(int index1, int index2) => BitConverter.ToUInt16(Data, (index1 * 3 + index2) * 2); + public override void SetMessage(int index1, int index2, ushort value) => BitConverter.GetBytes(value).CopyTo(Data, (index1 * 3 + index2) * 2); + public override string AuthorName + { + get => StringConverter.GetString3(Data, 0x12, 7, false); + set + { + Data[0x18] = Data[0x19] = 0xFF; + StringConverter.SetString3(value, 7, false, 6, 0).CopyTo(Data, 0x12); + } + } + public override ushort AuthorTID { get => BitConverter.ToUInt16(Data, 0x1A); set => BitConverter.GetBytes(value).CopyTo(Data, 0x1A); } + public ushort AuthorSID { get => BitConverter.ToUInt16(Data, 0x1C); set => BitConverter.GetBytes(value).CopyTo(Data, 0x1C); } + public override int AppearPKM { get => BitConverter.ToUInt16(Data, 0x1E); set => BitConverter.GetBytes((ushort)(value == 0 ? 1 : value)).CopyTo(Data, 0x1E); } + public override int MailType { get => BitConverter.ToUInt16(Data, 0x20); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x20); } + } + public class Mail4 : Mail + { + public Mail4(SAV4 sav, int index) + { + switch (sav.Version) + { + case GameVersion.DP: DataOffset = index * 0x38 + 0x4BEC + sav.GetGBO; break; + case GameVersion.Pt: DataOffset = index * 0x38 + 0x4E80 + sav.GetGBO; break; + case GameVersion.HGSS: DataOffset = index * 0x38 + 0x3FA8 + sav.GetGBO; break; + } + Data = sav.GetData(DataOffset, 0x38); + } + public Mail4(byte[] data) => Data = data; + public override void CopyTo(PK4 pk4) => pk4.HeldMailData = Data; + public override ushort AuthorTID { get => BitConverter.ToUInt16(Data, 0); set => BitConverter.GetBytes(value).CopyTo(Data, 0); } + public ushort AuthorSID { get => BitConverter.ToUInt16(Data, 2); set => BitConverter.GetBytes(value).CopyTo(Data, 2); } + public byte AuthorGender { get => Data[4]; set => Data[4] = value; } + public byte AuthorLanguage { get => Data[5]; set => Data[5] = value; } + public byte AuthorVersion { get => Data[6]; set => Data[6] = value; } + public override int MailType { get => Data[7]; set => Data[7] = (byte)value; } + public override string AuthorName { get => StringConverter.GetString4(Data, 8, 0x10); set => StringConverter.SetString4(value, 7, 8, 0xFFFF).CopyTo(Data, 8); } + public int GetAppearPKM(int index) => BitConverter.ToUInt16(Data, 0x1C - index * 2); + public void SetAppearPKM(int index, int value) => BitConverter.GetBytes((ushort)(value == 0 ? 0xFFFF : value)).CopyTo(Data, 0x1C - index * 2); + public override ushort GetMessage(int index1, int index2) => BitConverter.ToUInt16(Data, 0x20 + (index1 * 4 + index2) * 2); + public override void SetMessage(int index1, int index2, ushort value) => BitConverter.GetBytes(value).CopyTo(Data, 0x20 + (index1 * 4 + index2) * 2); + } + public class Mail + { + protected byte[] Data; + protected int DataOffset; + public void CopyTo(SaveFile sav) => sav.SetData(Data, DataOffset); + public virtual void CopyTo(PK4 pk4) { } + public virtual string GetMessage(bool isLastLine) => null; + public virtual ushort GetMessage(int index1, int index2) => 0; + public virtual void SetMessage(string line1, string line2) { } + public virtual void SetMessage(int index1, int index2, ushort value) { } + public virtual string AuthorName { get; set; } + public virtual ushort AuthorTID { get; set; } + public virtual int AppearPKM { get; set; } + public virtual int MailType { get; set; } + } +} diff --git a/PKHeX.WinForms/Subforms/Save Editors/SAV_MailBox.resx b/PKHeX.WinForms/Subforms/Save Editors/SAV_MailBox.resx new file mode 100644 index 000000000..603f660be --- /dev/null +++ b/PKHeX.WinForms/Subforms/Save Editors/SAV_MailBox.resx @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAIAEBAAAAEAIABoBAAAJgAAACAgAAABACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAAAE + AAAAAAAAAAAAAAAAAAAAAAAAIyMjAQAAAAALCwsPJiYmJysrKycqKionKSkpJykpKScpKSknKioqJyoq + KicrKysnJycnJw0ODQ8AAAAAJiYmAQAAAABpaWlHq6ur17+/v+6+vr7svr6+7b6+vu2+vr7tvr6+7b6+ + vu2+vr7tvr6+7L+/v+6rq6vXampqSAAAAAAoKSgXvr++3eLi4v/g4OD94eHh/+Hh4f/i4uL/4uLi/+Li + 4v/i4uL/4eHh/+Dh4P/g4OD94uLi/7+/v90sLCwXfn5+PNna2frg4OD/39/f/uHh4f7h4eH+39/f/uDg + 4P7g4OD+39/f/uHh4f7h4OH+39/f/t/g3//a2tr6g4ODPoOCgz7X19f64+Pj/+Li4v7k5OT/4+Tj//Ly + 8v/19fX/9PT0//T09P/k5OT/5OTk/+Pj4/7j4+P/19jX+4qLikCDhIM+2tra++Xl5f/k5eT+5OTk//Lz + 8v+urq7/RUVF/z4+Pv+Zmpn/8fHx/+Xm5f/k5eT+5eXl/9ra2vyLi4tAhYWFPuXm5vvx8vP/7+/w/v// + //+sra3/AgIC/15eXv9tbG3/BQUF/4yMjP//////7+/w/vHy8//l5ub8jY2NQC4uLD5LS0f7UFBL/09P + Sv5YWVP/FBUS/29wcP///////////5SUlP8PDw//U1NO/1BQS/5PT0r/S0tH/DIyMEAAAAs+AAAM+wAA + Dv8AAA/+AwMS/wAAAP+UlJX///////////+3t7n/AAAA/wAAD/8BAQ/+AAAO/wAADPwCAg5ABARSPgoK + k/sNDab/DQ2o/hAQvP8CAmj/IiIW/7Kzrv/Cw8D/NDQm/wAATf8QELz/DQ2q/gwMp/8LC5T8Dg5bQAUF + Xj4KCpz7DQ2u/w0NsP4NDbX/Dw+//wUFYf8CAhL/AwMP/wMDTf8ODrj/Dg64/w0NsP4MDK7/Cwud/A8P + aEEGBmU9DAyl+w4Otf8ODrf+Dw+6/xAQvv8TE8v/EhK+/xAQvP8TE8v/EBDA/w8Puf8PD7f+Dg61/w0N + pvsREW9ACAhtQA8PsfsTE77/ExO//xQUwP8UFML/FBTD/xUVyP8WFsn/FRXE/xQUw/8UFMH/ExO//xMT + vv8QELL7ERF3QxkZdCgXF771ExPH/xUVyPwVFcn9FhbL/RcXzP0XF8z9FxfM/RcXy/0XF8v9FhbJ/RUV + yPwTE8f/Fxe+9RkZdykAAAAAIyOtghsbx/8ZGcj+GRnJ/xoayf8aGsn/GhrK/xoayv8aGsn/GhrJ/xkZ + yf8ZGcj+GxvH/yMjrYQAAAAAAADHAQAAAAAzM51FLCyscCoqrGwqKqxtKSmsbSoqrG0qKqxtKSmsbSoq + rG0qKqxsLCyscDMznUUAAAAAAAAAAP//AADAAwAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB + AACAAQAAgAEAAIABAACAAQAAgAEAAP//AAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKysrCR0dHSMWFhY3GBgYORgYGDkYGBg5GBgYORgY + GDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5FxcXNx4e + HiQuLi4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASEhIARYWFis7OzuVkJCQ2ampqeqqqqrsqqqq7Kqq + quyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqq + quypqanqkZGR2j09PZcXFxcsUFBQAQAAAAAAAAAAAAAAAAAAAAASEhIuhISEytvb2/7W1tb/19fX/9jY + 2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Y2Nj/2NjY/9jY + 2P/Y2Nj/2NjY/9fX1//W1tb/29vb/oeHh8sTExMvAAAAAAAAAAAAAAAAPDw8DGtra6zZ2dn/2dnZ/9ra + 2v/b29v/29vb/9vb2//c3Nz/3Nzc/9zc3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3Nzc/9zc + 3P/c3Nz/3Nzc/9vb2//b29v/29vb/9ra2v/Z2dn/2dnZ/21tba5DQ0MNAAAAAAAAAAAiIiIx1NXU9tna + 2f/c3Nz/3d3d/93e3f/e3t7/3t7e/9/f3//f39//39/f/9/g3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg + 4P/g4OD/39/f/9/f3//f39//3t/e/97e3v/d3t3/3d3d/9zc3P/Z2tn/1dXV9icnJzMAAAAAAAAAAFhZ + WFzf4N//3Nzc/97e3v/f39//39/f/9/g3//g4OD/4ODg/+Hh4f/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li + 4v/i4uL/4uLi/+Hi4f/h4eH/4eHh/+Dg4P/g4OD/3+Df/9/f3//f39//3t7e/9zc3P/f39//XV1dXQAA + AAAAAAAAZmZmZdvc2//e3t7/3+Df/+Dg4P/g4eD/4eHh/+Hi4f/i4uL/4uPi/+Pj4//j4+P/5OTk/+Tk + 5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Pj4//j4+P/4uLi/+Li4v/h4eH/4eHh/+Dg4P/f4N//3t7e/9vb + 2/9wcHBoAAAAAAAAAABoaGhl3d3d/9/f3//h4eH/4eLh/+Li4v/j4+P/4+Pj/+Tk5P/k5OT/5eXl/+Xl + 5f/l5uX/5ubm/+bm5v/m5ub/5ubm/+bm5v/l5eX/5eXl/+Tk5P/k5OT/4+Pj/+Pj4//i4uL/4uLi/+Hh + 4f/f39//3N3c/3Nzc2kAAAAAAAAAAGhoaGXe3t7/4ODg/+Li4v/j4+P/4+Pj/+Tk5P/l5eX/5eXl/+bm + 5v/m5+b/5+fn/+fn5//n6Of/6Ojo/+jo6P/o6Oj/5+fn/+fn5//n5+f/5ubm/+Xl5f/l5eX/5OTk/+Pk + 4//j4+P/4uLi/+Dg4P/e3t7/c3NzaQAAAAAAAAAAaGhoZd/g3//i4uL/5OTk/+Tl5P/l5eX/5ebl/+bn + 5v/n5+f/5+jn/+jp6P/p6en/7Ozs/8LCwv+Tk5P/ioqK/66urv/o6ej/6enp/+jp6P/o6Oj/5+jn/+bn + 5v/m5ub/5ebl/+Tl5P/k5OT/4uLi/9/g3/9zdHNpAAAAAAAAAABoaWhl4eLh/+Pk4//m5ub/5ubm/+fn + 5//n6Of/6Ojo/+np6f/p6un/6urq/8bGxv8yMjL/AAAA/wAAAP8AAAD/AAAA/xMTE/+ZmZn/7Ozs/+rq + 6v/p6en/6Ojo/+jo6P/n5+f/5ubm/+bm5v/k5OT/4eHh/3R0dGkAAAAAAAAAAGhpaGXj4+P/5eXl/+fn + 5//n6Of/6Ojo/+np6f/q6ur/6urq/+vr6//Dw8P/DAwM/wAAAP8AAAD/Gxsb/ygoKP8BAQH/AAAA/wAA + AP+FhYX/7O3s/+rr6v/q6ur/6enp/+jo6P/o6Oj/5+fn/+Xl5f/i4+L/dHR0aQAAAAAAAAAAYWFhZeTl + 5P/m5+b/6Ono/+np6f/p6un/6uvq/+vr6//s7Oz/7e7t/ycnJ/8AAAD/Ghoa/7S0tP/m5ub/5OTk/9HR + 0f9GRkb/AAAA/wICAv/IyMj/7Ozs/+vs6//q6+r/6urq/+nq6f/o6ej/5+fn/+Tk5P9sbGxpAAAAAAAA + AAA9Pj1lj4+P/5OTk/+VlZX/lpaW/5eXl/+YmJj/mZmZ/5qamv92dnb/AAAA/wEBAf+/wL//3Nzc/+Tk + 5P/l5eX/3d3d/+Li4v8mJib/AAAA/0ZGRv+ampr/mZmZ/5iYmP+Xl5f/lpaW/5WVlf+Tk5P/j4+P/0ZG + RmoAAAAAAAAAAAwMDGUAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Nzc3/+fn + 5//q6ur/7O3s/+zt7P/v7+//39/f/4WFhf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/EBAQagAAAAAAAAAAAwMHZQAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP9NTU3/5ufm//Lz8v/z9PP/8/Tz//X19f/l5eX/nZ2d/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8GBgpqAAAAAAAAAAAAABZlAQEk/wEBJ/8CAin/AgIq/wICKv8CAiv/AgIs/wIC + LP8BAR3/AAAA/xwcHP/w8PD/6+zr//r6+v/6+vr/9PT0/+vr6/9lZWX/AAAA/wAAD/8CAi3/AgIs/wIC + K/8CAir/AgIq/wICKf8BASf/AQEl/wUFG2oAAAAAAAAAAAICQGUGBpL/Bwec/wgIo/8JCaf/CQmq/wkJ + rf8JCa//Cgqz/wkJqP8AAAL/AAAA/4CAgP/y8/L/6+zr/+3t7f/u7u7/xMTE/wcHB/8AAAD/BgZz/woK + s/8JCbD/CQmt/wkJqv8JCaj/CAik/wcHnf8HB5P/Dg5MagAAAAAAAAAAAwNHZQgIk/8JCZ3/Cgqj/wsL + p/8LC6n/Cwus/wsLr/8MDLL/DAy2/wYGW/8AAAD/AAAA/1JSUv+sraz/tra2/3h4eP8KCgr/AAAA/wIC + Iv8MDLb/DAyy/wsLsP8LC63/Cwuq/wsLp/8KCqT/CQmd/wgIk/8PD1VrAAAAAAAAAAAEBE1lCQmY/woK + ov8LC6j/DAyr/wwMrf8MDLD/DAyy/w0Ntf8NDbf/Dg67/wUFSv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8CAiH/DQ2q/w0NuP8NDbX/DQ2z/wwMsP8MDK7/DAyr/wsLqP8KCqL/CQmZ/xAQWmsAAAAAAAAAAAQE + UGUKCp7/Cwum/wwMrP8NDa//DQ2w/w0Ns/8ODrX/Dg63/w4Ouf8ODrv/Dw/A/wwMiv8FBTj/AAAG/wAA + AP8DAyb/CQls/w8Pu/8PD7z/Dg66/w4OuP8ODrX/DQ2z/w0Nsf8NDa//DAys/wsLp/8KCp7/ERFeawAA + AAAAAAAABQVTZQsLpP8MDKv/DQ2w/w4Os/8ODrT/Dg62/w8PuP8PD7r/Dw+8/w8Pvf8QEL//EBDA/xER + w/8SEsn/ERHJ/xERxf8QEMD/EBC//w8Pvv8PD7z/Dw+6/w8PuP8ODrf/Dg61/w4Os/8NDbH/DAyr/wsL + pP8SEmFrAAAAAAAAAAAGBlZlDAyq/w4OsP8PD7X/Dw+3/w8PuP8QELr/EBC7/xAQvf8REb7/ERHA/xER + wf8REcL/EhLC/xISw/8SEsP/EhLC/xERwv8REcH/ERHA/xERvv8QEL3/EBC7/xAQuv8QELj/Dw+3/w8P + tf8ODrD/DAyq/xMTZWsAAAAAAAAAAAcHWmUODrD/EBC2/xERuv8REbz/ERG9/xISvv8SEr//EhLA/xMT + wf8TE8P/ExPD/xMTxP8TE8X/FBTF/xQUxf8UFMX/ExPE/xMTxP8TE8P/ExPC/xISwf8SEr//EhK+/xER + vf8REbz/ERG6/xAQtv8ODrD/FBRpawAAAAAAAAAACAhcYxAQtf8SErv/ExO+/xQUwP8UFMD/FBTB/xUV + wv8VFcP/FRXE/xUVxf8WFsb/FhbG/xYWx/8WFsf/FhbH/xYWx/8WFsf/FhbG/xYWxf8VFcT/FRXD/xUV + wv8UFMH/FBTB/xQUwP8TE77/EhK7/xAQtf8TE2hoAAAAAAAAAAAQEFNUFRXC/xMTv/8UFMP/FRXE/xUV + xP8VFcX/FRXG/xYWx/8WFsf/FhbI/xYWyf8XF8n/FxfK/xcXyv8XF8r/FxfK/xcXyf8XF8n/FhbI/xYW + yP8WFsf/FhbG/xUVxf8VFcT/FRXE/xQUw/8TE7//FRXB/xAQV1UAAAAAAAAAAA0NPxkjI8byFBTD/xUV + x/8WFsj/FxfJ/xcXyf8XF8r/FxfK/xcXy/8YGMz/GBjM/xgYzP8YGM3/GBjN/xgYzf8YGM3/GBjM/xgY + zP8YGMz/GBjL/xcXy/8XF8r/FxfJ/xcXyf8WFsj/FRXH/xQUw/8jI8f0Dg5GGwAAAAAAAAAAFhZxAiUl + eIUZGcr/FBTI/xUVyv8WFsv/FhbM/xYWzP8WFsz/FhbN/xcXzf8XF83/FxfN/xcXzv8XF87/FxfO/xcX + zv8XF87/FxfN/xcXzf8WFs3/FhbM/xYWzP8WFsz/FhbL/xUVyv8UFMj/GBjJ/yYmeogWFnYCAAAAAAAA + AAAAAAAAGBh1BzMzk50kJNP+FxfK/xgYzP8YGMz/GBjN/xgYzf8YGM3/GBjN/xgYzf8ZGc7/GRnO/xkZ + zv8ZGc7/GRnO/xkZzv8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/FxfK/yMj0v4zM5WfFBRkBwAA + AAAAAAAAAAAAAAAAAAAAAAAAHBx7Ay0tdkg3N5emMTGpxSwsp8gsLKfILCynyCwsp8gsLKfILCynyCws + p8gsLKfILCynyCwsp8gsLKfILCynyCwsp8gsLKfILCynyCwsp8gsLKfILCynyDExqcU2NpenLi54Shsb + ewMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////8AAAD+AAAAfAAAADwAAAA8AAAAPAAAADwAAAA8AA + AAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AA + AAPAAAADwAAAA8AAAAPAAAAD4AAAB/gAAB////// + + + \ No newline at end of file