diff --git a/PKHeX.WinForms/MainWindow/Main.cs b/PKHeX.WinForms/MainWindow/Main.cs
index 2e84217c6..e43edd8aa 100644
--- a/PKHeX.WinForms/MainWindow/Main.cs
+++ b/PKHeX.WinForms/MainWindow/Main.cs
@@ -26,7 +26,7 @@ public Main()
L_UpdateAvailable.Click += (sender, e) => Process.Start(ThreadPath);
new Thread(() =>
{
- string data = Util.getStringFromURL(VersionPath);
+ string data = NetUtil.getStringFromURL(VersionPath);
if (data == null)
return;
try
@@ -215,7 +215,7 @@ public Main()
private static Image colorizedcolor;
private static int colorizedslot;
public static bool HaX;
- private static readonly Image mixedHighlight = Util.ChangeOpacity(Core.Properties.Resources.slotSet, 0.5);
+ private static readonly Image mixedHighlight = ImageUtil.ChangeOpacity(Core.Properties.Resources.slotSet, 0.5);
private static readonly string[] main_langlist =
{
"日本語", // JPN
@@ -1491,7 +1491,7 @@ public void populateFields(PKM pk, bool focus = true)
Label_Friendship.Visible = !CHK_IsEgg.Checked && SAV.Generation > 1;
// Set the Preview Box
- dragout.Image = pk.Sprite;
+ dragout.Image = pk.Sprite();
setMarkings();
updateLegality();
}
@@ -1577,27 +1577,27 @@ private void setMarkings()
{
PictureBox[] pba = { PB_Mark1, PB_Mark2, PB_Mark3, PB_Mark4, PB_Mark5, PB_Mark6 };
for (int i = 0; i < pba.Length; i++)
- pba[i].Image = Util.ChangeOpacity(pba[i].InitialImage, pkm.Markings[i] != 0 ? 1 : 0.1);
+ pba[i].Image = ImageUtil.ChangeOpacity(pba[i].InitialImage, pkm.Markings[i] != 0 ? 1 : 0.1);
- PB_MarkShiny.Image = Util.ChangeOpacity(PB_MarkShiny.InitialImage, !BTN_Shinytize.Enabled ? 1 : 0.1);
- PB_MarkCured.Image = Util.ChangeOpacity(PB_MarkCured.InitialImage, CHK_Cured.Checked ? 1 : 0.1);
+ PB_MarkShiny.Image = ImageUtil.ChangeOpacity(PB_MarkShiny.InitialImage, !BTN_Shinytize.Enabled ? 1 : 0.1);
+ PB_MarkCured.Image = ImageUtil.ChangeOpacity(PB_MarkCured.InitialImage, CHK_Cured.Checked ? 1 : 0.1);
- PB_MarkPentagon.Image = Util.ChangeOpacity(PB_MarkPentagon.InitialImage, pkm.Gen6 ? 1 : 0.1);
+ PB_MarkPentagon.Image = ImageUtil.ChangeOpacity(PB_MarkPentagon.InitialImage, pkm.Gen6 ? 1 : 0.1);
// Gen7 Markings
if (pkm.Format != 7)
return;
- PB_MarkAlola.Image = Util.ChangeOpacity(PB_MarkAlola.InitialImage, pkm.Gen7 ? 1 : 0.1);
+ PB_MarkAlola.Image = ImageUtil.ChangeOpacity(PB_MarkAlola.InitialImage, pkm.Gen7 ? 1 : 0.1);
for (int i = 0; i < pba.Length; i++)
{
switch (pkm.Markings[i])
{
case 1:
- pba[i].Image = Util.ChangeAllColorTo(pba[i].Image, Color.FromArgb(000, 191, 255));
+ pba[i].Image = ImageUtil.ChangeAllColorTo(pba[i].Image, Color.FromArgb(000, 191, 255));
break;
case 2:
- pba[i].Image = Util.ChangeAllColorTo(pba[i].Image, Color.FromArgb(255, 117, 179));
+ pba[i].Image = ImageUtil.ChangeAllColorTo(pba[i].Image, Color.FromArgb(255, 117, 179));
break;
}
}
@@ -1642,7 +1642,7 @@ private void clickQR(object sender, EventArgs e)
switch (pkx.Format)
{
case 7:
- qr = QR7.GenerateQRCode7((PK7) pkx);
+ qr = QR.GenerateQRCode7((PK7) pkx);
break;
default:
qr = QR.getQRImage(ekx, pkx.Format == 6 ? server : "null/#");
@@ -1947,7 +1947,7 @@ private void clickMetLocation(object sender, EventArgs e)
private bool changingFields;
private void updateBall(object sender, EventArgs e)
{
- PB_Ball.Image = PKX.getBallSprite(WinFormsUtil.getIndex(CB_Ball));
+ PB_Ball.Image = PKMUtil.getBallSprite(WinFormsUtil.getIndex(CB_Ball));
}
private void updateEXPLevel(object sender, EventArgs e)
{
@@ -3622,7 +3622,7 @@ public void setPKXBoxes()
{
int boxoffset = SAV.getBoxOffset(CB_BoxSelect.SelectedIndex);
int boxbgval = SAV.getBoxWallpaper(CB_BoxSelect.SelectedIndex);
- PAN_Box.BackgroundImage = BoxWallpaper.getWallpaper(SAV, boxbgval);
+ PAN_Box.BackgroundImage = SAV.getWallpaper(boxbgval);
for (int i = 0; i < 30; i++)
{
if (i < SAV.BoxSlotCount)
@@ -3671,7 +3671,7 @@ public void setPKXBoxes()
else
{
L_SlotOccupied[i].Text = $"{i + 1}: ✘";
- SlotPictureBoxes[i + 42].Image = Util.ChangeOpacity(SlotPictureBoxes[i + 42].Image, 0.6);
+ SlotPictureBoxes[i + 42].Image = ImageUtil.ChangeOpacity(SlotPictureBoxes[i + 42].Image, 0.6);
}
}
bool? egg = SAV.getDaycareHasEgg(SAV.DaycareIndex);
@@ -3736,14 +3736,14 @@ 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;
+ 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 = Util.LayerImage(sprite, Core.Properties.Resources.locked, 26, 0, 1);
+ sprite = ImageUtil.LayerImage(sprite, Core.Properties.Resources.locked, 26, 0, 1);
else if (team)
- sprite = Util.LayerImage(sprite, Core.Properties.Resources.team, 21, 0, 1);
+ sprite = ImageUtil.LayerImage(sprite, Core.Properties.Resources.team, 21, 0, 1);
pb.Image = sprite;
if (pb.BackColor == Color.Red)
pb.BackColor = Color.Transparent;
@@ -3769,14 +3769,14 @@ private void getSlotFiller(int offset, PictureBox pb)
}
// Something stored in slot. Only display if species is valid.
- var sprite = p.Species != 0 ? p.Sprite : null;
+ 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 = Util.LayerImage(sprite, Core.Properties.Resources.locked, 26, 0, 1);
+ sprite = ImageUtil.LayerImage(sprite, Core.Properties.Resources.locked, 26, 0, 1);
else if (team)
- sprite = Util.LayerImage(sprite, Core.Properties.Resources.team, 21, 0, 1);
+ sprite = ImageUtil.LayerImage(sprite, Core.Properties.Resources.team, 21, 0, 1);
pb.Image = sprite;
pb.BackColor = Color.Transparent;
pb.Visible = true;
diff --git a/PKHeX.WinForms/Misc/QR.Designer.cs b/PKHeX.WinForms/Misc/QR.Designer.cs
index 4909ea0b4..898577ced 100644
--- a/PKHeX.WinForms/Misc/QR.Designer.cs
+++ b/PKHeX.WinForms/Misc/QR.Designer.cs
@@ -1,11 +1,17 @@
-namespace PKHeX.WinForms
+using System;
+using System.ComponentModel;
+using System.Drawing;
+using System.Windows.Forms;
+using PKHeX.Core;
+
+namespace PKHeX.WinForms
{
partial class QR
{
///
/// Required designer variable.
///
- private System.ComponentModel.IContainer components = null;
+ private IContainer components = null;
///
/// Clean up any resources being used.
@@ -28,47 +34,47 @@ protected override void Dispose(bool disposing)
///
private void InitializeComponent()
{
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(QR));
- this.PB_QR = new System.Windows.Forms.PictureBox();
- this.FontLabel = new System.Windows.Forms.Label();
- this.NUD_Box = new System.Windows.Forms.NumericUpDown();
- this.label1 = new System.Windows.Forms.Label();
- this.label2 = new System.Windows.Forms.Label();
- this.NUD_Slot = new System.Windows.Forms.NumericUpDown();
- this.label3 = new System.Windows.Forms.Label();
- this.NUD_Copies = new System.Windows.Forms.NumericUpDown();
- this.B_Refresh = new System.Windows.Forms.Button();
- ((System.ComponentModel.ISupportInitialize)(this.PB_QR)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.NUD_Box)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.NUD_Slot)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.NUD_Copies)).BeginInit();
+ ComponentResourceManager resources = new ComponentResourceManager(typeof(QR));
+ this.PB_QR = new PictureBox();
+ this.FontLabel = new Label();
+ this.NUD_Box = new NumericUpDown();
+ this.label1 = new Label();
+ this.label2 = new Label();
+ this.NUD_Slot = new NumericUpDown();
+ this.label3 = new Label();
+ this.NUD_Copies = new NumericUpDown();
+ this.B_Refresh = new Button();
+ ((ISupportInitialize)(this.PB_QR)).BeginInit();
+ ((ISupportInitialize)(this.NUD_Box)).BeginInit();
+ ((ISupportInitialize)(this.NUD_Slot)).BeginInit();
+ ((ISupportInitialize)(this.NUD_Copies)).BeginInit();
this.SuspendLayout();
//
// PB_QR
//
- this.PB_QR.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.PB_QR.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
- this.PB_QR.Location = new System.Drawing.Point(2, 1);
+ this.PB_QR.Anchor = ((AnchorStyles)(((AnchorStyles.Top | AnchorStyles.Left)
+ | AnchorStyles.Right)));
+ this.PB_QR.BackgroundImageLayout = ImageLayout.None;
+ this.PB_QR.Location = new Point(2, 1);
this.PB_QR.Name = "PB_QR";
- this.PB_QR.Size = new System.Drawing.Size(405, 455);
+ this.PB_QR.Size = new Size(405, 455);
this.PB_QR.TabIndex = 0;
this.PB_QR.TabStop = false;
- this.PB_QR.Click += new System.EventHandler(this.PB_QR_Click);
+ this.PB_QR.Click += new EventHandler(this.PB_QR_Click);
//
// FontLabel
//
this.FontLabel.AutoSize = true;
- this.FontLabel.Location = new System.Drawing.Point(388, 393);
+ this.FontLabel.Location = new Point(388, 393);
this.FontLabel.Name = "FontLabel";
- this.FontLabel.Size = new System.Drawing.Size(19, 13);
+ this.FontLabel.Size = new Size(19, 13);
this.FontLabel.TabIndex = 1;
this.FontLabel.Text = "<3";
this.FontLabel.Visible = false;
//
// NUD_Box
//
- this.NUD_Box.Location = new System.Drawing.Point(38, 465);
+ this.NUD_Box.Location = new Point(38, 465);
this.NUD_Box.Maximum = new decimal(new int[] {
32,
0,
@@ -80,7 +86,7 @@ private void InitializeComponent()
0,
0});
this.NUD_Box.Name = "NUD_Box";
- this.NUD_Box.Size = new System.Drawing.Size(61, 20);
+ this.NUD_Box.Size = new Size(61, 20);
this.NUD_Box.TabIndex = 2;
this.NUD_Box.Value = new decimal(new int[] {
1,
@@ -91,24 +97,24 @@ private void InitializeComponent()
// label1
//
this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(4, 467);
+ this.label1.Location = new Point(4, 467);
this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(28, 13);
+ this.label1.Size = new Size(28, 13);
this.label1.TabIndex = 3;
this.label1.Text = "Box:";
//
// label2
//
this.label2.AutoSize = true;
- this.label2.Location = new System.Drawing.Point(105, 467);
+ this.label2.Location = new Point(105, 467);
this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(28, 13);
+ this.label2.Size = new Size(28, 13);
this.label2.TabIndex = 5;
this.label2.Text = "Slot:";
//
// NUD_Slot
//
- this.NUD_Slot.Location = new System.Drawing.Point(139, 465);
+ this.NUD_Slot.Location = new Point(139, 465);
this.NUD_Slot.Maximum = new decimal(new int[] {
30,
0,
@@ -120,7 +126,7 @@ private void InitializeComponent()
0,
0});
this.NUD_Slot.Name = "NUD_Slot";
- this.NUD_Slot.Size = new System.Drawing.Size(61, 20);
+ this.NUD_Slot.Size = new Size(61, 20);
this.NUD_Slot.TabIndex = 4;
this.NUD_Slot.Value = new decimal(new int[] {
1,
@@ -131,15 +137,15 @@ private void InitializeComponent()
// label3
//
this.label3.AutoSize = true;
- this.label3.Location = new System.Drawing.Point(211, 467);
+ this.label3.Location = new Point(211, 467);
this.label3.Name = "label3";
- this.label3.Size = new System.Drawing.Size(42, 13);
+ this.label3.Size = new Size(42, 13);
this.label3.TabIndex = 7;
this.label3.Text = "Copies:";
//
// NUD_Copies
//
- this.NUD_Copies.Location = new System.Drawing.Point(259, 465);
+ this.NUD_Copies.Location = new Point(259, 465);
this.NUD_Copies.Maximum = new decimal(new int[] {
960,
0,
@@ -151,7 +157,7 @@ private void InitializeComponent()
0,
0});
this.NUD_Copies.Name = "NUD_Copies";
- this.NUD_Copies.Size = new System.Drawing.Size(52, 20);
+ this.NUD_Copies.Size = new Size(52, 20);
this.NUD_Copies.TabIndex = 6;
this.NUD_Copies.Value = new decimal(new int[] {
1,
@@ -161,19 +167,19 @@ private void InitializeComponent()
//
// B_Refresh
//
- this.B_Refresh.Location = new System.Drawing.Point(317, 464);
+ this.B_Refresh.Location = new Point(317, 464);
this.B_Refresh.Name = "B_Refresh";
- this.B_Refresh.Size = new System.Drawing.Size(80, 23);
+ this.B_Refresh.Size = new Size(80, 23);
this.B_Refresh.TabIndex = 8;
this.B_Refresh.Text = "Refresh";
this.B_Refresh.UseVisualStyleBackColor = true;
- this.B_Refresh.Click += new System.EventHandler(this.updateBoxSlotCopies);
+ this.B_Refresh.Click += new EventHandler(this.updateBoxSlotCopies);
//
// QR
//
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(409, 407);
+ this.AutoScaleDimensions = new SizeF(6F, 13F);
+ this.AutoScaleMode = AutoScaleMode.Font;
+ this.ClientSize = new Size(409, 407);
this.Controls.Add(this.B_Refresh);
this.Controls.Add(this.label3);
this.Controls.Add(this.NUD_Copies);
@@ -183,17 +189,17 @@ private void InitializeComponent()
this.Controls.Add(this.NUD_Box);
this.Controls.Add(this.FontLabel);
this.Controls.Add(this.PB_QR);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
- this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.FormBorderStyle = FormBorderStyle.FixedSingle;
+ this.Icon = ((Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "QR";
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.StartPosition = FormStartPosition.CenterParent;
this.Text = "PKHeX QR Code (Click QR to Copy Image)";
- ((System.ComponentModel.ISupportInitialize)(this.PB_QR)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.NUD_Box)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.NUD_Slot)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.NUD_Copies)).EndInit();
+ ((ISupportInitialize)(this.PB_QR)).EndInit();
+ ((ISupportInitialize)(this.NUD_Box)).EndInit();
+ ((ISupportInitialize)(this.NUD_Slot)).EndInit();
+ ((ISupportInitialize)(this.NUD_Copies)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
@@ -201,14 +207,14 @@ private void InitializeComponent()
#endregion
- private System.Windows.Forms.PictureBox PB_QR;
- private System.Windows.Forms.Label FontLabel;
- private System.Windows.Forms.NumericUpDown NUD_Box;
- private System.Windows.Forms.Label label1;
- private System.Windows.Forms.Label label2;
- private System.Windows.Forms.NumericUpDown NUD_Slot;
- private System.Windows.Forms.Label label3;
- private System.Windows.Forms.NumericUpDown NUD_Copies;
- private System.Windows.Forms.Button B_Refresh;
+ private PictureBox PB_QR;
+ private Label FontLabel;
+ private NumericUpDown NUD_Box;
+ private Label label1;
+ private Label label2;
+ private NumericUpDown NUD_Slot;
+ private Label label3;
+ private NumericUpDown NUD_Copies;
+ private Button B_Refresh;
}
}
\ No newline at end of file
diff --git a/PKHeX.WinForms/Misc/QR.cs b/PKHeX.WinForms/Misc/QR.cs
index 6424efb62..a6abc9225 100644
--- a/PKHeX.WinForms/Misc/QR.cs
+++ b/PKHeX.WinForms/Misc/QR.cs
@@ -6,6 +6,7 @@
using System.Web;
using System.Windows.Forms;
using PKHeX.Core;
+using QRCoder;
namespace PKHeX.WinForms
{
@@ -56,7 +57,7 @@ private void RefreshImage()
gfx.DrawImage(icon, preview.Width / 2 - icon.Width / 2, preview.Height / 2 - icon.Height / 2);
}
// Layer on Preview Image
- Image pic = Util.LayerImage(qr, preview, qr.Width / 2 - preview.Width / 2, qr.Height / 2 - preview.Height / 2, 1);
+ Image pic = ImageUtil.LayerImage(qr, preview, qr.Width / 2 - preview.Width / 2, qr.Height / 2 - preview.Height / 2, 1);
Image newpic = new Bitmap(PB_QR.Width, PB_QR.Height);
using (Graphics g = Graphics.FromImage(newpic))
@@ -91,7 +92,7 @@ internal static byte[] getQRData()
string webURL = "http://api.qrserver.com/v1/read-qr-code/?fileurl=" + HttpUtility.UrlEncode(address);
try
{
- string data = Util.getStringFromURL(webURL);
+ string data = NetUtil.getStringFromURL(webURL);
if (data.Contains("could not find")) { WinFormsUtil.Alert("Reader could not find QR data in the image."); return null; }
if (data.Contains("filetype not supported")) { WinFormsUtil.Alert("Input URL is not valid. Double check that it is an image (jpg/png).", address); return null; }
// Quickly convert the json response to a data string
@@ -131,7 +132,7 @@ internal static Image getQRImage(byte[] data, string server)
try
{
- return Util.getImageFromURL(webURL);
+ return NetUtil.getImageFromURL(webURL);
}
catch
{
@@ -150,12 +151,29 @@ private void updateBoxSlotCopies(object sender, EventArgs e)
var box = (int) NUD_Box.Value - 1;
var slot = (int) NUD_Slot.Value - 1;
var copies = (int) NUD_Copies.Value;
- var new_qr = QR7.GenerateQRCode7((PK7)pkm, box, slot, copies);
+ var new_qr = GenerateQRCode7((PK7)pkm, box, slot, copies);
qr = new_qr;
SuspendLayout();
extraText = $" (Box {box+1}, Slot {slot+1}, {copies} cop{(copies > 1 ? "ies" : "y")})";
RefreshImage();
ResumeLayout();
}
+
+ // QR7 Utility
+ public static Image GenerateQRCode7(PK7 pk7, int box = 0, int slot = 0, int num_copies = 1)
+ {
+ byte[] data = QR7.GenerateQRData(pk7, box, slot, num_copies);
+ using (var generator = new QRCodeGenerator())
+ using (var qr_data = generator.CreateQRCode(data))
+ using (var qr_code = new QRCode(qr_data))
+ return qr_code.GetGraphic(4);
+ }
+ public static Image GenerateQRCode(byte[] data, int ppm = 4)
+ {
+ using (var generator = new QRCodeGenerator())
+ using (var qr_data = generator.CreateQRCode(data))
+ using (var qr_code = new QRCode(qr_data))
+ return qr_code.GetGraphic(ppm);
+ }
}
}
\ No newline at end of file
diff --git a/PKHeX.WinForms/PKHeX.WinForms.csproj b/PKHeX.WinForms/PKHeX.WinForms.csproj
index f65d6b939..df1b220d6 100644
--- a/PKHeX.WinForms/PKHeX.WinForms.csproj
+++ b/PKHeX.WinForms/PKHeX.WinForms.csproj
@@ -337,6 +337,13 @@
+
+
+
+
+
+
+
Main.cs
diff --git a/PKHeX.WinForms/Subforms/KChart.cs b/PKHeX.WinForms/Subforms/KChart.cs
index 694583ad8..a637e81d7 100644
--- a/PKHeX.WinForms/Subforms/KChart.cs
+++ b/PKHeX.WinForms/Subforms/KChart.cs
@@ -48,7 +48,7 @@ private void popEntry(int index)
int r = 0;
row.Cells[r++].Value = s.ToString("000") + (f > 0 ? "-"+f.ToString("00") :"");
- row.Cells[r++].Value = PKX.getSprite(s, f, 0, 0, false, false, Main.SAV.Generation);
+ row.Cells[r++].Value = PKMUtil.getSprite(s, f, 0, 0, false, false, Main.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)((p.BST - 175) / 3f));
diff --git a/PKHeX.WinForms/Subforms/SAV_Database.cs b/PKHeX.WinForms/Subforms/SAV_Database.cs
index d0d01663c..36aa353f8 100644
--- a/PKHeX.WinForms/Subforms/SAV_Database.cs
+++ b/PKHeX.WinForms/Subforms/SAV_Database.cs
@@ -551,7 +551,7 @@ private void FillPKXBoxes(int start)
}
PKM[] data = Results.Skip(start * RES_MIN).Take(RES_MAX).ToArray();
for (int i = 0; i < data.Length; i++)
- PKXBOXES[i].Image = data[i].Sprite;
+ PKXBOXES[i].Image = data[i].Sprite();
for (int i = data.Length; i < RES_MAX; i++)
PKXBOXES[i].Image = null;
diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_BoxLayout.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_BoxLayout.cs
index 37fcf349c..d9aa1a655 100644
--- a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_BoxLayout.cs
+++ b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_BoxLayout.cs
@@ -125,7 +125,7 @@ private void changeBoxBG(object sender, EventArgs e)
if (!editing)
SAV.setBoxWallpaper(LB_BoxSelect.SelectedIndex, CB_BG.SelectedIndex);
- PAN_BG.BackgroundImage = BoxWallpaper.getWallpaper(SAV, CB_BG.SelectedIndex);
+ PAN_BG.BackgroundImage = SAV.getWallpaper(CB_BG.SelectedIndex);
}
private bool MoveItem(int direction)
diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs
index 1d5aa1fca..fce7c4748 100644
--- a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs
+++ b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs
@@ -229,7 +229,7 @@ private void NUP_PartyIndex_ValueChanged(object sender, EventArgs e)
CB_Form.SelectedIndex = (int)form;
setGenderLabel((int)gender);
updateNickname(sender, e);
- bpkx.Image = PKX.getSprite(species, (int)form, (int)gender, item, false, shiny == 1);
+ bpkx.Image = PKMUtil.getSprite(species, (int)form, (int)gender, item, false, shiny == 1);
editing = true;
}
private void Write_Entry(object sender, EventArgs e)
@@ -290,7 +290,7 @@ private void Write_Entry(object sender, EventArgs e)
vnd |= rawvnd & 0x80000000;
Array.Copy(BitConverter.GetBytes(vnd), 0, data, offset + 0x1B0, 4);
- bpkx.Image = PKX.getSprite(WinFormsUtil.getIndex(CB_Species), CB_Form.SelectedIndex & 0x1F, PKX.getGender(Label_Gender.Text), WinFormsUtil.getIndex(CB_HeldItem), false, CHK_Shiny.Checked);
+ bpkx.Image = PKMUtil.getSprite(WinFormsUtil.getIndex(CB_Species), CB_Form.SelectedIndex & 0x1F, PKX.getGender(Label_Gender.Text), WinFormsUtil.getIndex(CB_HeldItem), false, CHK_Shiny.Checked);
displayEntry(null, null); // refresh text view
}
private void Validate_TextBoxes()
@@ -339,7 +339,7 @@ private void updateShiny(object sender, EventArgs e)
{
if (!editing)
return; //Don't do writing until loaded
- bpkx.Image = PKX.getSprite(WinFormsUtil.getIndex(CB_Species), CB_Form.SelectedIndex & 0x1F, PKX.getGender(Label_Gender.Text), WinFormsUtil.getIndex(CB_HeldItem), false, CHK_Shiny.Checked);
+ bpkx.Image = PKMUtil.getSprite(WinFormsUtil.getIndex(CB_Species), CB_Form.SelectedIndex & 0x1F, PKX.getGender(Label_Gender.Text), WinFormsUtil.getIndex(CB_HeldItem), false, CHK_Shiny.Checked);
Write_Entry(null, null);
}
diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_Trainer.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_Trainer.cs
index eed7ea650..0e7045d4d 100644
--- a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_Trainer.cs
+++ b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_Trainer.cs
@@ -361,7 +361,7 @@ private void getBadges()
};
for (int i = 0; i < 8; i++)
- pba[i].Image = Util.ChangeOpacity(bma[i], cba[i].Checked ? 1 : 0.1);
+ pba[i].Image = ImageUtil.ChangeOpacity(bma[i], cba[i].Checked ? 1 : 0.1);
}
private void getTextBoxes()
{
diff --git a/PKHeX.WinForms/Subforms/Save Editors/SAV_BoxViewer.cs b/PKHeX.WinForms/Subforms/Save Editors/SAV_BoxViewer.cs
index 51bfcbb9c..f466cdd39 100644
--- a/PKHeX.WinForms/Subforms/Save Editors/SAV_BoxViewer.cs
+++ b/PKHeX.WinForms/Subforms/Save Editors/SAV_BoxViewer.cs
@@ -90,7 +90,7 @@ public void setPKXBoxes()
{
int boxoffset = SAV.getBoxOffset(CB_BoxSelect.SelectedIndex);
int boxbgval = SAV.getBoxWallpaper(CB_BoxSelect.SelectedIndex);
- PAN_Box.BackgroundImage = BoxWallpaper.getWallpaper(SAV, boxbgval);
+ PAN_Box.BackgroundImage = SAV.getWallpaper(boxbgval);
for (int i = 0; i < SAV.BoxSlotCount; i++)
getSlotFiller(boxoffset + SAV.SIZE_STORED*i, SlotPictureBoxes[i]);
@@ -113,27 +113,27 @@ private void getSlotFiller(int offset, PictureBox pb)
return;
}
// Something stored in slot. Only display if species is valid.
- var sprite = p.Species != 0 ? p.Sprite : null;
+ 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 = Util.LayerImage(sprite, Core.Properties.Resources.locked, 26, 0, 1);
+ sprite = ImageUtil.LayerImage(sprite, Core.Properties.Resources.locked, 26, 0, 1);
else if (team)
- sprite = Util.LayerImage(sprite, Core.Properties.Resources.team, 21, 0, 1);
+ sprite = ImageUtil.LayerImage(sprite, Core.Properties.Resources.team, 21, 0, 1);
pb.Image = sprite;
pb.BackColor = Color.Transparent;
}
private void getQuickFiller(PictureBox pb, PKM pk)
{
- var sprite = pk.Species != 0 ? pk.Sprite : null;
+ 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 = Util.LayerImage(sprite, Core.Properties.Resources.locked, 26, 0, 1);
+ sprite = ImageUtil.LayerImage(sprite, Core.Properties.Resources.locked, 26, 0, 1);
else if (team)
- sprite = Util.LayerImage(sprite, Core.Properties.Resources.team, 21, 0, 1);
+ sprite = ImageUtil.LayerImage(sprite, Core.Properties.Resources.team, 21, 0, 1);
pb.Image = sprite;
if (pb.BackColor == Color.Red)
pb.BackColor = Color.Transparent;
diff --git a/PKHeX.WinForms/Subforms/Save Editors/SAV_Wondercard.cs b/PKHeX.WinForms/Subforms/Save Editors/SAV_Wondercard.cs
index 5e3cf6378..d5e8b28a9 100644
--- a/PKHeX.WinForms/Subforms/Save Editors/SAV_Wondercard.cs
+++ b/PKHeX.WinForms/Subforms/Save Editors/SAV_Wondercard.cs
@@ -473,14 +473,14 @@ internal static Image getSprite(MysteryGift gift)
{
Image img;
if (gift.IsPokémon)
- img = PKX.getSprite(gift.convertToPKM(Main.SAV));
+ img = PKMUtil.getSprite(gift.convertToPKM(Main.SAV));
else if (gift.IsItem)
img = (Image)(Core.Properties.Resources.ResourceManager.GetObject("item_" + gift.Item) ?? Core.Properties.Resources.unknown);
else
img = Core.Properties.Resources.unknown;
if (gift.GiftUsed)
- img = Util.LayerImage(new Bitmap(img.Width, img.Height), img, 0, 0, 0.3);
+ img = ImageUtil.LayerImage(new Bitmap(img.Width, img.Height), img, 0, 0, 0.3);
return img;
}
private static string getDescription(MysteryGift gift)
diff --git a/PKHeX.WinForms/Subforms/frmReport.cs b/PKHeX.WinForms/Subforms/frmReport.cs
index 90aff7524..0f2ef7709 100644
--- a/PKHeX.WinForms/Subforms/frmReport.cs
+++ b/PKHeX.WinForms/Subforms/frmReport.cs
@@ -18,7 +18,7 @@ public class Preview
{
private readonly PKM pkm;
public string Position => pkm.Identifier;
- public Image Sprite => pkm.Sprite;
+ public Image Sprite => pkm.Sprite();
public string Nickname => pkm.Nickname;
public string Species => GameInfo.Strings.specieslist[pkm.Species];
public string Nature => GameInfo.Strings.natures[pkm.Nature];
@@ -183,7 +183,7 @@ public void PopulateData(PKM[] Data)
}
private void dgData_Sorted(object sender, EventArgs e)
{
- int height = PKX.getSprite(1, 0, 0, 0, false, false).Height + 1; // dummy sprite, max height of a row
+ int height = PKMUtil.getSprite(1, 0, 0, 0, false, false).Height + 1; // dummy sprite, max height of a row
for (int i = 0; i < dgData.Rows.Count; i++)
dgData.Rows[i].Height = height;
}
diff --git a/PKHeX/Util/ImageUtil.cs b/PKHeX.WinForms/Util/ImageUtil.cs
similarity index 98%
rename from PKHeX/Util/ImageUtil.cs
rename to PKHeX.WinForms/Util/ImageUtil.cs
index febc12d91..dc2a99181 100644
--- a/PKHeX/Util/ImageUtil.cs
+++ b/PKHeX.WinForms/Util/ImageUtil.cs
@@ -5,7 +5,7 @@
namespace PKHeX.Core
{
- public static partial class Util
+ public static class ImageUtil
{
// Image Layering/Blending Utility
public static Bitmap LayerImage(Image baseLayer, Image overLayer, int x, int y, double trans)
diff --git a/PKHeX/Util/NetUtil.cs b/PKHeX.WinForms/Util/NetUtil.cs
similarity index 97%
rename from PKHeX/Util/NetUtil.cs
rename to PKHeX.WinForms/Util/NetUtil.cs
index 926880b8e..fce665ca4 100644
--- a/PKHeX/Util/NetUtil.cs
+++ b/PKHeX.WinForms/Util/NetUtil.cs
@@ -5,7 +5,7 @@
namespace PKHeX.Core
{
- public partial class Util
+ public class NetUtil
{
public static string getStringFromURL(string webURL)
{
diff --git a/PKHeX.WinForms/Util/PKMUtil.cs b/PKHeX.WinForms/Util/PKMUtil.cs
new file mode 100644
index 000000000..115624946
--- /dev/null
+++ b/PKHeX.WinForms/Util/PKMUtil.cs
@@ -0,0 +1,73 @@
+using System.Drawing;
+using PKHeX.Core;
+using PKHeX.Core.Properties;
+
+namespace PKHeX.WinForms
+{
+ public static class PKMUtil
+ {
+ public static Image getBallSprite(int ball)
+ {
+ string str = PKX.getBallString(ball);
+ return (Image)Resources.ResourceManager.GetObject(str) ?? Resources._ball4; // Poké Ball (default)
+ }
+ public static Image Sprite(this PKM pkm)
+ {
+ return getSprite(pkm);
+ }
+ public static Image getSprite(int species, int form, int gender, int item, bool isegg, bool shiny, int generation = -1)
+ {
+ if (species == 0)
+ return (Image)Resources.ResourceManager.GetObject("_0");
+
+ string file = PKX.getSpriteString(species, form, gender, generation);
+
+ // Redrawing logic
+ Image baseImage = (Image)Resources.ResourceManager.GetObject(file);
+ if (baseImage == null)
+ {
+ if (species < 803)
+ {
+ baseImage = ImageUtil.LayerImage(
+ (Image)Resources.ResourceManager.GetObject("_" + species),
+ Resources.unknown,
+ 0, 0, .5);
+ }
+ else
+ baseImage = Resources.unknown;
+ }
+ if (isegg)
+ {
+ // Start with a partially transparent species by layering the species with partial opacity onto a blank image.
+ baseImage = ImageUtil.LayerImage((Image)Resources.ResourceManager.GetObject("_0"), baseImage, 0, 0, 0.33);
+ // Add the egg layer over-top with full opacity.
+ baseImage = ImageUtil.LayerImage(baseImage, (Image)Resources.ResourceManager.GetObject("egg"), 0, 0, 1);
+ }
+ if (shiny)
+ {
+ // Add shiny star to top left of image.
+ baseImage = ImageUtil.LayerImage(baseImage, Resources.rare_icon, 0, 0, 0.7);
+ }
+ if (item > 0)
+ {
+ Image itemimg = (Image)Resources.ResourceManager.GetObject("item_" + item) ?? Resources.helditem;
+ if (generation >= 2 && generation <= 4 && 328 <= item && item <= 419) // gen2/3/4 TM
+ itemimg = Resources.item_tm;
+
+ // Redraw
+ baseImage = ImageUtil.LayerImage(baseImage, itemimg, 22 + (15 - itemimg.Width) / 2, 15 + (15 - itemimg.Height), 1);
+ }
+ return baseImage;
+ }
+ public static Image getSprite(PKM pkm)
+ {
+ return getSprite(pkm.Species, pkm.AltForm, pkm.Gender, pkm.SpriteItem, pkm.IsEgg, pkm.IsShiny, pkm.Format);
+ }
+
+ public static Image getWallpaper(this SaveFile SAV, int box)
+ {
+ string s = BoxWallpaper.getWallpaper(SAV, box);
+ return (Bitmap)(Resources.ResourceManager.GetObject(s) ?? Resources.box_wp16xy);
+ }
+ }
+}
diff --git a/PKHeX/Util/QRCoder/AbstractQRCode.cs b/PKHeX.WinForms/Util/QRCoder/AbstractQRCode.cs
similarity index 100%
rename from PKHeX/Util/QRCoder/AbstractQRCode.cs
rename to PKHeX.WinForms/Util/QRCoder/AbstractQRCode.cs
diff --git a/PKHeX/Util/QRCoder/QRCode.cs b/PKHeX.WinForms/Util/QRCoder/QRCode.cs
similarity index 100%
rename from PKHeX/Util/QRCoder/QRCode.cs
rename to PKHeX.WinForms/Util/QRCoder/QRCode.cs
diff --git a/PKHeX/Util/QRCoder/QRCodeData.cs b/PKHeX.WinForms/Util/QRCoder/QRCodeData.cs
similarity index 100%
rename from PKHeX/Util/QRCoder/QRCodeData.cs
rename to PKHeX.WinForms/Util/QRCoder/QRCodeData.cs
diff --git a/PKHeX/Util/QRCoder/QRCodeGenerator.cs b/PKHeX.WinForms/Util/QRCoder/QRCodeGenerator.cs
similarity index 100%
rename from PKHeX/Util/QRCoder/QRCodeGenerator.cs
rename to PKHeX.WinForms/Util/QRCoder/QRCodeGenerator.cs
diff --git a/PKHeX/PKHeX.Core.csproj b/PKHeX/PKHeX.Core.csproj
index b63f78184..3ee6bd901 100644
--- a/PKHeX/PKHeX.Core.csproj
+++ b/PKHeX/PKHeX.Core.csproj
@@ -193,13 +193,7 @@
-
-
-
-
-
-
diff --git a/PKHeX/PKM/PKM.cs b/PKHeX/PKM/PKM.cs
index b1f8fef7b..6923f2137 100644
--- a/PKHeX/PKM/PKM.cs
+++ b/PKHeX/PKM/PKM.cs
@@ -294,7 +294,6 @@ public int GenNumber
public int MarkHeart { get { return Markings[3]; } set { var marks = Markings; marks[3] = value; Markings = marks; } }
public int MarkStar { get { return Markings[4]; } set { var marks = Markings; marks[4] = value; Markings = marks; } }
public int MarkDiamond { get { return Markings[5]; } set { var marks = Markings; marks[5] = value; Markings = marks; } }
- public Image Sprite => PKX.getSprite(this);
public string ShowdownText => ShowdownSet.getShowdownText(this);
public string[] QRText => PKX.getQRText(this);
diff --git a/PKHeX/PKM/PKX.cs b/PKHeX/PKM/PKX.cs
index 21e70306d..e81389dc4 100644
--- a/PKHeX/PKM/PKX.cs
+++ b/PKHeX/PKM/PKX.cs
@@ -1,9 +1,7 @@
using System;
using System.Collections.Generic;
-using System.Drawing;
using System.Linq;
using System.Text;
-using PKHeX.Core.Properties;
namespace PKHeX.Core
{
@@ -510,14 +508,9 @@ public static uint getRandomPID(int species, int cg, int origin, int nature, int
}
// Data Requests
- public static Image getBallSprite(int ball)
+ public static string getBallString(int ball) => "_ball" + ball;
+ public static string getSpriteString(int species, int form, int gender, int generation)
{
- return (Image)Resources.ResourceManager.GetObject("_ball" + ball) ?? Resources._ball4; // Poké Ball (default)
- }
- public static Image getSprite(int species, int form, int gender, int item, bool isegg, bool shiny, int generation = -1)
- {
- if (species == 0)
- return (Image)Resources.ResourceManager.GetObject("_0");
if (new[] { 778, 664, 665, 414, 493, 773 }.Contains(species)) // Species who show their default sprite regardless of Form
form = 0;
@@ -530,46 +523,7 @@ public static Image getSprite(int species, int form, int gender, int item, bool
if (species == 25 && form > 0 && generation >= 7) // Pikachu
file += "c"; // Cap
- // Redrawing logic
- Image baseImage = (Image)Resources.ResourceManager.GetObject(file);
- if (baseImage == null)
- {
- if (species < 803)
- {
- baseImage = Util.LayerImage(
- (Image)Resources.ResourceManager.GetObject("_" + species),
- Resources.unknown,
- 0, 0, .5);
- }
- else
- baseImage = Resources.unknown;
- }
- if (isegg)
- {
- // Start with a partially transparent species by layering the species with partial opacity onto a blank image.
- baseImage = Util.LayerImage((Image)Resources.ResourceManager.GetObject("_0"), baseImage, 0, 0, 0.33);
- // Add the egg layer over-top with full opacity.
- baseImage = Util.LayerImage(baseImage, (Image)Resources.ResourceManager.GetObject("egg"), 0, 0, 1);
- }
- if (shiny)
- {
- // Add shiny star to top left of image.
- baseImage = Util.LayerImage(baseImage, Resources.rare_icon, 0, 0, 0.7);
- }
- if (item > 0)
- {
- Image itemimg = (Image)Resources.ResourceManager.GetObject("item_" + item) ?? Resources.helditem;
- if (generation >= 2 && generation <= 4 && 328 <= item && item <= 419) // gen2/3/4 TM
- itemimg = Resources.item_tm;
-
- // Redraw
- baseImage = Util.LayerImage(baseImage, itemimg, 22 + (15 - itemimg.Width) / 2, 15 + (15 - itemimg.Height), 1);
- }
- return baseImage;
- }
- public static Image getSprite(PKM pkm)
- {
- return getSprite(pkm.Species, pkm.AltForm, pkm.Gender, pkm.SpriteItem, pkm.IsEgg, pkm.IsShiny, pkm.Format);
+ return file;
}
// Personal.dat
diff --git a/PKHeX/Saves/Substructures/BoxWallpaper.cs b/PKHeX/Saves/Substructures/BoxWallpaper.cs
index 25a6e5aae..fe4f79b36 100644
--- a/PKHeX/Saves/Substructures/BoxWallpaper.cs
+++ b/PKHeX/Saves/Substructures/BoxWallpaper.cs
@@ -1,10 +1,8 @@
-using System.Drawing;
-
-namespace PKHeX.Core
+namespace PKHeX.Core
{
public static class BoxWallpaper
{
- public static Bitmap getWallpaper(SaveFile SAV, int index)
+ public static string getWallpaper(SaveFile SAV, int index)
{
index++;
string s = "box_wp" + index.ToString("00");
@@ -33,7 +31,7 @@ public static Bitmap getWallpaper(SaveFile SAV, int index)
s += "rs";
break;
}
- return (Bitmap)(Properties.Resources.ResourceManager.GetObject(s) ?? Properties.Resources.box_wp16xy);
+ return s;
}
}
}
diff --git a/PKHeX/Saves/Substructures/QR7.cs b/PKHeX/Saves/Substructures/QR7.cs
index 2cc26d3a1..955d86ca4 100644
--- a/PKHeX/Saves/Substructures/QR7.cs
+++ b/PKHeX/Saves/Substructures/QR7.cs
@@ -1,9 +1,6 @@
using System;
-using System.Drawing;
using System.Linq;
-using QRCoder;
-
namespace PKHeX.Core
{
// anatomy of a QR7:
@@ -17,8 +14,7 @@ namespace PKHeX.Core
// u8 dex_data[0x60];
// u16 crc16
// sizeof(QR7) == 0x1A2
-
-
+
public static class QR7
{
private static bool hasGenderDifferences(int species)
@@ -62,7 +58,7 @@ private static byte[] GetRawQR(int species, int formnum, bool shiny, int gender)
}
return basedata;
}
- private static byte[] GenerateQRData(PK7 pk7, int box = 0, int slot = 0, int num_copies = 1)
+ public static byte[] GenerateQRData(PK7 pk7, int box = 0, int slot = 0, int num_copies = 1)
{
if (box > 31)
box = 31;
@@ -87,22 +83,5 @@ private static byte[] GenerateQRData(PK7 pk7, int box = 0, int slot = 0, int num
BitConverter.GetBytes((ushort) SaveUtil.check16(data.Take(0x1A0).ToArray(), 0)).CopyTo(data, 0x1A0);
return data;
}
-
- public static Bitmap GenerateQRCode7(PK7 pk7, int box = 0, int slot = 0, int num_copies = 1)
- {
- byte[] data = GenerateQRData(pk7, box, slot, num_copies);
- using (var generator = new QRCodeGenerator())
- using (var qr_data = generator.CreateQRCode(data))
- using (var qr_code = new QRCode(qr_data))
- return qr_code.GetGraphic(4);
- }
-
- public static Bitmap GenerateQRCode(byte[] data, int ppm = 4)
- {
- using (var generator = new QRCodeGenerator())
- using (var qr_data = generator.CreateQRCode(data))
- using (var qr_code = new QRCode(qr_data))
- return qr_code.GetGraphic(ppm);
- }
}
}