From e028214eabe9cbf32811fd64e6e5ff157cdf65f9 Mon Sep 17 00:00:00 2001 From: Kurt Date: Sat, 5 Jan 2019 12:37:41 -0800 Subject: [PATCH] Update dex form handling for dex4 still not sure if it's entirely right, but at least there's no more exceptions https://projectpokemon.org/home/forums/topic/48288-pokedex-error-gen-4/ --- PKHeX.Core/Saves/SAV4.cs | 2 +- .../Save Editors/Gen4/SAV_Pokedex4.Designer.cs | 17 ++++++++--------- .../Subforms/Save Editors/Gen4/SAV_Pokedex4.cs | 2 +- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/PKHeX.Core/Saves/SAV4.cs b/PKHeX.Core/Saves/SAV4.cs index 6141aa1ea..56b48b56c 100644 --- a/PKHeX.Core/Saves/SAV4.cs +++ b/PKHeX.Core/Saves/SAV4.cs @@ -1133,7 +1133,7 @@ private static int[] GetDexFormValues(uint Value, int BitsPerForm, int readCt) private static uint SetDexFormValues(int[] Forms, int BitsPerForm, int readCt) { int n1 = 0xFF >> (8 - BitsPerForm); - uint Value = 0xFFFFFFFF << (Forms.Length*BitsPerForm); + uint Value = 0xFFFFFFFF << (readCt * BitsPerForm); for (int i = 0; i < Forms.Length; i++) { int val = Forms[i]; diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen4/SAV_Pokedex4.Designer.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen4/SAV_Pokedex4.Designer.cs index ac7a45098..26267ba25 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen4/SAV_Pokedex4.Designer.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen4/SAV_Pokedex4.Designer.cs @@ -52,6 +52,7 @@ private void InitializeComponent() this.mnuCaughtAll = new System.Windows.Forms.ToolStripMenuItem(); this.mnuComplete = new System.Windows.Forms.ToolStripMenuItem(); this.mnuUpgraded = new System.Windows.Forms.ToolStripMenuItem(); + this.CB_DexUpgraded = new System.Windows.Forms.ToolStripComboBox(); this.CHK_Seen = new System.Windows.Forms.CheckBox(); this.LB_Gender = new System.Windows.Forms.ListBox(); this.B_GUp = new System.Windows.Forms.Button(); @@ -67,7 +68,6 @@ private void InitializeComponent() this.LB_Form = new System.Windows.Forms.ListBox(); this.L_Seen = new System.Windows.Forms.Label(); this.L_NotSeen = new System.Windows.Forms.Label(); - this.CB_DexUpgraded = new System.Windows.Forms.ToolStripComboBox(); this.GB_Language.SuspendLayout(); this.modifyMenu.SuspendLayout(); this.SuspendLayout(); @@ -185,7 +185,6 @@ private void InitializeComponent() this.CB_Species.Name = "CB_Species"; this.CB_Species.Size = new System.Drawing.Size(92, 21); this.CB_Species.TabIndex = 21; - this.CB_Species.SelectedIndexChanged += new System.EventHandler(this.ChangeCBSpecies); this.CB_Species.SelectedValueChanged += new System.EventHandler(this.ChangeCBSpecies); // // B_GiveAll @@ -245,7 +244,7 @@ private void InitializeComponent() this.mnuComplete, this.mnuUpgraded}); this.modifyMenu.Name = "modifyMenu"; - this.modifyMenu.Size = new System.Drawing.Size(149, 114); + this.modifyMenu.Size = new System.Drawing.Size(149, 136); // // mnuSeenNone // @@ -290,6 +289,12 @@ private void InitializeComponent() this.mnuUpgraded.Size = new System.Drawing.Size(148, 22); this.mnuUpgraded.Text = "Dex Upgrade"; // + // CB_DexUpgraded + // + this.CB_DexUpgraded.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CB_DexUpgraded.Name = "CB_DexUpgraded"; + this.CB_DexUpgraded.Size = new System.Drawing.Size(112, 23); + // // CHK_Seen // this.CHK_Seen.AutoSize = true; @@ -431,12 +436,6 @@ private void InitializeComponent() this.L_NotSeen.TabIndex = 58; this.L_NotSeen.Text = "Not Seen"; // - // CB_DexUpgraded - // - this.CB_DexUpgraded.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.CB_DexUpgraded.Name = "CB_DexUpgraded"; - this.CB_DexUpgraded.Size = new System.Drawing.Size(112, 23); - // // SAV_Pokedex4 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen4/SAV_Pokedex4.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen4/SAV_Pokedex4.cs index de2534c5e..434b75130 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen4/SAV_Pokedex4.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen4/SAV_Pokedex4.cs @@ -144,7 +144,7 @@ private void GetEntry() string[] formNames = GetFormNames4Dex(species); - var seen = forms.Where(z => z >= 0 && z < forms.Length).Select((_, i) => formNames[forms[i]]).ToArray(); + var seen = forms.Where(z => z >= 0 && z < forms.Length).Distinct().Select((_, i) => formNames[forms[i]]).ToArray(); var not = formNames.Where(z => !seen.Contains(z)).ToArray(); LB_Form.Items.AddRange(seen);