From c3c4336d43ae1c22a3907864e23a41ca465c9131 Mon Sep 17 00:00:00 2001 From: Kurt Date: Tue, 10 Oct 2017 18:48:14 -0700 Subject: [PATCH] Add gen3 roamer editor Thanks BlackShark! --- PKHeX.Core/Saves/Substructures/Roamer3.cs | 3 +- .../Controls/SAV Editor/SAVEditor.Designer.cs | 37 +- .../Controls/SAV Editor/SAVEditor.cs | 2 + .../Controls/SAV Editor/SAVEditor.resx | 3 + PKHeX.WinForms/PKHeX.WinForms.csproj | 9 + .../Save Editors/Gen3/SAV_Roamer3.Designer.cs | 316 ++++++++++++++++++ .../Subforms/Save Editors/Gen3/SAV_Roamer3.cs | 66 ++++ .../Save Editors/Gen3/SAV_Roamer3.resx | 216 ++++++++++++ 8 files changed, 638 insertions(+), 14 deletions(-) create mode 100644 PKHeX.WinForms/Subforms/Save Editors/Gen3/SAV_Roamer3.Designer.cs create mode 100644 PKHeX.WinForms/Subforms/Save Editors/Gen3/SAV_Roamer3.cs create mode 100644 PKHeX.WinForms/Subforms/Save Editors/Gen3/SAV_Roamer3.resx diff --git a/PKHeX.Core/Saves/Substructures/Roamer3.cs b/PKHeX.Core/Saves/Substructures/Roamer3.cs index cbb9df870..b6f3d9a64 100644 --- a/PKHeX.Core/Saves/Substructures/Roamer3.cs +++ b/PKHeX.Core/Saves/Substructures/Roamer3.cs @@ -10,14 +10,13 @@ public class Roamer3 public Roamer3(SAV3 sav) { + SAV = sav; Offset = sav.GetBlockOffset(4); if (GameVersion.FRLG.Contains(SAV.Version)) Offset += 0x250; // 0x250 - FRLG else Offset += 0x35C; // 0x35C - RSE IsGlitched = SAV.Version != GameVersion.E; - - SAV = sav; } private uint IV32 diff --git a/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.Designer.cs b/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.Designer.cs index 36a3bdf0f..ec6efc306 100644 --- a/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.Designer.cs +++ b/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.Designer.cs @@ -31,7 +31,6 @@ private void InitializeComponent() System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SAVEditor)); this.tabBoxMulti = new System.Windows.Forms.TabControl(); this.Tab_Box = new System.Windows.Forms.TabPage(); - this.Box = new PKHeX.WinForms.Controls.BoxEditor(); this.Tab_PartyBattle = new System.Windows.Forms.TabPage(); this.PAN_BattleBox = new System.Windows.Forms.Panel(); this.PB_Locked = new System.Windows.Forms.PictureBox(); @@ -110,6 +109,8 @@ private void InitializeComponent() this.B_OpenFriendSafari = new System.Windows.Forms.Button(); this.B_OpenRTCEditor = new System.Windows.Forms.Button(); this.B_OpenUGSEditor = new System.Windows.Forms.Button(); + this.B_Roamer = new System.Windows.Forms.Button(); + this.Box = new PKHeX.WinForms.Controls.BoxEditor(); this.tabBoxMulti.SuspendLayout(); this.Tab_Box.SuspendLayout(); this.Tab_PartyBattle.SuspendLayout(); @@ -174,17 +175,6 @@ private void InitializeComponent() this.Tab_Box.Text = "Box"; this.Tab_Box.UseVisualStyleBackColor = true; // - // Box - // - this.Box.AllowDrop = true; - this.Box.CurrentBox = -1; - this.Box.FlagIllegal = false; - this.Box.Location = new System.Drawing.Point(26, 7); - this.Box.M = null; - this.Box.Name = "Box"; - this.Box.Size = new System.Drawing.Size(251, 185); - this.Box.TabIndex = 1; - // // Tab_PartyBattle // this.Tab_PartyBattle.Controls.Add(this.PAN_BattleBox); @@ -782,6 +772,7 @@ private void InitializeComponent() this.FLP_SAVtools.Controls.Add(this.B_OpenFriendSafari); this.FLP_SAVtools.Controls.Add(this.B_OpenRTCEditor); this.FLP_SAVtools.Controls.Add(this.B_OpenUGSEditor); + this.FLP_SAVtools.Controls.Add(this.B_Roamer); 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); @@ -1020,6 +1011,27 @@ private void InitializeComponent() this.B_OpenUGSEditor.UseVisualStyleBackColor = true; this.B_OpenUGSEditor.Click += new System.EventHandler(this.B_OpenUGSEditor_Click); // + // B_Roamer + // + this.B_Roamer.Location = new System.Drawing.Point(189, 206); + this.B_Roamer.Name = "B_Roamer"; + this.B_Roamer.Size = new System.Drawing.Size(87, 23); + this.B_Roamer.TabIndex = 30; + this.B_Roamer.Text = "Roamer"; + this.B_Roamer.UseVisualStyleBackColor = true; + this.B_Roamer.Click += new System.EventHandler(this.B_Roamer_Click); + // + // Box + // + this.Box.AllowDrop = true; + this.Box.CurrentBox = -1; + this.Box.FlagIllegal = false; + this.Box.Location = new System.Drawing.Point(26, 7); + this.Box.M = null; + this.Box.Name = "Box"; + this.Box.Size = new System.Drawing.Size(251, 185); + this.Box.TabIndex = 1; + // // SAVEditor // this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; @@ -1155,5 +1167,6 @@ private void InitializeComponent() private System.Windows.Forms.Button B_OpenRTCEditor; public BoxEditor Box; private System.Windows.Forms.Button B_OpenUGSEditor; + private System.Windows.Forms.Button B_Roamer; } } diff --git a/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs b/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs index a26f7ffa4..f35ef618e 100644 --- a/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs +++ b/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs @@ -517,6 +517,7 @@ private void B_SaveBoxBin_Click(object sender, EventArgs e) private void B_OpenSecretBase_Click(object sender, EventArgs e) => new SAV_SecretBase(SAV).ShowDialog(); private void B_OpenZygardeCells_Click(object sender, EventArgs e) => new SAV_ZygardeCell(SAV).ShowDialog(); private void B_LinkInfo_Click(object sender, EventArgs e) => new SAV_Link6(SAV).ShowDialog(); + private void B_Roamer_Click(object sender, EventArgs e) => new SAV_Roamer3(SAV).ShowDialog(); private void B_OpenEventFlags_Click(object sender, EventArgs e) { var form = SAV.Generation == 1 ? new SAV_EventReset1(SAV) as Form : new SAV_EventFlags(SAV); @@ -1003,6 +1004,7 @@ private void ToggleViewSubEditors(SaveFile sav) B_OpenTrainerInfo.Enabled = B_OpenItemPouch.Enabled = sav.HasParty; // Box RS B_OpenMiscEditor.Enabled = sav is SAV3 || sav is SAV4 || sav is SAV5; + B_Roamer.Enabled = sav is SAV3; B_OpenHoneyTreeEditor.Enabled = sav.DP || sav.Pt; B_OpenRTCEditor.Enabled = sav.RS || sav.E || sav.Generation == 2; diff --git a/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.resx b/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.resx index b4eee6f8a..9784e19d8 100644 --- a/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.resx +++ b/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.resx @@ -487,6 +487,9 @@ True + + True + True diff --git a/PKHeX.WinForms/PKHeX.WinForms.csproj b/PKHeX.WinForms/PKHeX.WinForms.csproj index e874bbf12..dcd90ba14 100644 --- a/PKHeX.WinForms/PKHeX.WinForms.csproj +++ b/PKHeX.WinForms/PKHeX.WinForms.csproj @@ -305,6 +305,12 @@ SAV_Misc3.cs + + Form + + + SAV_Roamer3.cs + Form @@ -607,6 +613,9 @@ SAV_Misc3.cs + + SAV_Roamer3.cs + SAV_RTC3.cs diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen3/SAV_Roamer3.Designer.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen3/SAV_Roamer3.Designer.cs new file mode 100644 index 000000000..aa524cc91 --- /dev/null +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen3/SAV_Roamer3.Designer.cs @@ -0,0 +1,316 @@ +namespace PKHeX.WinForms +{ + partial class SAV_Roamer3 + { + /// + /// 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_Roamer3)); + this.B_Save = new System.Windows.Forms.Button(); + this.B_Cancel = new System.Windows.Forms.Button(); + this.TB_SPDIV = new System.Windows.Forms.MaskedTextBox(); + this.TB_SPAIV = new System.Windows.Forms.MaskedTextBox(); + this.TB_DEFIV = new System.Windows.Forms.MaskedTextBox(); + this.TB_ATKIV = new System.Windows.Forms.MaskedTextBox(); + this.TB_HPIV = new System.Windows.Forms.MaskedTextBox(); + this.Label_HP = new System.Windows.Forms.Label(); + this.Label_ATK = new System.Windows.Forms.Label(); + this.Label_DEF = new System.Windows.Forms.Label(); + this.Label_SPA = new System.Windows.Forms.Label(); + this.Label_SPD = new System.Windows.Forms.Label(); + this.Label_SPE = new System.Windows.Forms.Label(); + this.TB_SPEIV = new System.Windows.Forms.MaskedTextBox(); + this.TB_PID = new System.Windows.Forms.TextBox(); + this.Label_PID = new System.Windows.Forms.Label(); + this.CB_Species = new System.Windows.Forms.ComboBox(); + this.Label_Species = new System.Windows.Forms.Label(); + this.CHK_Shiny = new System.Windows.Forms.CheckBox(); + this.SuspendLayout(); + // + // 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(193, 108); + this.B_Save.Name = "B_Save"; + this.B_Save.Size = new System.Drawing.Size(75, 23); + this.B_Save.TabIndex = 73; + this.B_Save.Text = "Save"; + this.B_Save.UseVisualStyleBackColor = true; + this.B_Save.Click += new System.EventHandler(this.B_Save_Click); + // + // 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(112, 108); + this.B_Cancel.Name = "B_Cancel"; + this.B_Cancel.Size = new System.Drawing.Size(75, 23); + this.B_Cancel.TabIndex = 72; + this.B_Cancel.Text = "Cancel"; + this.B_Cancel.UseVisualStyleBackColor = true; + this.B_Cancel.Click += new System.EventHandler(this.B_Cancel_Click); + // + // TB_SPDIV + // + this.TB_SPDIV.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.TB_SPDIV.Location = new System.Drawing.Point(60, 89); + this.TB_SPDIV.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0); + this.TB_SPDIV.Mask = "00"; + this.TB_SPDIV.Name = "TB_SPDIV"; + this.TB_SPDIV.Size = new System.Drawing.Size(22, 20); + this.TB_SPDIV.TabIndex = 78; + this.TB_SPDIV.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // TB_SPAIV + // + this.TB_SPAIV.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.TB_SPAIV.Location = new System.Drawing.Point(60, 69); + this.TB_SPAIV.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0); + this.TB_SPAIV.Mask = "00"; + this.TB_SPAIV.Name = "TB_SPAIV"; + this.TB_SPAIV.Size = new System.Drawing.Size(22, 20); + this.TB_SPAIV.TabIndex = 77; + this.TB_SPAIV.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // TB_DEFIV + // + this.TB_DEFIV.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.TB_DEFIV.Location = new System.Drawing.Point(60, 49); + this.TB_DEFIV.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0); + this.TB_DEFIV.Mask = "00"; + this.TB_DEFIV.Name = "TB_DEFIV"; + this.TB_DEFIV.Size = new System.Drawing.Size(22, 20); + this.TB_DEFIV.TabIndex = 76; + this.TB_DEFIV.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // TB_ATKIV + // + this.TB_ATKIV.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.TB_ATKIV.Location = new System.Drawing.Point(60, 29); + this.TB_ATKIV.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0); + this.TB_ATKIV.Mask = "00"; + this.TB_ATKIV.Name = "TB_ATKIV"; + this.TB_ATKIV.Size = new System.Drawing.Size(22, 20); + this.TB_ATKIV.TabIndex = 75; + this.TB_ATKIV.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // TB_HPIV + // + this.TB_HPIV.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.TB_HPIV.Location = new System.Drawing.Point(60, 9); + this.TB_HPIV.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0); + this.TB_HPIV.Mask = "00"; + this.TB_HPIV.Name = "TB_HPIV"; + this.TB_HPIV.Size = new System.Drawing.Size(22, 20); + this.TB_HPIV.TabIndex = 74; + this.TB_HPIV.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // Label_HP + // + this.Label_HP.Location = new System.Drawing.Point(9, 9); + this.Label_HP.Margin = new System.Windows.Forms.Padding(0); + this.Label_HP.Name = "Label_HP"; + this.Label_HP.Size = new System.Drawing.Size(50, 21); + this.Label_HP.TabIndex = 80; + this.Label_HP.Text = "HP:"; + this.Label_HP.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // Label_ATK + // + this.Label_ATK.Location = new System.Drawing.Point(9, 29); + this.Label_ATK.Margin = new System.Windows.Forms.Padding(0); + this.Label_ATK.Name = "Label_ATK"; + this.Label_ATK.Size = new System.Drawing.Size(50, 21); + this.Label_ATK.TabIndex = 81; + this.Label_ATK.Text = "Atk:"; + this.Label_ATK.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // Label_DEF + // + this.Label_DEF.Location = new System.Drawing.Point(9, 49); + this.Label_DEF.Margin = new System.Windows.Forms.Padding(0); + this.Label_DEF.Name = "Label_DEF"; + this.Label_DEF.Size = new System.Drawing.Size(50, 21); + this.Label_DEF.TabIndex = 82; + this.Label_DEF.Text = "Def:"; + this.Label_DEF.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // Label_SPA + // + this.Label_SPA.Location = new System.Drawing.Point(9, 69); + this.Label_SPA.Margin = new System.Windows.Forms.Padding(0); + this.Label_SPA.Name = "Label_SPA"; + this.Label_SPA.Size = new System.Drawing.Size(50, 21); + this.Label_SPA.TabIndex = 83; + this.Label_SPA.Text = "SpA:"; + this.Label_SPA.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // Label_SPD + // + this.Label_SPD.Location = new System.Drawing.Point(9, 89); + this.Label_SPD.Margin = new System.Windows.Forms.Padding(0); + this.Label_SPD.Name = "Label_SPD"; + this.Label_SPD.Size = new System.Drawing.Size(50, 21); + this.Label_SPD.TabIndex = 84; + this.Label_SPD.Text = "SpD:"; + this.Label_SPD.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // Label_SPE + // + this.Label_SPE.Location = new System.Drawing.Point(10, 109); + this.Label_SPE.Margin = new System.Windows.Forms.Padding(0); + this.Label_SPE.Name = "Label_SPE"; + this.Label_SPE.Size = new System.Drawing.Size(50, 21); + this.Label_SPE.TabIndex = 85; + this.Label_SPE.Text = "Spe:"; + this.Label_SPE.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // TB_SPEIV + // + this.TB_SPEIV.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.TB_SPEIV.Location = new System.Drawing.Point(60, 109); + this.TB_SPEIV.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0); + this.TB_SPEIV.Mask = "00"; + this.TB_SPEIV.Name = "TB_SPEIV"; + this.TB_SPEIV.Size = new System.Drawing.Size(22, 20); + this.TB_SPEIV.TabIndex = 79; + this.TB_SPEIV.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // TB_PID + // + this.TB_PID.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.TB_PID.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.TB_PID.Location = new System.Drawing.Point(138, 58); + this.TB_PID.Margin = new System.Windows.Forms.Padding(0, 1, 0, 0); + this.TB_PID.MaxLength = 8; + this.TB_PID.Name = "TB_PID"; + this.TB_PID.Size = new System.Drawing.Size(60, 20); + this.TB_PID.TabIndex = 86; + this.TB_PID.Text = "12345678"; + this.TB_PID.TextChanged += new System.EventHandler(this.TB_PID_TextChanged); + // + // Label_PID + // + this.Label_PID.AutoSize = true; + this.Label_PID.Location = new System.Drawing.Point(109, 60); + this.Label_PID.Margin = new System.Windows.Forms.Padding(0, 5, 0, 4); + this.Label_PID.Name = "Label_PID"; + this.Label_PID.Size = new System.Drawing.Size(28, 13); + this.Label_PID.TabIndex = 87; + this.Label_PID.Text = "PID:"; + this.Label_PID.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // CB_Species + // + this.CB_Species.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend; + this.CB_Species.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; + this.CB_Species.FormattingEnabled = true; + this.CB_Species.Location = new System.Drawing.Point(112, 34); + this.CB_Species.Margin = new System.Windows.Forms.Padding(0); + this.CB_Species.Name = "CB_Species"; + this.CB_Species.Size = new System.Drawing.Size(126, 21); + this.CB_Species.TabIndex = 88; + // + // Label_Species + // + this.Label_Species.AutoSize = true; + this.Label_Species.Location = new System.Drawing.Point(109, 17); + this.Label_Species.Margin = new System.Windows.Forms.Padding(0); + this.Label_Species.Name = "Label_Species"; + this.Label_Species.Size = new System.Drawing.Size(48, 13); + this.Label_Species.TabIndex = 89; + this.Label_Species.Text = "Species:"; + this.Label_Species.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // CHK_Shiny + // + this.CHK_Shiny.AutoSize = true; + this.CHK_Shiny.Enabled = false; + this.CHK_Shiny.Location = new System.Drawing.Point(138, 81); + this.CHK_Shiny.Name = "CHK_Shiny"; + this.CHK_Shiny.Size = new System.Drawing.Size(58, 17); + this.CHK_Shiny.TabIndex = 90; + this.CHK_Shiny.Text = "Shiny?"; + this.CHK_Shiny.UseVisualStyleBackColor = true; + // + // SAV_Roamer3 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(278, 143); + this.Controls.Add(this.CHK_Shiny); + this.Controls.Add(this.Label_Species); + this.Controls.Add(this.CB_Species); + this.Controls.Add(this.Label_PID); + this.Controls.Add(this.TB_PID); + this.Controls.Add(this.TB_SPEIV); + this.Controls.Add(this.Label_SPE); + this.Controls.Add(this.Label_SPD); + this.Controls.Add(this.TB_SPDIV); + this.Controls.Add(this.TB_SPAIV); + this.Controls.Add(this.Label_SPA); + this.Controls.Add(this.Label_DEF); + this.Controls.Add(this.TB_DEFIV); + this.Controls.Add(this.TB_ATKIV); + this.Controls.Add(this.Label_ATK); + this.Controls.Add(this.Label_HP); + this.Controls.Add(this.TB_HPIV); + this.Controls.Add(this.B_Save); + this.Controls.Add(this.B_Cancel); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.MinimumSize = new System.Drawing.Size(200, 150); + this.Name = "SAV_Roamer3"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Roamer Editor"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.Button B_Save; + private System.Windows.Forms.Button B_Cancel; + private System.Windows.Forms.MaskedTextBox TB_SPDIV; + private System.Windows.Forms.MaskedTextBox TB_SPAIV; + private System.Windows.Forms.MaskedTextBox TB_DEFIV; + private System.Windows.Forms.MaskedTextBox TB_ATKIV; + private System.Windows.Forms.MaskedTextBox TB_HPIV; + private System.Windows.Forms.Label Label_HP; + private System.Windows.Forms.Label Label_ATK; + private System.Windows.Forms.Label Label_DEF; + private System.Windows.Forms.Label Label_SPA; + private System.Windows.Forms.Label Label_SPD; + private System.Windows.Forms.Label Label_SPE; + private System.Windows.Forms.MaskedTextBox TB_SPEIV; + private System.Windows.Forms.TextBox TB_PID; + private System.Windows.Forms.Label Label_PID; + public System.Windows.Forms.ComboBox CB_Species; + private System.Windows.Forms.Label Label_Species; + private System.Windows.Forms.CheckBox CHK_Shiny; + } +} diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen3/SAV_Roamer3.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen3/SAV_Roamer3.cs new file mode 100644 index 000000000..6eae436ab --- /dev/null +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen3/SAV_Roamer3.cs @@ -0,0 +1,66 @@ +using System; +using System.Linq; +using System.Windows.Forms; +using PKHeX.Core; + +namespace PKHeX.WinForms +{ + public partial class SAV_Roamer3 : Form + { + private readonly SaveFile Origin; + private readonly SAV3 SAV; + private readonly Roamer3 Reader; + + public SAV_Roamer3(SaveFile sav) + { + SAV = (SAV3)(Origin = sav).Clone(); + Reader = new Roamer3(SAV); + InitializeComponent(); + WinFormsUtil.TranslateInterface(this, Main.CurrentLanguage); + + CB_Species.DisplayMember = "Text"; + CB_Species.ValueMember = "Value"; + CB_Species.DataSource = new BindingSource(GameInfo.SpeciesDataSource.Where(id => id.Value <= SAV.MaxSpeciesID).ToList(), null); + + LoadData(); + } + + private void LoadData() + { + TB_PID.Text = $"{Reader.PID:X8}"; + CHK_Shiny.Checked = Reader.IsShiny(Reader.PID); + + CB_Species.SelectedValue = Reader.Species; + var IVs = Reader.IVs; + + var iv = new[] {TB_HPIV, TB_ATKIV, TB_DEFIV, TB_SPEIV, TB_SPAIV, TB_SPDIV}; + for (int i = 0; i < iv.Length; i++) + iv[i].Text = IVs[i].ToString(); + } + private void SaveData() + { + int[] IVs = new int[6]; + var iv = new[] { TB_HPIV, TB_ATKIV, TB_DEFIV, TB_SPEIV, TB_SPAIV, TB_SPDIV }; + for (int i = 0; i < iv.Length; i++) + IVs[i] = Util.ToInt32(iv[i].Text); + + Reader.PID = Util.GetHexValue(TB_PID.Text); + Reader.Species = WinFormsUtil.GetIndex(CB_Species); + } + private void B_Save_Click(object sender, EventArgs e) + { + SaveData(); + Close(); + } + private void B_Cancel_Click(object sender, EventArgs e) + { + Close(); + } + + private void TB_PID_TextChanged(object sender, EventArgs e) + { + var pid = Util.GetHexValue(TB_PID.Text); + CHK_Shiny.Checked = Reader.IsShiny(pid); + } + } +} diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen3/SAV_Roamer3.resx b/PKHeX.WinForms/Subforms/Save Editors/Gen3/SAV_Roamer3.resx new file mode 100644 index 000000000..603f660be --- /dev/null +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen3/SAV_Roamer3.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