mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-08-28 06:46:05 -05:00
More c#7 shorthand
outs & pattern matching, other simplifications
This commit is contained in:
@@ -2316,8 +2316,7 @@ private void verifyForm()
|
||||
}
|
||||
if (pkm.Format == 7 && pkm.AltForm != 0 ^ Type == typeof(MysteryGift))
|
||||
{
|
||||
var gift = EncounterMatch as WC7;
|
||||
if (gift != null && gift.Form != pkm.AltForm)
|
||||
if (EncounterMatch is WC7 gift && gift.Form != pkm.AltForm)
|
||||
{
|
||||
AddLine(Severity.Invalid, V307, CheckIdentifier.Form);
|
||||
return;
|
||||
@@ -2507,8 +2506,8 @@ private void verifyMiscG1()
|
||||
if ((EncounterMatch as EncounterStatic)?.Version == GameVersion.Stadium || EncounterMatch is EncounterTradeCatchRate)
|
||||
// Encounters detected by the catch rate, cant be invalid if match this encounters
|
||||
{ AddLine(Severity.Valid, V398, CheckIdentifier.Misc); }
|
||||
if (((pkm.Species == 149) && (catch_rate == PersonalTable.Y[149].CatchRate)) ||
|
||||
(Legal.Species_NotAvailable_CatchRate.Contains(pkm.Species) && (catch_rate == PersonalTable.RB[pkm.Species].CatchRate)))
|
||||
if (pkm.Species == 149 && catch_rate == PersonalTable.Y[149].CatchRate ||
|
||||
Legal.Species_NotAvailable_CatchRate.Contains(pkm.Species) && catch_rate == PersonalTable.RB[pkm.Species].CatchRate)
|
||||
{ AddLine(Severity.Invalid, V396, CheckIdentifier.Misc); }
|
||||
else if (!EvoChainsAllGens[1].Any(e => catch_rate == PersonalTable.RB[e.Species].CatchRate || catch_rate == PersonalTable.Y[e.Species].CatchRate))
|
||||
{ AddLine(Severity.Invalid, pkm.Gen1_NotTradeback? V397: V399, CheckIdentifier.Misc); }
|
||||
|
||||
@@ -2079,8 +2079,7 @@ internal static List<GBEncounterData> getEncounter12(PKM pkm)
|
||||
if (g1 == null || g2 == null)
|
||||
return new List<GBEncounterData> { g1 ?? g2 };
|
||||
|
||||
var t = g1.Encounter as EncounterTrade;
|
||||
if (t != null && getEncounterTrade1Valid(pkm))
|
||||
if (g1.Encounter is EncounterTrade && getEncounterTrade1Valid(pkm))
|
||||
return new List<GBEncounterData> { g1 };
|
||||
|
||||
// Both generations can provide an encounter. Return highest preference
|
||||
@@ -2949,14 +2948,10 @@ internal static string getEncounterTypeName(PKM pkm, object Encounter)
|
||||
var t = Encounter;
|
||||
if (pkm.WasEgg)
|
||||
return "Egg";
|
||||
if (t is IEncounterable)
|
||||
return ((IEncounterable)t).Name;
|
||||
if (t is IEncounterable[])
|
||||
{
|
||||
var arr = (IEncounterable[])t;
|
||||
if (arr.Any())
|
||||
return arr.First().Name;
|
||||
}
|
||||
if (t is IEncounterable e)
|
||||
return e.Name;
|
||||
if (t is IEncounterable[] arr && arr.Length != 0)
|
||||
return arr[0].Name;
|
||||
if (t is int)
|
||||
return "Unknown";
|
||||
return t?.GetType().Name ?? "Unknown";
|
||||
|
||||
@@ -305,8 +305,8 @@ private void loadConfig(out bool BAKprompt, out bool showChangelog, out int lang
|
||||
// Version Check
|
||||
if (Settings.Version.Length > 0) // already run on system
|
||||
{
|
||||
int lastrev; int.TryParse(Settings.Version, out lastrev);
|
||||
int currrev; int.TryParse(Resources.ProgramVersion, out currrev);
|
||||
int.TryParse(Settings.Version, out int lastrev);
|
||||
int.TryParse(Resources.ProgramVersion, out int currrev);
|
||||
|
||||
showChangelog = lastrev < currrev;
|
||||
}
|
||||
@@ -350,11 +350,10 @@ private void mainMenuOpen(object sender, EventArgs e)
|
||||
|
||||
// Detect main
|
||||
string cgse = "";
|
||||
string path;
|
||||
string pathCache = CyberGadgetUtil.GetCacheFolder();
|
||||
if (Directory.Exists(pathCache))
|
||||
cgse = Path.Combine(pathCache);
|
||||
if (!PathUtilWindows.detectSaveFile(out path, cgse))
|
||||
if (!PathUtilWindows.detectSaveFile(out string path, cgse))
|
||||
WinFormsUtil.Error(path);
|
||||
|
||||
if (path != null)
|
||||
@@ -415,11 +414,11 @@ private void mainMenuAbout(object sender, EventArgs e)
|
||||
new About().ShowDialog();
|
||||
}
|
||||
// Sub Menu Options
|
||||
private Form getFirstFormOfType<T>() => Application.OpenForms.Cast<Form>().FirstOrDefault(form => form is T);
|
||||
private void mainMenuBoxReport(object sender, EventArgs e)
|
||||
{
|
||||
var z = Application.OpenForms.Cast<Form>().FirstOrDefault(form => form.GetType() == typeof(frmReport)) as frmReport;
|
||||
if (z != null)
|
||||
{ WinFormsUtil.CenterToForm(z, this); z.BringToFront(); return; }
|
||||
if (getFirstFormOfType<frmReport>() is frmReport z)
|
||||
{ z.CenterToForm(this); z.BringToFront(); return; }
|
||||
|
||||
frmReport ReportForm = new frmReport();
|
||||
ReportForm.Show();
|
||||
@@ -429,17 +428,15 @@ private void mainMenuDatabase(object sender, EventArgs e)
|
||||
{
|
||||
if (ModifierKeys == Keys.Shift)
|
||||
{
|
||||
var c = Application.OpenForms.Cast<Form>().FirstOrDefault(form => form.GetType() == typeof(KChart)) as KChart;
|
||||
if (c != null)
|
||||
{ WinFormsUtil.CenterToForm(c, this); c.BringToFront(); }
|
||||
if (getFirstFormOfType<KChart>() is KChart c)
|
||||
{ c.CenterToForm(this); c.BringToFront(); }
|
||||
else
|
||||
new KChart().Show();
|
||||
return;
|
||||
}
|
||||
|
||||
var z = Application.OpenForms.Cast<Form>().FirstOrDefault(form => form.GetType() == typeof(SAV_Database)) as SAV_Database;
|
||||
if (z != null)
|
||||
{ WinFormsUtil.CenterToForm(z, this); z.BringToFront(); return; }
|
||||
if (getFirstFormOfType<SAV_Database>() is SAV_Database z)
|
||||
{ z.CenterToForm(this); z.BringToFront(); return; }
|
||||
|
||||
if (Directory.Exists(DatabasePath))
|
||||
new SAV_Database(this).Show();
|
||||
@@ -449,12 +446,10 @@ private void mainMenuDatabase(object sender, EventArgs e)
|
||||
}
|
||||
private void mainMenuMysteryDM(object sender, EventArgs e)
|
||||
{
|
||||
var z = Application.OpenForms.Cast<Form>().FirstOrDefault(form => form.GetType() == typeof(SAV_MysteryGiftDB)) as SAV_MysteryGiftDB;
|
||||
if (z != null)
|
||||
{ WinFormsUtil.CenterToForm(z, this); z.BringToFront(); return; }
|
||||
if (getFirstFormOfType<Type>() is SAV_MysteryGiftDB z)
|
||||
{ z.CenterToForm(this); z.BringToFront(); return; }
|
||||
|
||||
new SAV_MysteryGiftDB(this).Show();
|
||||
|
||||
}
|
||||
private void mainMenuUnicode(object sender, EventArgs e)
|
||||
{
|
||||
@@ -530,8 +525,7 @@ private void mainMenuBoxDump(object sender, EventArgs e)
|
||||
}
|
||||
else return;
|
||||
|
||||
string result;
|
||||
SAV.dumpBoxes(path, out result, separate);
|
||||
SAV.dumpBoxes(path, out string result, separate);
|
||||
WinFormsUtil.Alert(result);
|
||||
}
|
||||
private void mainMenuBoxDumpSingle(object sender, EventArgs e)
|
||||
@@ -541,8 +535,7 @@ private void mainMenuBoxDumpSingle(object sender, EventArgs e)
|
||||
if (fbd.ShowDialog() != DialogResult.OK)
|
||||
return;
|
||||
|
||||
string result;
|
||||
SAV.dumpBox(fbd.SelectedPath, out result, CB_BoxSelect.SelectedIndex);
|
||||
SAV.dumpBox(fbd.SelectedPath, out string result, CB_BoxSelect.SelectedIndex);
|
||||
WinFormsUtil.Alert(result);
|
||||
}
|
||||
private void manMenuBatchEditor(object sender, EventArgs e)
|
||||
@@ -1617,8 +1610,7 @@ public void populateFields(PKM pk, bool focus = true)
|
||||
|
||||
if (pkm.Format != SAV.Generation) // past gen format
|
||||
{
|
||||
string c;
|
||||
pkm = PKMConverter.convertToFormat(pkm, SAV.PKMType, out c);
|
||||
pkm = PKMConverter.convertToFormat(pkm, SAV.PKMType, out string _);
|
||||
if (pk.Format != pkm.Format && focus) // converted
|
||||
WinFormsUtil.Alert("Converted File.");
|
||||
}
|
||||
@@ -1790,7 +1782,7 @@ private void clickQR(object sender, EventArgs e)
|
||||
if (!pk.Valid || pk.Species <= 0)
|
||||
{ WinFormsUtil.Alert("Invalid data detected."); return; }
|
||||
|
||||
string c; PKM pkz = PKMConverter.convertToFormat(pk, SAV.PKMType, out c);
|
||||
PKM pkz = PKMConverter.convertToFormat(pk, SAV.PKMType, out string c);
|
||||
if (pkz == null)
|
||||
{ WinFormsUtil.Alert(c); return; }
|
||||
|
||||
@@ -2256,9 +2248,8 @@ private void updateIVs(object sender, EventArgs e)
|
||||
}
|
||||
private void updateEVs(object sender, EventArgs e)
|
||||
{
|
||||
if (sender is MaskedTextBox)
|
||||
if (sender is MaskedTextBox m)
|
||||
{
|
||||
MaskedTextBox m = (MaskedTextBox)sender;
|
||||
if (Util.ToInt32(m.Text) > SAV.MaxEV)
|
||||
{ m.Text = SAV.MaxEV.ToString(); return; } // recursive on text set
|
||||
}
|
||||
@@ -3436,9 +3427,8 @@ private void clickBoxDouble(object sender, MouseEventArgs e)
|
||||
return;
|
||||
if (ModifierKeys != Keys.Shift)
|
||||
{
|
||||
var z = Application.OpenForms.Cast<Form>().FirstOrDefault(form => form.GetType() == typeof(SAV_BoxViewer)) as SAV_BoxViewer;
|
||||
if (z != null)
|
||||
{ WinFormsUtil.CenterToForm(z, this); z.BringToFront(); return; }
|
||||
if (getFirstFormOfType<SAV_BoxViewer>() is SAV_BoxViewer z)
|
||||
{ z.CenterToForm(this); z.BringToFront(); return; }
|
||||
}
|
||||
new SAV_BoxViewer(this).Show();
|
||||
}
|
||||
@@ -4009,11 +3999,10 @@ private void loadBoxesFromDB(string path)
|
||||
if (dr == DialogResult.Cancel)
|
||||
return;
|
||||
|
||||
string result;
|
||||
bool clearAll = dr == DialogResult.Yes;
|
||||
bool? noSetb = getPKMSetOverride();
|
||||
|
||||
SAV.loadBoxes(path, out result, CB_BoxSelect.SelectedIndex, clearAll, noSetb);
|
||||
SAV.loadBoxes(path, out string result, CB_BoxSelect.SelectedIndex, clearAll, noSetb);
|
||||
setPKXBoxes();
|
||||
WinFormsUtil.Alert(result);
|
||||
}
|
||||
@@ -4255,12 +4244,11 @@ private void B_JPEG_Click(object sender, EventArgs e)
|
||||
// Save Folder Related
|
||||
private void clickSaveFileName(object sender, EventArgs e)
|
||||
{
|
||||
string path;
|
||||
string cgse = "";
|
||||
string pathCache = CyberGadgetUtil.GetCacheFolder();
|
||||
if (Directory.Exists(pathCache))
|
||||
cgse = Path.Combine(pathCache);
|
||||
if (!PathUtilWindows.detectSaveFile(out path, cgse))
|
||||
if (!PathUtilWindows.detectSaveFile(out string path, cgse))
|
||||
WinFormsUtil.Error(path);
|
||||
if (path == null || !File.Exists(path)) return;
|
||||
if (WinFormsUtil.Prompt(MessageBoxButtons.YesNo, "Open save file from the following location?", path) == DialogResult.Yes)
|
||||
@@ -4424,9 +4412,8 @@ private void pbBoxSlot_DragDrop(object sender, DragEventArgs e)
|
||||
byte[] data = File.ReadAllBytes(file);
|
||||
MysteryGift mg = MysteryGift.getMysteryGift(data, fi.Extension);
|
||||
PKM temp = mg?.convertToPKM(SAV) ?? PKMConverter.getPKMfromBytes(data, prefer: fi.Extension.Length > 0 ? (fi.Extension.Last() - 0x30)&7 : SAV.Generation);
|
||||
string c;
|
||||
|
||||
PKM pk = PKMConverter.convertToFormat(temp, SAV.PKMType, out c);
|
||||
PKM pk = PKMConverter.convertToFormat(temp, SAV.PKMType, out string c);
|
||||
if (pk == null)
|
||||
{ WinFormsUtil.Error(c); Console.WriteLine(c); return; }
|
||||
|
||||
|
||||
@@ -120,7 +120,7 @@ public SAV_Database(Main f1)
|
||||
private readonly string Counter;
|
||||
private readonly string Viewed;
|
||||
private const int MAXFORMAT = 7;
|
||||
private readonly Func<PKM, string> hash = pk =>
|
||||
private static string hash(PKM pk)
|
||||
{
|
||||
switch (pk.Format)
|
||||
{
|
||||
@@ -128,7 +128,7 @@ public SAV_Database(Main f1)
|
||||
case 2: return pk.Species.ToString("000") + ((PK2)pk).DV16.ToString("X4");
|
||||
default: return pk.Species.ToString("000") + pk.PID.ToString("X8") + string.Join(" ", pk.IVs) + pk.AltForm.ToString("00");
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// Important Events
|
||||
private void clickView(object sender, EventArgs e)
|
||||
@@ -517,7 +517,7 @@ private void B_Search_Click(object sender, EventArgs e)
|
||||
}
|
||||
|
||||
if (Menu_SearchClones.Checked)
|
||||
res = res.GroupBy(pk => hash(pk)).Where(group => group.Count() > 1).SelectMany(z => z);
|
||||
res = res.GroupBy(hash).Where(group => group.Count() > 1).SelectMany(z => z);
|
||||
|
||||
var results = res.ToArray();
|
||||
if (results.Length == 0)
|
||||
@@ -637,7 +637,7 @@ private void Menu_DeleteClones_Click(object sender, EventArgs e)
|
||||
var deleted = 0;
|
||||
var db = RawDB.Where(pk => pk.Identifier.StartsWith(DatabasePath + Path.DirectorySeparatorChar, StringComparison.Ordinal))
|
||||
.OrderByDescending(file => new FileInfo(file.Identifier).LastWriteTime);
|
||||
var clones = db.GroupBy(pk => hash(pk)).Where(group => group.Count() > 1).SelectMany(z => z.Skip(1));
|
||||
var clones = db.GroupBy(hash).Where(group => group.Count() > 1).SelectMany(z => z.Skip(1));
|
||||
foreach (var pk in clones)
|
||||
{
|
||||
try { File.Delete(pk.Identifier); ++deleted; }
|
||||
|
||||
@@ -197,13 +197,14 @@ public void SetImage(Bitmap img)
|
||||
Tiles = tilelist.ToArray();
|
||||
}
|
||||
|
||||
private class Tile
|
||||
private class Tile : IDisposable
|
||||
{
|
||||
public const int SIZE_TILE = 0x20;
|
||||
private const int TileWidth = 8;
|
||||
private const int TileHeight = 8;
|
||||
public readonly int[] ColorChoices;
|
||||
private Bitmap img;
|
||||
public void Dispose() => img.Dispose();
|
||||
|
||||
public Tile(byte[] data = null)
|
||||
{
|
||||
@@ -297,6 +298,7 @@ public TileMap(byte[] data)
|
||||
}
|
||||
public byte[] Write()
|
||||
{
|
||||
byte[] result;
|
||||
using (MemoryStream ms = new MemoryStream())
|
||||
using (BinaryWriter bw = new BinaryWriter(ms))
|
||||
{
|
||||
@@ -305,8 +307,9 @@ public byte[] Write()
|
||||
bw.Write((byte)TileChoices[i]);
|
||||
bw.Write((byte)Rotations[i]);
|
||||
}
|
||||
return ms.ToArray();
|
||||
result = ms.ToArray();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -111,7 +111,7 @@ private static List<ContextMenuStrip> FindContextMenuStrips(IEnumerable<Control>
|
||||
}
|
||||
return cs;
|
||||
}
|
||||
internal static void CenterToForm(Control child, Control parent)
|
||||
internal static void CenterToForm(this Control child, Control parent)
|
||||
{
|
||||
int x = parent.Location.X + (parent.Width - child.Width) / 2;
|
||||
int y = parent.Location.Y + (parent.Height - child.Height) / 2;
|
||||
|
||||
@@ -246,14 +246,14 @@ public void PIDIVMatchingTest()
|
||||
};
|
||||
var a_pkRS = MethodFinder.Analyze(pkRS);
|
||||
Assert.AreEqual(PIDType.BACD_R_S, a_pkRS?.Type, "Unable to match PID to BACD-R shiny spread");
|
||||
Assert.AreEqual(true, 0x0020 == a_pkRS?.OriginSeed, "Unable to match PID to BACD-R shiny spread origin seed");
|
||||
Assert.IsTrue(0x0020 == a_pkRS?.OriginSeed, "Unable to match PID to BACD-R shiny spread origin seed");
|
||||
|
||||
var pkPS0 = new PK3 {PID = 0x7B2D9DA7}; // Zubat (Cave)
|
||||
Assert.AreEqual(true, MethodFinder.getPokeSpotSeeds(pkPS0, 0).Any(), "PokeSpot encounter info mismatch (Common)");
|
||||
Assert.IsTrue(MethodFinder.getPokeSpotSeeds(pkPS0, 0).Any(), "PokeSpot encounter info mismatch (Common)");
|
||||
var pkPS1 = new PK3 {PID = 0x3EE9AF66}; // Gligar (Rock)
|
||||
Assert.AreEqual(true, MethodFinder.getPokeSpotSeeds(pkPS1, 1).Any(), "PokeSpot encounter info mismatch (Uncommon)");
|
||||
Assert.IsTrue(MethodFinder.getPokeSpotSeeds(pkPS1, 1).Any(), "PokeSpot encounter info mismatch (Uncommon)");
|
||||
var pkPS2 = new PK3 {PID = 0x9B667F3C}; // Surskit (Oasis)
|
||||
Assert.AreEqual(true, MethodFinder.getPokeSpotSeeds(pkPS2, 2).Any(), "PokeSpot encounter info mismatch (Rare)");
|
||||
Assert.IsTrue(MethodFinder.getPokeSpotSeeds(pkPS2, 2).Any(), "PokeSpot encounter info mismatch (Rare)");
|
||||
|
||||
var pk1U = new PK3
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user