diff --git a/PKHeX.WinForms/App.config b/PKHeX.WinForms/App.config index 2c9687be7..1e624519a 100644 --- a/PKHeX.WinForms/App.config +++ b/PKHeX.WinForms/App.config @@ -1,9 +1,33 @@ - - -
+ +
- + + + + + + + + + + True + + + True + + + True + + + False + + + False + + + + diff --git a/PKHeX.WinForms/MainWindow/Main.Designer.cs b/PKHeX.WinForms/MainWindow/Main.Designer.cs index b628c3030..212134cb8 100644 --- a/PKHeX.WinForms/MainWindow/Main.Designer.cs +++ b/PKHeX.WinForms/MainWindow/Main.Designer.cs @@ -262,6 +262,8 @@ public void InitializeComponent() this.Label_PrevOT = new System.Windows.Forms.Label(); this.BTN_RerollEC = new System.Windows.Forms.Button(); this.GB_Markings = new System.Windows.Forms.GroupBox(); + this.PB_MarkHorohoro = new System.Windows.Forms.PictureBox(); + this.PB_MarkVC = new System.Windows.Forms.PictureBox(); this.PB_MarkAlola = new System.Windows.Forms.PictureBox(); this.PB_Mark6 = new System.Windows.Forms.PictureBox(); this.PB_MarkPentagon = new System.Windows.Forms.PictureBox(); @@ -317,6 +319,7 @@ public void InitializeComponent() this.Menu_Modify = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_ModifyDex = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_ModifyPKM = new System.Windows.Forms.ToolStripMenuItem(); + this.Menu_FlagIllegal = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_Undo = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_Redo = new System.Windows.Forms.ToolStripMenuItem(); this.Menu_Unicode = new System.Windows.Forms.ToolStripMenuItem(); @@ -443,8 +446,6 @@ public void InitializeComponent() this.mnuLSave = new System.Windows.Forms.ToolStripMenuItem(); this.PB_Legal = new System.Windows.Forms.PictureBox(); this.L_UpdateAvailable = new System.Windows.Forms.LinkLabel(); - this.PB_MarkVC = new System.Windows.Forms.PictureBox(); - this.PB_MarkHorohoro = new System.Windows.Forms.PictureBox(); this.tabMain.SuspendLayout(); this.Tab_Main.SuspendLayout(); this.FLP_Main.SuspendLayout(); @@ -529,6 +530,8 @@ public void InitializeComponent() this.FLP_PKMEditors.SuspendLayout(); this.GB_nOT.SuspendLayout(); this.GB_Markings.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.PB_MarkHorohoro)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.PB_MarkVC)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.PB_MarkAlola)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.PB_Mark6)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.PB_MarkPentagon)).BeginInit(); @@ -611,8 +614,6 @@ public void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.dragout)).BeginInit(); this.mnuL.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.PB_Legal)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_MarkVC)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_MarkHorohoro)).BeginInit(); this.SuspendLayout(); // // tabMain @@ -3423,6 +3424,28 @@ public void InitializeComponent() this.GB_Markings.TabStop = false; this.GB_Markings.Text = "Markings"; // + // PB_MarkHorohoro + // + this.PB_MarkHorohoro.Image = ((System.Drawing.Image)(resources.GetObject("PB_MarkHorohoro.Image"))); + this.PB_MarkHorohoro.InitialImage = ((System.Drawing.Image)(resources.GetObject("PB_MarkHorohoro.InitialImage"))); + this.PB_MarkHorohoro.Location = new System.Drawing.Point(110, 15); + this.PB_MarkHorohoro.Name = "PB_MarkHorohoro"; + this.PB_MarkHorohoro.Size = new System.Drawing.Size(20, 20); + this.PB_MarkHorohoro.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; + this.PB_MarkHorohoro.TabIndex = 11; + this.PB_MarkHorohoro.TabStop = false; + // + // PB_MarkVC + // + this.PB_MarkVC.Image = ((System.Drawing.Image)(resources.GetObject("PB_MarkVC.Image"))); + this.PB_MarkVC.InitialImage = ((System.Drawing.Image)(resources.GetObject("PB_MarkVC.InitialImage"))); + this.PB_MarkVC.Location = new System.Drawing.Point(89, 15); + this.PB_MarkVC.Name = "PB_MarkVC"; + this.PB_MarkVC.Size = new System.Drawing.Size(20, 20); + this.PB_MarkVC.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; + this.PB_MarkVC.TabIndex = 10; + this.PB_MarkVC.TabStop = false; + // // PB_MarkAlola // this.PB_MarkAlola.Image = ((System.Drawing.Image)(resources.GetObject("PB_MarkAlola.Image"))); @@ -3958,7 +3981,7 @@ public void InitializeComponent() this.CB_MainLanguage}); this.Menu_Language.Image = ((System.Drawing.Image)(resources.GetObject("Menu_Language.Image"))); this.Menu_Language.Name = "Menu_Language"; - this.Menu_Language.Size = new System.Drawing.Size(139, 22); + this.Menu_Language.Size = new System.Drawing.Size(152, 22); this.Menu_Language.Text = "Language"; // // CB_MainLanguage @@ -3973,11 +3996,12 @@ public void InitializeComponent() this.Menu_Modify.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.Menu_ModifyDex, this.Menu_ModifyPKM, + this.Menu_FlagIllegal, this.Menu_Undo, this.Menu_Redo}); this.Menu_Modify.Image = ((System.Drawing.Image)(resources.GetObject("Menu_Modify.Image"))); this.Menu_Modify.Name = "Menu_Modify"; - this.Menu_Modify.Size = new System.Drawing.Size(139, 22); + this.Menu_Modify.Size = new System.Drawing.Size(152, 22); this.Menu_Modify.Text = "Set to SAV"; // // Menu_ModifyDex @@ -4000,6 +4024,14 @@ public void InitializeComponent() this.Menu_ModifyPKM.Text = "Modify PKM Info"; this.Menu_ModifyPKM.Click += new System.EventHandler(this.mainMenuModifyPKM); // + // Menu_FlagIllegal + // + this.Menu_FlagIllegal.CheckOnClick = true; + this.Menu_FlagIllegal.Name = "Menu_FlagIllegal"; + this.Menu_FlagIllegal.Size = new System.Drawing.Size(164, 22); + this.Menu_FlagIllegal.Text = "Flag Legality"; + this.Menu_FlagIllegal.Click += new System.EventHandler(this.mainMenuFlagIllegal); + // // Menu_Undo // this.Menu_Undo.Enabled = false; @@ -4026,7 +4058,7 @@ public void InitializeComponent() this.Menu_Unicode.CheckOnClick = true; this.Menu_Unicode.CheckState = System.Windows.Forms.CheckState.Checked; this.Menu_Unicode.Name = "Menu_Unicode"; - this.Menu_Unicode.Size = new System.Drawing.Size(139, 22); + this.Menu_Unicode.Size = new System.Drawing.Size(152, 22); this.Menu_Unicode.Text = "Unicode"; this.Menu_Unicode.Click += new System.EventHandler(this.mainMenuUnicode); // @@ -4036,7 +4068,7 @@ public void InitializeComponent() this.Menu_About.Name = "Menu_About"; this.Menu_About.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.P))); this.Menu_About.ShowShortcutKeys = false; - this.Menu_About.Size = new System.Drawing.Size(139, 22); + this.Menu_About.Size = new System.Drawing.Size(152, 22); this.Menu_About.Text = "About &PKHeX"; this.Menu_About.Click += new System.EventHandler(this.mainMenuAbout); // @@ -5719,28 +5751,6 @@ public void InitializeComponent() this.L_UpdateAvailable.TextAlign = System.Drawing.ContentAlignment.MiddleRight; this.L_UpdateAvailable.Visible = false; // - // PB_MarkVC - // - this.PB_MarkVC.Image = Core.Properties.Resources.vc; - this.PB_MarkVC.InitialImage = Core.Properties.Resources.vc; - this.PB_MarkVC.Location = new System.Drawing.Point(89, 15); - this.PB_MarkVC.Name = "PB_MarkVC"; - this.PB_MarkVC.Size = new System.Drawing.Size(20, 20); - this.PB_MarkVC.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; - this.PB_MarkVC.TabIndex = 10; - this.PB_MarkVC.TabStop = false; - // - // PB_MarkHorohoro - // - this.PB_MarkHorohoro.Image = Core.Properties.Resources.horohoro; - this.PB_MarkHorohoro.InitialImage = Core.Properties.Resources.horohoro; - this.PB_MarkHorohoro.Location = new System.Drawing.Point(110, 15); - this.PB_MarkHorohoro.Name = "PB_MarkHorohoro"; - this.PB_MarkHorohoro.Size = new System.Drawing.Size(20, 20); - this.PB_MarkHorohoro.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; - this.PB_MarkHorohoro.TabIndex = 11; - this.PB_MarkHorohoro.TabStop = false; - // // Main // this.AllowDrop = true; @@ -5876,6 +5886,8 @@ public void InitializeComponent() this.GB_nOT.ResumeLayout(false); this.GB_nOT.PerformLayout(); this.GB_Markings.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.PB_MarkHorohoro)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.PB_MarkVC)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.PB_MarkAlola)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.PB_Mark6)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.PB_MarkPentagon)).EndInit(); @@ -5969,8 +5981,6 @@ public void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.dragout)).EndInit(); this.mnuL.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.PB_Legal)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_MarkVC)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.PB_MarkHorohoro)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -6392,6 +6402,7 @@ public void InitializeComponent() private System.Windows.Forms.Button B_OpenZygardeCells; private System.Windows.Forms.PictureBox PB_MarkHorohoro; private System.Windows.Forms.PictureBox PB_MarkVC; + internal System.Windows.Forms.ToolStripMenuItem Menu_FlagIllegal; } } diff --git a/PKHeX.WinForms/MainWindow/Main.cs b/PKHeX.WinForms/MainWindow/Main.cs index cec9dc1f8..f1b08adab 100644 --- a/PKHeX.WinForms/MainWindow/Main.cs +++ b/PKHeX.WinForms/MainWindow/Main.cs @@ -278,6 +278,7 @@ private void loadConfig(out bool BAKprompt, out bool showChangelog, out int lang updateUnicode(); SaveFile.SetUpdateDex = Menu_ModifyDex.Checked = Settings.SetUpdateDex; SaveFile.SetUpdatePKM = Menu_ModifyPKM.Checked = Settings.SetUpdatePKM; + Menu_FlagIllegal.Checked = Settings.FlagIllegal; // Select Language string l = Settings.Language; @@ -441,6 +442,12 @@ private void mainMenuModifyPKM(object sender, EventArgs e) { Properties.Settings.Default.SetUpdatePKM = SaveFile.SetUpdatePKM = Menu_ModifyPKM.Checked; } + private void mainMenuFlagIllegal(object sender, EventArgs e) + { + Properties.Settings.Default.FlagIllegal = Menu_FlagIllegal.Checked; + updateBoxViewers(all:true); + setPKXBoxes(); + } private void mainMenuBoxLoad(object sender, EventArgs e) { string path = ""; @@ -3752,15 +3759,8 @@ private void getQuickFiller(PictureBox pb, PKM pk = null) if (pb == dragout) mnuLQR.Enabled = pk.Species != 0; // Species - var sprite = pk.Species != 0 ? pk.Sprite() : null; int slot = getSlot(pb); - bool locked = slot < 30 && SAV.getIsSlotLocked(CB_BoxSelect.SelectedIndex, slot); - bool team = slot < 30 && SAV.getIsTeamSet(CB_BoxSelect.SelectedIndex, slot); - if (locked) - sprite = ImageUtil.LayerImage(sprite, Resources.locked, 26, 0, 1); - else if (team) - sprite = ImageUtil.LayerImage(sprite, Resources.team, 21, 0, 1); - pb.Image = sprite; + pb.Image = pk.Sprite(SAV, CB_BoxSelect.SelectedIndex, slot, Menu_FlagIllegal.Checked); if (pb.BackColor == Color.Red) pb.BackColor = Color.Transparent; } @@ -3783,17 +3783,9 @@ private void getSlotFiller(int offset, PictureBox pb) pb.Visible = true; return; } - // Something stored in slot. Only display if species is valid. - var sprite = p.Species != 0 ? p.Sprite() : null; int slot = getSlot(pb); - bool locked = slot < 30 && SAV.getIsSlotLocked(CB_BoxSelect.SelectedIndex, slot); - bool team = slot < 30 && SAV.getIsTeamSet(CB_BoxSelect.SelectedIndex, slot); - if (locked) - sprite = ImageUtil.LayerImage(sprite, Resources.locked, 26, 0, 1); - else if (team) - sprite = ImageUtil.LayerImage(sprite, Resources.team, 21, 0, 1); - pb.Image = sprite; + pb.Image = p.Sprite(SAV, CB_BoxSelect.SelectedIndex, slot, Menu_FlagIllegal.Checked); pb.BackColor = Color.Transparent; pb.Visible = true; } diff --git a/PKHeX.WinForms/MainWindow/Main.resx b/PKHeX.WinForms/MainWindow/Main.resx index 6022b179b..39c2ef3d8 100644 --- a/PKHeX.WinForms/MainWindow/Main.resx +++ b/PKHeX.WinForms/MainWindow/Main.resx @@ -701,34 +701,212 @@ - iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wgAADsIBFShKgAAAABh0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC45bDN+TgAAAEpJREFUKFNjQAMB - QPwAikFsnACk4AMUg9g4wQUghikEsVEAzDqQBLpCEIY7A9k6XBjsDKIVEm01MkBXiBMgOwNsHS4Acwaa - dQwMAL/BNIG87NYcAAAAAElFTkSuQmCC + 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 - dQwMAL/BNIG87NYcAAAAAElFTkSuQmCC + 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 - dQwMAL/BNIG87NYcAAAAAElFTkSuQmCC + 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 - dQwMAL/BNIG87NYcAAAAAElFTkSuQmCC + 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 diff --git a/PKHeX.WinForms/Properties/Settings.Designer.cs b/PKHeX.WinForms/Properties/Settings.Designer.cs index 8382469c3..f023a69cb 100644 --- a/PKHeX.WinForms/Properties/Settings.Designer.cs +++ b/PKHeX.WinForms/Properties/Settings.Designer.cs @@ -94,5 +94,17 @@ internal sealed partial class Settings : global::System.Configuration.Applicatio this["BAKPrompt"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool FlagIllegal { + get { + return ((bool)(this["FlagIllegal"])); + } + set { + this["FlagIllegal"] = value; + } + } } } diff --git a/PKHeX.WinForms/Properties/Settings.settings b/PKHeX.WinForms/Properties/Settings.settings index 38243d2b7..c426c4212 100644 --- a/PKHeX.WinForms/Properties/Settings.settings +++ b/PKHeX.WinForms/Properties/Settings.settings @@ -1,5 +1,5 @@  - + @@ -20,5 +20,8 @@ False + + False + \ No newline at end of file diff --git a/PKHeX.WinForms/Subforms/Save Editors/SAV_BoxViewer.cs b/PKHeX.WinForms/Subforms/Save Editors/SAV_BoxViewer.cs index c42ee42a6..2e6a68dd0 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/SAV_BoxViewer.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/SAV_BoxViewer.cs @@ -112,29 +112,16 @@ private void getSlotFiller(int offset, PictureBox pb) pb.BackColor = Color.Red; return; } - // Something stored in slot. Only display if species is valid. - var sprite = p.Species != 0 ? p.Sprite() : null; + int slot = getSlot(pb); - bool locked = slot < 30 && SAV.getIsSlotLocked(CB_BoxSelect.SelectedIndex, slot); - bool team = slot < 30 && SAV.getIsTeamSet(CB_BoxSelect.SelectedIndex, slot); - if (locked) - sprite = ImageUtil.LayerImage(sprite, Core.Properties.Resources.locked, 26, 0, 1); - else if (team) - sprite = ImageUtil.LayerImage(sprite, Core.Properties.Resources.team, 21, 0, 1); - pb.Image = sprite; + pb.Image = p.Sprite(SAV, CB_BoxSelect.SelectedIndex, slot, parent.Menu_FlagIllegal.Checked); pb.BackColor = Color.Transparent; + pb.Visible = true; } private void getQuickFiller(PictureBox pb, PKM pk) { - var sprite = pk.Species != 0 ? pk.Sprite() : null; int slot = getSlot(pb); - bool locked = slot < 30 && SAV.getIsSlotLocked(CB_BoxSelect.SelectedIndex, slot); - bool team = slot < 30 && SAV.getIsTeamSet(CB_BoxSelect.SelectedIndex, slot); - if (locked) - sprite = ImageUtil.LayerImage(sprite, Core.Properties.Resources.locked, 26, 0, 1); - else if (team) - sprite = ImageUtil.LayerImage(sprite, Core.Properties.Resources.team, 21, 0, 1); - pb.Image = sprite; + pb.Image = pk.Sprite(SAV, CB_BoxSelect.SelectedIndex, slot, parent.Menu_FlagIllegal.Checked); if (pb.BackColor == Color.Red) pb.BackColor = Color.Transparent; } diff --git a/PKHeX.WinForms/Util/PKMUtil.cs b/PKHeX.WinForms/Util/PKMUtil.cs index e650b610d..7a9cef8a4 100644 --- a/PKHeX.WinForms/Util/PKMUtil.cs +++ b/PKHeX.WinForms/Util/PKMUtil.cs @@ -90,11 +90,39 @@ private static Image getWallpaper(SaveFile SAV, int box) string s = BoxWallpaper.getWallpaper(SAV, box); return (Bitmap)(Resources.ResourceManager.GetObject(s) ?? Resources.box_wp16xy); } + private static Image getSprite(PKM pkm, SaveFile SAV, int box, int slot, bool flagIllegal = false) + { + if (!pkm.Valid) + return null; + + var sprite = pkm.Species != 0 ? pkm.Sprite() : null; + if (flagIllegal && slot > -1) + { + pkm.Box = box; + var la = new LegalityAnalysis(pkm); + if (la.Parsed && !la.Valid) + { + sprite = ImageUtil.LayerImage(sprite, Resources.warn, 0, 14, 1); + // sprite = ImageUtil.LayerImage(sprite, ImageUtil.ChangeAllColorTo(sprite, Color.Red), 0, 0, 0.5f); + } + } + + bool locked = slot < 30 && SAV.getIsSlotLocked(box, slot); + bool team = slot < 30 && SAV.getIsTeamSet(box, slot); + if (locked) + sprite = ImageUtil.LayerImage(sprite, Resources.locked, 26, 0, 1); + else if (team) + sprite = ImageUtil.LayerImage(sprite, Resources.team, 21, 0, 1); + + return sprite; + } // Extension Methods - public static Image Sprite(this MysteryGift gift) => getSprite(gift); - public static Image Sprite(this PKM pkm) => getSprite(pkm); - public static Image Sprite(this SaveFile SAV) => getSprite(SAV); public static Image WallpaperImage(this SaveFile SAV, int box) => getWallpaper(SAV, box); + public static Image Sprite(this MysteryGift gift) => getSprite(gift); + public static Image Sprite(this SaveFile SAV) => getSprite(SAV); + public static Image Sprite(this PKM pkm) => getSprite(pkm); + public static Image Sprite(this PKM pkm, SaveFile SAV, int box, int slot, bool flagIllegal = false) + => getSprite(pkm, SAV, box, slot, flagIllegal); } }