diff --git a/PKHeX.Core/Editing/CommonEdits.cs b/PKHeX.Core/Editing/CommonEdits.cs
index eae8ba603..32807b74d 100644
--- a/PKHeX.Core/Editing/CommonEdits.cs
+++ b/PKHeX.Core/Editing/CommonEdits.cs
@@ -688,5 +688,20 @@ public static void SetDefaultNickname(this PKM pk, LegalityAnalysis la = null)
else
pk.SetNickname();
}
+
+ private static readonly string[] PotentialUnicode = { "★☆☆☆", "★★☆☆", "★★★☆", "★★★★" };
+ private static readonly string[] PotentialNoUnicode = { "+", "++", "+++", "++++" };
+
+ ///
+ /// Gets the Potential evaluation of the input .
+ ///
+ /// Pokémon to analyze.
+ /// Returned value is unicode or not
+ /// Potential string
+ public static string GetPotentialString(this PKM pk, bool unicode = true)
+ {
+ var arr = unicode ? PotentialUnicode : PotentialNoUnicode;
+ return arr[pk.PotentialRating];
+ }
}
}
diff --git a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs
index faabce147..959434203 100644
--- a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs
+++ b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs
@@ -11,7 +11,7 @@
namespace PKHeX.WinForms.Controls
{
- public partial class PKMEditor : UserControl, IMainEditor
+ public sealed partial class PKMEditor : UserControl, IMainEditor
{
public PKMEditor()
{
@@ -28,6 +28,9 @@ public PKMEditor()
TB_OT.Font = (Font)TB_Nickname.Font.Clone();
TB_OTt2.Font = (Font)TB_Nickname.Font.Clone();
+ if (TextBrush == null) TextBrush = new SolidBrush(CB_Move1.ForeColor);
+ if (BackBrush == null) BackBrush = new SolidBrush(CB_Move1.BackColor);
+
// Commonly reused Control arrays
Moves = new[] { CB_Move1, CB_Move2, CB_Move3, CB_Move4 };
Relearn = new[] { CB_RelearnMove1, CB_RelearnMove2, CB_RelearnMove3, CB_RelearnMove4 };
@@ -76,7 +79,6 @@ private void SavePartyStats(PKM pk)
private LegalityAnalysis Legality;
private string[] gendersymbols = { "♂", "♀", "-" };
private readonly Image mixedHighlight = ImageUtil.ChangeOpacity(Resources.slotSet, 0.5);
- private static readonly Color InvalidSelectionColor = Color.DarkSalmon;
public event EventHandler LegalityChanged;
public event EventHandler UpdatePreviewSprite;
@@ -112,7 +114,7 @@ public bool VerifiedPKM()
if (ModifierKeys == (Keys.Control | Keys.Shift | Keys.Alt))
return true; // Override
- var cb = Array.Find(ValidationRequired, c => c.BackColor == InvalidSelectionColor && c.Items.Count != 0);
+ var cb = Array.Find(ValidationRequired, c => c.BackColor == InvalidSelection && c.Items.Count != 0);
if (cb != null)
tabMain.SelectedTab = WinFormsUtil.FindFirstControlOfType(cb);
else if (!Stats.Valid)
@@ -292,6 +294,14 @@ private void UpdateSprite()
}
// General Use Functions //
+ private Color InvalidSelection { get; set; } = Color.DarkSalmon;
+ private Color MarkBlue { get; set; } = Color.FromArgb(000, 191, 255);
+ private Color MarkPink { get; set; } = Color.FromArgb(255, 117, 179);
+ private Color MarkDefault { get; set; } = Color.Black;
+ private Brush LegalMove { get; set; } = Brushes.PaleGreen;
+ private Brush TextBrush { get; set; }
+ private Brush BackBrush { get; set; }
+
private Color GetGenderColor(int gender)
{
if (gender == 0) // male
@@ -418,18 +428,18 @@ private void SetMarkings()
if (GetMarkingColor(markings[i], out Color c))
pba[i].Image = ImageUtil.ChangeAllColorTo(pba[i].Image, c);
}
- private static bool GetMarkingColor(int markval, out Color c)
+ private bool GetMarkingColor(int markval, out Color c)
{
switch (markval)
{
case 1:
- c = Color.FromArgb(000, 191, 255);
+ c = MarkBlue;
return true;
case 2:
- c = Color.FromArgb(255, 117, 179);
+ c = MarkPink;
return true;
default:
- c = Color.Black;
+ c = MarkDefault;
return false;
}
}
@@ -1332,7 +1342,7 @@ private void ValidateComboBox(object sender)
if (cb.Text.Length == 0 && cb.Items.Count > 0)
cb.SelectedIndex = 0;
else if (cb.SelectedValue == null)
- cb.BackColor = InvalidSelectionColor;
+ cb.BackColor = InvalidSelection;
else
cb.ResetBackColor();
}
@@ -1392,18 +1402,14 @@ private void ValidateMovePaint(object sender, DrawItemEventArgs e)
var i = (ComboItem)((ComboBox)sender).Items[e.Index];
var moves = Legality.AllSuggestedMovesAndRelearn;
- bool vm = moves?.Contains(i.Value) == true && !HaX;
+ bool valid = moves?.Contains(i.Value) == true && !HaX;
bool current = (e.State & DrawItemState.Selected) == DrawItemState.Selected;
- Brush tBrush = current ? SystemBrushes.HighlightText : new SolidBrush(e.ForeColor);
- Brush brush = current ? SystemBrushes.Highlight : vm ? Brushes.PaleGreen : new SolidBrush(e.BackColor);
+ Brush tBrush = current ? SystemBrushes.HighlightText : TextBrush;
+ Brush brush = current ? SystemBrushes.Highlight : valid ? LegalMove : BackBrush;
e.Graphics.FillRectangle(brush, e.Bounds);
e.Graphics.DrawString(i.Text, e.Font, tBrush, e.Bounds, StringFormat.GenericDefault);
- if (current) return;
- tBrush.Dispose();
- if (!vm)
- brush.Dispose();
}
private void ValidateLocation(object sender, EventArgs e)
{
diff --git a/PKHeX.WinForms/Controls/PKM Editor/StatEditor.cs b/PKHeX.WinForms/Controls/PKM Editor/StatEditor.cs
index b00d1b1e5..ba25ddc6f 100644
--- a/PKHeX.WinForms/Controls/PKM Editor/StatEditor.cs
+++ b/PKHeX.WinForms/Controls/PKM Editor/StatEditor.cs
@@ -251,45 +251,22 @@ public void UpdateStats()
private void LoadBST(PersonalInfo pi)
{
- var stats = new[] {pi.HP, pi.ATK, pi.DEF, pi.SPE, pi.SPA, pi.SPD};
+ var stats = pi.Stats;
for (int i = 0; i < stats.Length; i++)
{
MT_Base[i].Text = stats[i].ToString("000");
- MT_Base[i].BackColor = MapColor(stats[i]);
+ MT_Base[i].BackColor = ImageUtil.ColorBaseStat(stats[i]);
}
var bst = pi.BST;
TB_BST.Text = bst.ToString("000");
- TB_BST.BackColor = MapColor((int)(Math.Max(0, bst - 175) / 3f));
- }
- private static Color MapColor(int v)
- {
- const float maxval = 180; // shift the green cap down
- float x = 100f * v / maxval;
- if (x > 100)
- x = 100;
- double red = 255f * (x > 50 ? 1 - 2 * (x - 50) / 100.0 : 1.0);
- double green = 255f * (x > 50 ? 1.0 : 2 * x / 100.0);
-
- return Blend(Color.FromArgb((int)red, (int)green, 0), Color.White, 0.4);
- }
- private static Color Blend(Color color, Color backColor, double amount)
- {
- byte r = (byte)(color.R * amount + backColor.R * (1 - amount));
- byte g = (byte)(color.G * amount + backColor.G * (1 - amount));
- byte b = (byte)(color.B * amount + backColor.B * (1 - amount));
- return Color.FromArgb(r, g, b);
+ TB_BST.BackColor = ImageUtil.ColorBaseStat((int)(Math.Max(0, bst - 175) / 3f));
}
public void UpdateRandomIVs(object sender, EventArgs e)
{
- ChangingFields = true;
- if (ModifierKeys.HasFlag(Keys.Control)) // Max IVs
- {
- int[] IVs = { pkm.MaxIV, pkm.MaxIV, pkm.MaxIV, pkm.MaxIV, pkm.MaxIV, pkm.MaxIV };
- LoadIVs(IVs);
- }
- else
- LoadIVs(pkm.SetRandomIVs());
+ int? flawless = ModifierKeys.HasFlag(Keys.Control) ? (int?)6 : null;
+ var IVs = pkm.SetRandomIVs(flawless);
+ LoadIVs(IVs);
}
public void UpdateCharacteristic() => UpdateCharacteristic(pkm.Characteristic);
@@ -429,16 +406,4 @@ public void InitializeDataSources()
CB_HPType.DataSource = Util.GetCBList(GameInfo.Strings.types.Skip(1).Take(16).ToArray(), null);
}
}
-
- public static partial class Extensions
- {
- private static readonly string[] PotentialUnicode = {"★☆☆☆", "★★☆☆", "★★★☆", "★★★★"};
- private static readonly string[] PotentialNoUnicode = {"+", "++", "+++", "++++"};
-
- public static string GetPotentialString(this PKM pkm, bool unicode = true)
- {
- var arr = unicode ? PotentialUnicode : PotentialNoUnicode;
- return arr[pkm.PotentialRating];
- }
- }
}
diff --git a/PKHeX.WinForms/Subforms/KChart.cs b/PKHeX.WinForms/Subforms/KChart.cs
index aedc925a0..87a0078b6 100644
--- a/PKHeX.WinForms/Subforms/KChart.cs
+++ b/PKHeX.WinForms/Subforms/KChart.cs
@@ -1,6 +1,5 @@
using System;
using System.ComponentModel;
-using System.Drawing;
using System.Windows.Forms;
using PKHeX.Core;
using PKHeX.WinForms.Properties;
@@ -54,44 +53,26 @@ private void PopEntry(int index)
row.Cells[r++].Value = PKMUtil.GetSprite(s, f, 0, 0, false, false, SAV.Generation);
row.Cells[r++].Value = species[index];
row.Cells[r++].Value = s > 721 || Legal.PastGenAlolanNatives.Contains(s);
- row.Cells[r].Style.BackColor = MapColor((int)((Math.Max(p.BST - 175, 0)) / 3f));
+ row.Cells[r].Style.BackColor = ImageUtil.ColorBaseStat((int)((Math.Max(p.BST - 175, 0)) / 3f));
row.Cells[r++].Value = p.BST.ToString("000");
row.Cells[r++].Value = PKMUtil.GetTypeSprite(p.Type1, SAV.Generation);
row.Cells[r++].Value = p.Type1 == p.Type2 ? Resources.slotTrans : PKMUtil.GetTypeSprite(p.Type2, SAV.Generation);
- row.Cells[r].Style.BackColor = MapColor(p.HP);
+ row.Cells[r].Style.BackColor = ImageUtil.ColorBaseStat(p.HP);
row.Cells[r++].Value = p.HP.ToString("000");
- row.Cells[r].Style.BackColor = MapColor(p.ATK);
+ row.Cells[r].Style.BackColor = ImageUtil.ColorBaseStat(p.ATK);
row.Cells[r++].Value = p.ATK.ToString("000");
- row.Cells[r].Style.BackColor = MapColor(p.DEF);
+ row.Cells[r].Style.BackColor = ImageUtil.ColorBaseStat(p.DEF);
row.Cells[r++].Value = p.DEF.ToString("000");
- row.Cells[r].Style.BackColor = MapColor(p.SPA);
+ row.Cells[r].Style.BackColor = ImageUtil.ColorBaseStat(p.SPA);
row.Cells[r++].Value = p.SPA.ToString("000");
- row.Cells[r].Style.BackColor = MapColor(p.SPD);
+ row.Cells[r].Style.BackColor = ImageUtil.ColorBaseStat(p.SPD);
row.Cells[r++].Value = p.SPD.ToString("000");
- row.Cells[r].Style.BackColor = MapColor(p.SPE);
+ row.Cells[r].Style.BackColor = ImageUtil.ColorBaseStat(p.SPE);
row.Cells[r++].Value = p.SPE.ToString("000");
row.Cells[r++].Value = abilities[p.Abilities[0]];
row.Cells[r++].Value = abilities[p.Abilities[1]];
row.Cells[r].Value = abilities[p.Abilities.Length <= 2 ? 0 : p.Abilities[2]];
DGV.Rows.Add(row);
}
- private static Color MapColor(int v)
- {
- const float maxval = 180; // shift the green cap down
- float x = 100f * v / maxval;
- if (x > 100)
- x = 100;
- double red = 255f * (x > 50 ? 1 - 2 * (x - 50) / 100.0 : 1.0);
- double green = 255f * (x > 50 ? 1.0 : 2 * x / 100.0);
-
- return Blend(Color.FromArgb((int)red, (int)green, 0), Color.White, 0.4);
- }
- private static Color Blend(Color color, Color backColor, double amount)
- {
- byte r = (byte)(color.R * amount + backColor.R * (1 - amount));
- byte g = (byte)(color.G * amount + backColor.G * (1 - amount));
- byte b = (byte)(color.B * amount + backColor.B * (1 - amount));
- return Color.FromArgb(r, g, b);
- }
}
}
diff --git a/PKHeX.WinForms/Subforms/PKM Editors/MemoryAmie.cs b/PKHeX.WinForms/Subforms/PKM Editors/MemoryAmie.cs
index 5a9b4233e..ebd85d6ee 100644
--- a/PKHeX.WinForms/Subforms/PKM Editors/MemoryAmie.cs
+++ b/PKHeX.WinForms/Subforms/PKM Editors/MemoryAmie.cs
@@ -85,7 +85,7 @@ private void LoadFields()
CB_OTFeel.SelectedIndex = pkm.OT_Feeling;
CB_Handler.Items.Clear();
- CB_Handler.Items.AddRange(new object[] {$"{pkm.OT_Name} ({args[2]})"}); // OTNAME : OT
+ CB_Handler.Items.Add($"{pkm.OT_Name} ({args[2]})"); // OTNAME : OT
if (!string.IsNullOrEmpty(pkm.HT_Name))
CB_Handler.Items.Add(pkm.HT_Name);
diff --git a/PKHeX.WinForms/Util/ImageUtil.cs b/PKHeX.WinForms/Util/ImageUtil.cs
index 73122a9b0..7b3dca9dc 100644
--- a/PKHeX.WinForms/Util/ImageUtil.cs
+++ b/PKHeX.WinForms/Util/ImageUtil.cs
@@ -123,5 +123,24 @@ private static void SetAllColorToGrayScale(byte[] data)
data[i + 2] = greyS;
}
}
+
+ public static Color ColorBaseStat(int v)
+ {
+ const float maxval = 180; // shift the green cap down
+ float x = 100f * v / maxval;
+ if (x > 100)
+ x = 100;
+ double red = 255f * (x > 50 ? 1 - 2 * (x - 50) / 100.0 : 1.0);
+ double green = 255f * (x > 50 ? 1.0 : 2 * x / 100.0);
+
+ return Blend(Color.FromArgb((int)red, (int)green, 0), Color.White, 0.4);
+ }
+ public static Color Blend(Color color, Color backColor, double amount)
+ {
+ byte r = (byte)(color.R * amount + backColor.R * (1 - amount));
+ byte g = (byte)(color.G * amount + backColor.G * (1 - amount));
+ byte b = (byte)(color.B * amount + backColor.B * (1 - amount));
+ return Color.FromArgb(r, g, b);
+ }
}
}