Refactoring

discards, Array.Find over FirstOrDefault
This commit is contained in:
Kurt 2018-05-12 08:41:23 -07:00
parent 5a3c8f4147
commit e2f11edc43
16 changed files with 79 additions and 86 deletions

View file

@ -196,8 +196,8 @@ namespace PKHeX.Core
}
// Korean Gen4 games can not trade with other Gen4 languages, but can use Pal Park with any Gen3 game/language.
if (pkm.Format == 4 && pkm.Gen4 &&
(pkm.Language == (int)LanguageID.Korean) ^ (Legal.SavegameLanguage == (int)LanguageID.Korean))
if (pkm.Format == 4 && pkm.Gen4
&& (pkm.Language == (int)LanguageID.Korean) ^ (Legal.SavegameLanguage == (int)LanguageID.Korean))
{
bool kor = pkm.Language == (int) LanguageID.Korean;
var currentpkm = kor ? V611 : V612;
@ -616,7 +616,7 @@ namespace PKHeX.Core
if (IVs != null)
{
var pkIVs = pkm.IVs;
var ivflag = IVs.FirstOrDefault(iv => (byte)(iv - 0xFC) < 3);
var ivflag = Array.Find(IVs, iv => (byte)(iv - 0xFC) < 3);
if (ivflag == 0) // Random IVs
{
bool valid = true;
@ -1690,7 +1690,7 @@ namespace PKHeX.Core
untraded &= gift.IsEgg;
}
if (EncounterMatch is EncounterLink link && link.OT == false)
if (EncounterMatch is EncounterLink link && !link.OT)
untraded = false;
else if (Info.Generation < 6)
untraded = false;
@ -2497,6 +2497,6 @@ namespace PKHeX.Core
}
public static string[] MoveStrings { internal get; set; } = Util.GetMovesList("en");
public static string[] SpeciesStrings { internal get; set; } = Util.GetSpeciesList("en");
internal static IEnumerable<string> getMoveNames(IEnumerable<int> moves) => moves.Select(m => m >= MoveStrings.Length ? V190 : MoveStrings[m]);
internal static IEnumerable<string> GetMoveNames(IEnumerable<int> moves) => moves.Select(m => m >= MoveStrings.Length ? V190 : MoveStrings[m]);
}
}

View file

@ -622,7 +622,7 @@ namespace PKHeX.Core
private static int GetRequiredMoveSlotsRegular(PKM pk, int[] moves, List<int>[] learn, int[] initialmoves)
{
int species = pk.Species;
int catch_rate = (pk as PK1).Catch_Rate;
int catch_rate = ((PK1) pk).Catch_Rate;
// Caterpie and Metapod evolution lines have different count of possible slots available if captured in different evolutionary phases
// Example: a level 7 caterpie evolved into metapod will have 3 learned moves, a captured metapod will have only 1 move
if ((species == 011 || species == 012) && catch_rate == 120)
@ -1070,7 +1070,7 @@ namespace PKHeX.Core
if (pkm.IsEgg)
return false;
return GetValidPreEvolutions(pkm).Count() > 1;
return GetValidPreEvolutions(pkm).Count > 1;
}
private static bool IsEvolvedFormChange(PKM pkm)
{
@ -1129,7 +1129,7 @@ namespace PKHeX.Core
// Check also if the current encounter include the evolve move as an special move
// That means the pokemon have the move from the encounter level
if (info.EncounterMatch is IMoveset s && s.Moves != null && s.Moves.Any(m => moves.Contains(m)))
if (info.EncounterMatch is IMoveset s && s.Moves?.Any(m => moves.Contains(m)) == true)
LearnLevel = Math.Min(LearnLevel, info.EncounterMatch.LevelMin);
// If the encounter is a player hatched egg check if the move could be an egg move or inherited level up move
@ -1269,9 +1269,9 @@ namespace PKHeX.Core
var table = EvolutionTree.GetEvolutionTree(tree);
int maxSpeciesOrigin = generation != -1 ? GetMaxSpeciesOrigin(generation) : -1;
var evos = table.GetValidPreEvolutions(pkm, maxLevel: 100, maxSpeciesOrigin: maxSpeciesOrigin, skipChecks: true);
return GetBaseSpecies(pkm, evos, skipOption, generation);
return GetBaseSpecies(pkm, evos, skipOption);
}
internal static int GetBaseSpecies(PKM pkm, IList<DexLevel> evos, int skipOption = 0, int generation = -1)
internal static int GetBaseSpecies(PKM pkm, IList<DexLevel> evos, int skipOption = 0)
{
if (pkm.Species == 292)
return 290;
@ -1687,8 +1687,8 @@ namespace PKHeX.Core
}
if (Machine)
{
r.AddRange(TMHM_RBY.Where((t, m) => pi_rb.TMHM[m]));
r.AddRange(TMHM_RBY.Where((t, m) => pi_y.TMHM[m]));
r.AddRange(TMHM_RBY.Where((_, m) => pi_rb.TMHM[m]));
r.AddRange(TMHM_RBY.Where((_, m) => pi_y.TMHM[m]));
}
if (moveTutor)
r.AddRange(GetTutorMoves(pkm, species, form, specialTutors, Generation));
@ -1708,7 +1708,7 @@ namespace PKHeX.Core
if (Machine)
{
var pi_c = (PersonalInfoG2)PersonalTable.C[index];
r.AddRange(TMHM_GSC.Where((t, m) => pi_c.TMHM[m]));
r.AddRange(TMHM_GSC.Where((_, m) => pi_c.TMHM[m]));
}
if (moveTutor)
r.AddRange(GetTutorMoves(pkm, species, form, specialTutors, Generation));
@ -1745,9 +1745,9 @@ namespace PKHeX.Core
if (Machine)
{
var pi_c = PersonalTable.E[index];
r.AddRange(TM_3.Where((t, m) => pi_c.TMHM[m]));
r.AddRange(TM_3.Where((_, m) => pi_c.TMHM[m]));
if (!RemoveTransferHM || pkm.Format == 3) // HM moves must be removed for 3->4, only give if current format.
r.AddRange(HM_3.Where((t, m) => pi_c.TMHM[m+50]));
r.AddRange(HM_3.Where((_, m) => pi_c.TMHM[m+50]));
}
if (moveTutor)
r.AddRange(GetTutorMoves(pkm, species, form, specialTutors, Generation));
@ -1771,7 +1771,7 @@ namespace PKHeX.Core
{
var pi_hgss = PersonalTable.HGSS[index];
var pi_dppt = PersonalTable.Pt[index];
r.AddRange(TM_4.Where((t, m) => pi_hgss.TMHM[m]));
r.AddRange(TM_4.Where((_, m) => pi_hgss.TMHM[m]));
if (RemoveTransferHM && pkm.Format > 4)
{
// The combination of both these moves is illegal, it should be checked that the pokemon only learn one
@ -1783,8 +1783,8 @@ namespace PKHeX.Core
}
else
{
r.AddRange(HM_DPPt.Where((t, m) => pi_dppt.TMHM[m + 92]));
r.AddRange(HM_HGSS.Where((t, m) => pi_hgss.TMHM[m + 92]));
r.AddRange(HM_DPPt.Where((_, m) => pi_dppt.TMHM[m + 92]));
r.AddRange(HM_HGSS.Where((_, m) => pi_hgss.TMHM[m + 92]));
}
}
if (moveTutor)
@ -1809,7 +1809,7 @@ namespace PKHeX.Core
if (Machine)
{
var pi_c = PersonalTable.B2W2[index2];
r.AddRange(TMHM_BW.Where((t, m) => pi_c.TMHM[m]));
r.AddRange(TMHM_BW.Where((_, m) => pi_c.TMHM[m]));
}
if (moveTutor)
r.AddRange(GetTutorMoves(pkm, species, form, specialTutors, Generation));
@ -1832,7 +1832,7 @@ namespace PKHeX.Core
if (Machine)
{
PersonalInfo pi = PersonalTable.XY[index];
r.AddRange(TMHM_XY.Where((t, m) => pi.TMHM[m]));
r.AddRange(TMHM_XY.Where((_, m) => pi.TMHM[m]));
}
if (ver == GameVersion.Any) // Fall Through
@ -1853,7 +1853,7 @@ namespace PKHeX.Core
if (Machine)
{
PersonalInfo pi = PersonalTable.AO[index];
r.AddRange(TMHM_AO.Where((t, m) => pi.TMHM[m]));
r.AddRange(TMHM_AO.Where((_, m) => pi.TMHM[m]));
}
break;
}
@ -1877,7 +1877,7 @@ namespace PKHeX.Core
if (Machine)
{
PersonalInfo pi = PersonalTable.SM.GetFormeEntry(species, form);
r.AddRange(TMHM_SM.Where((t, m) => pi.TMHM[m]));
r.AddRange(TMHM_SM.Where((_, m) => pi.TMHM[m]));
}
break;
}
@ -1895,7 +1895,7 @@ namespace PKHeX.Core
if (Machine)
{
PersonalInfo pi = PersonalTable.USUM.GetFormeEntry(species, form);
r.AddRange(TMHM_SM.Where((t, m) => pi.TMHM[m]));
r.AddRange(TMHM_SM.Where((_, m) => pi.TMHM[m]));
}
if (ver == GameVersion.Any) // Fall Through
goto case GameVersion.SM;
@ -1980,24 +1980,24 @@ namespace PKHeX.Core
return moves;
var pi_rb = (PersonalInfoG1)PersonalTable.RB[index];
var pi_y = (PersonalInfoG1)PersonalTable.Y[index];
moves.AddRange(TMHM_RBY.Where((t, m) => pi_rb.TMHM[m]));
moves.AddRange(TMHM_RBY.Where((t, m) => pi_y.TMHM[m]));
moves.AddRange(TMHM_RBY.Where((_, m) => pi_rb.TMHM[m]));
moves.AddRange(TMHM_RBY.Where((_, m) => pi_y.TMHM[m]));
break;
case 2:
index = PersonalTable.C.GetFormeIndex(species, 0);
if (index == 0)
return moves;
var pi_c = (PersonalInfoG2)PersonalTable.C[index];
moves.AddRange(TMHM_GSC.Where((t, m) => pi_c.TMHM[m]));
moves.AddRange(TMHM_GSC.Where((_, m) => pi_c.TMHM[m]));
if (Version == GameVersion.Any)
goto case 1; // rby
break;
case 3:
index = PersonalTable.E.GetFormeIndex(species, 0);
var pi_e = PersonalTable.E[index];
moves.AddRange(TM_3.Where((t, m) => pi_e.TMHM[m]));
moves.AddRange(TM_3.Where((_, m) => pi_e.TMHM[m]));
if (!RemoveTransferHM || pkm.Format == 3) // HM moves must be removed for 3->4, only give if current format.
moves.AddRange(HM_3.Where((t, m) => pi_e.TMHM[m + 50]));
moves.AddRange(HM_3.Where((_, m) => pi_e.TMHM[m + 50]));
break;
case 4:
index = PersonalTable.HGSS.GetFormeIndex(species, 0);
@ -2005,7 +2005,7 @@ namespace PKHeX.Core
return moves;
var pi_hgss = PersonalTable.HGSS[index];
var pi_dppt = PersonalTable.Pt[index];
moves.AddRange(TM_4.Where((t, m) => pi_hgss.TMHM[m]));
moves.AddRange(TM_4.Where((_, m) => pi_hgss.TMHM[m]));
// The combination of both these moves is illegal, it should be checked that the pokemon only learn one
// except if it can learn any of these moves in gen 5 or later
if (Version == GameVersion.Any || Version == GameVersion.DP || Version == GameVersion.D || Version == GameVersion.P || Version == GameVersion.Pt)
@ -2017,7 +2017,7 @@ namespace PKHeX.Core
}
else
{
moves.AddRange(HM_DPPt.Where((t, m) => pi_dppt.TMHM[m + 92]));
moves.AddRange(HM_DPPt.Where((_, m) => pi_dppt.TMHM[m + 92]));
}
}
if (Version == GameVersion.Any || Version == GameVersion.HGSS || Version == GameVersion.HG || Version == GameVersion.SS)
@ -2029,7 +2029,7 @@ namespace PKHeX.Core
}
else
{
moves.AddRange(HM_HGSS.Where((t, m) => pi_dppt.TMHM[m + 92]));
moves.AddRange(HM_HGSS.Where((_, m) => pi_dppt.TMHM[m + 92]));
}
}
break;
@ -2039,7 +2039,7 @@ namespace PKHeX.Core
return moves;
var pi_bw = PersonalTable.B2W2[index];
moves.AddRange(TMHM_BW.Where((t, m) => pi_bw.TMHM[m]));
moves.AddRange(TMHM_BW.Where((_, m) => pi_bw.TMHM[m]));
break;
case 6:
switch (Version)
@ -2054,7 +2054,7 @@ namespace PKHeX.Core
return moves;
PersonalInfo pi_xy = PersonalTable.XY[index];
moves.AddRange(TMHM_XY.Where((t, m) => pi_xy.TMHM[m]));
moves.AddRange(TMHM_XY.Where((_, m) => pi_xy.TMHM[m]));
if (Version == GameVersion.Any) // Fall Through
goto case GameVersion.ORAS;
@ -2069,7 +2069,7 @@ namespace PKHeX.Core
return moves;
PersonalInfo pi_ao = PersonalTable.AO[index];
moves.AddRange(TMHM_AO.Where((t, m) => pi_ao.TMHM[m]));
moves.AddRange(TMHM_AO.Where((_, m) => pi_ao.TMHM[m]));
break;
}
}
@ -2080,7 +2080,7 @@ namespace PKHeX.Core
return moves;
PersonalInfo pi_sm = PersonalTable.USUM[index];
moves.AddRange(TMHM_SM.Where((t, m) => pi_sm.TMHM[m]));
moves.AddRange(TMHM_SM.Where((_, m) => pi_sm.TMHM[m]));
break;
}
return moves.Distinct();
@ -2099,18 +2099,18 @@ namespace PKHeX.Core
if (!AllowGen2Crystal(pkm))
break;
info = PersonalTable.C[species];
moves.AddRange(Tutors_GSC.Where((t, i) => info.TMHM[57 + i]));
moves.AddRange(Tutors_GSC.Where((_, i) => info.TMHM[57 + i]));
goto case 1;
case 3:
// E Tutors (Free)
// E Tutors (BP)
info = PersonalTable.E[species];
moves.AddRange(Tutor_E.Where((t, i) => info.TypeTutors[i]));
moves.AddRange(Tutor_E.Where((_, i) => info.TypeTutors[i]));
// FRLG Tutors
// Only special tutor moves, normal tutor moves are already included in Emerald data
moves.AddRange(SpecialTutors_FRLG.Where((t, i) => SpecialTutors_Compatibility_FRLG[i].Any(e => e == species)));
moves.AddRange(SpecialTutors_FRLG.Where((_, i) => SpecialTutors_Compatibility_FRLG[i].Any(e => e == species)));
// XD
moves.AddRange(SpecialTutors_XD_Exclusive.Where((t, i) => SpecialTutors_Compatibility_XD_Exclusive[i].Any(e => e == species)));
moves.AddRange(SpecialTutors_XD_Exclusive.Where((_, i) => SpecialTutors_Compatibility_XD_Exclusive[i].Any(e => e == species)));
// XD (Mew)
if (species == 151)
moves.AddRange(Tutor_3Mew);
@ -2118,24 +2118,24 @@ namespace PKHeX.Core
break;
case 4:
info = PersonalTable.HGSS.GetFormeEntry(species, form);
moves.AddRange(Tutors_4.Where((t, i) => info.TypeTutors[i]));
moves.AddRange(SpecialTutors_4.Where((t, i) => SpecialTutors_Compatibility_4[i].Any(e => e == species)));
moves.AddRange(Tutors_4.Where((_, i) => info.TypeTutors[i]));
moves.AddRange(SpecialTutors_4.Where((_, i) => SpecialTutors_Compatibility_4[i].Any(e => e == species)));
break;
case 5:
info = PersonalTable.B2W2[species];
moves.AddRange(TypeTutor6.Where((t, i) => info.TypeTutors[i]));
moves.AddRange(TypeTutor6.Where((_, i) => info.TypeTutors[i]));
if (pkm.InhabitedGeneration(5) && specialTutors)
moves.AddRange(GetTutors(PersonalTable.B2W2, Tutors_B2W2));
break;
case 6:
info = PersonalTable.AO[species];
moves.AddRange(TypeTutor6.Where((t, i) => info.TypeTutors[i]));
moves.AddRange(TypeTutor6.Where((_, i) => info.TypeTutors[i]));
if (pkm.InhabitedGeneration(6) && specialTutors && (pkm.AO || !pkm.IsUntraded))
moves.AddRange(GetTutors(PersonalTable.AO, Tutors_AO));
break;
case 7:
info = PersonalTable.USUM.GetFormeEntry(species, form);
moves.AddRange(TypeTutor6.Where((t, i) => info.TypeTutors[i]));
moves.AddRange(TypeTutor6.Where((_, i) => info.TypeTutors[i]));
if (pkm.InhabitedGeneration(7) && specialTutors && (pkm.USUM || !pkm.IsUntraded))
moves.AddRange(GetTutors(PersonalTable.USUM, Tutors_USUM));
break;
@ -2197,7 +2197,7 @@ namespace PKHeX.Core
internal static TreeEncounterAvailable GetGSCHeadbuttAvailability(EncounterSlot encounter, int TID)
{
var Area = HeadbuttTreesC.FirstOrDefault(a => a.Location == encounter.Location);
var Area = Array.Find(HeadbuttTreesC, a => a.Location == encounter.Location);
if (Area == null) // Failsafe, every area with headbutt encounters has a tree area
return TreeEncounterAvailable.Impossible;

View file

@ -280,10 +280,10 @@ namespace PKHeX.Core
switch (slot.Generation)
{
case 2:
if (slot.Type.HasFlag(SlotType.Safari)) // Safari Zone is unavailable in Gen 2.
if ((slot.Type & SlotType.Safari) != 0) // Safari Zone is unavailable in Gen 2.
return true;
if (slot.Type.HasFlag(SlotType.Headbutt))
if ((slot.Type & SlotType.Headbutt) != 0)
if (Legal.GetGSCHeadbuttAvailability(slot, pk.TID) != TreeEncounterAvailable.ValidTree) // Unreachable Headbutt Trees.
return true;
break;

View file

@ -705,7 +705,7 @@ namespace PKHeX.Core
res[z] = new CheckMoveResult(MoveSource.Initial, gen, Severity.Invalid, V180, CheckIdentifier.Move);
// provide the list of suggested base moves for the last required slot
em = string.Join(", ", getMoveNames(infoset.Base));
em = string.Join(", ", GetMoveNames(infoset.Base));
break;
}
@ -726,9 +726,9 @@ namespace PKHeX.Core
// provide the list of suggested base moves and species moves for the last required slot
if (string.IsNullOrEmpty(em))
em = string.Join(", ", getMoveNames(infoset.Base));
em = string.Join(", ", GetMoveNames(infoset.Base));
em += ", ";
em += string.Join(", ", getMoveNames(infoset.Special));
em += string.Join(", ", GetMoveNames(infoset.Special));
break;
}

View file

@ -136,7 +136,7 @@ namespace PKHeX.Core
res[z] = new CheckResult(Severity.Invalid, V180, CheckIdentifier.RelearnMove);
// provide the list of suggested base moves for the last required slot
string em = string.Join(", ", getMoveNames(baseMoves));
string em = string.Join(", ", GetMoveNames(baseMoves));
res[required - 1].Comment += string.Format(Environment.NewLine + V181, em);
}
private static bool FlagInvalidInheritedMoves(CheckResult[] res, int required, EncounterEgg e, IReadOnlyList<int> RelearnMoves, IReadOnlyList<int> inheritMoves, IReadOnlyList<int> splitMoves)

View file

@ -8,7 +8,6 @@ namespace PKHeX.Core
/// </summary>
public static class LegalityCheckStrings
{
#region General Strings
/// <summary>Default text for indicating validity.</summary>

View file

@ -80,10 +80,10 @@ namespace PKHeX.Core
// Since the prior(next) lock is generated 7+2*n frames after, the worst case break is 7 frames after the PID.
// Continue reversing until a sequential generation case is found.
// Check
// Check
int start = ctr;
do
while (true)
{
int p7 = ctr - 7;
if (p7 > start)
@ -94,10 +94,10 @@ namespace PKHeX.Core
}
uint pid = cache[ctr + 1] << 16 | cache[ctr];
if (MatchesLock(l, pid, PKX.GetGenderFromPID(l.Species, pid)))
yield return new SeedFrame { FrameID = ctr + 6, PID = pid};
yield return new SeedFrame { FrameID = ctr + 6, PID = pid };
ctr += 2;
} while (true);
}
}
private static bool VerifyNPC(FrameCache cache, int ctr, IEnumerable<uint> PIDs, bool XD, out int originFrame)
@ -143,11 +143,10 @@ namespace PKHeX.Core
var rng = RNG.XDRNG;
var SIDf = rng.Reverse(seed, rev);
int ctr = 0;
while (true)
uint temp = 0;
while (SIDf >> 16 != SID || (temp = rng.Prev(SIDf)) >> 16 != TID)
{
if (SIDf >> 16 == SID && rng.Prev(SIDf) >> 16 == TID)
break;
SIDf = rng.Prev(SIDf);
SIDf = temp;
if (ctr > 32) // arbitrary
return false;
ctr++;

View file

@ -156,7 +156,6 @@ namespace PKHeX.Core
return (int)LanguageID.English;
}
#region Stored Attributes
public int SpeciesID1 { get => Data[0]; set => Data[0] = (byte)value; } // raw access
public override int Species

View file

@ -369,7 +369,7 @@ namespace PKHeX.Core
private string ParseLineMove(string line)
{
string moveString = line.Substring(line[1] == ' ' ? 2 : 1);
if (!moveString.Contains("Hidden Power"))
if (!moveString.Contains(moves[237])) // Hidden Power
return moveString;
// Defined Hidden Power
@ -389,8 +389,7 @@ namespace PKHeX.Core
else
InvalidLines.Add($"Invalid Hidden Power Type: {type}");
}
moveString = "Hidden Power";
return moveString;
return moves[237];
}
private void ParseLineEVs(string line)
{
@ -498,7 +497,7 @@ namespace PKHeX.Core
return "Dawn";
default:
if (Legal.Totem_USUM.Contains(spec) && form != null && form.EndsWith("Totem"))
if (Legal.Totem_USUM.Contains(spec) && form?.EndsWith("Totem") == true)
return "Large";
return form;
}

View file

@ -279,7 +279,7 @@ namespace PKHeX.Core
set
{
int len = Japanese ? 5 : OTLength;
SetString(value, len, PadWith: 0xFF, PadToSize: len).CopyTo(Data, BlockOfs[0]);
SetString(value, len, PadToSize: len, PadWith: 0xFF).CopyTo(Data, BlockOfs[0]);
}
}
public override int Gender
@ -476,7 +476,6 @@ namespace PKHeX.Core
if (GameVersion.FRLG != Version)
ofs += 0x200;
return Data[BlockOfs[1] + ofs];
}
protected set
{

View file

@ -143,7 +143,7 @@ namespace PKHeX.Core
/* 05 */ EventConst = Blocks[05].Offset; // 0x01C00 // [E00] EventWork
/* 06 */ PokeDex = Blocks[06].Offset; // 0x02A00 // [F78] ZukanData
/* 07 */ GTS = Blocks[07].Offset; // 0x03A00 // [228] GtsData
/* 08 */ Fused = Blocks[08].Offset; // 0x03E00 // [104] UnionPokemon
/* 08 */ Fused = Blocks[08].Offset; // 0x03E00 // [104] UnionPokemon
/* 09 */ Misc = Blocks[09].Offset; // 0x04000 // [200] Misc
/* 10 */ Trainer2 = Blocks[10].Offset; // 0x04200 // [020] FieldMenu
/* 11 */ ConfigSave = Blocks[11].Offset; // 0x04400 // [004] ConfigSave
@ -1455,7 +1455,7 @@ namespace PKHeX.Core
set => Data[TrainerCard + 0x78] = (byte)((Data[TrainerCard + 0x78] & ~2) | (value ? 2 : 0)); // in battle
}
public override string GetString(int Offset, int Count) => StringConverter.GetString7(Data, Offset, Count);
public override string GetString(int Offset, int Length) => StringConverter.GetString7(Data, Offset, Length);
public override byte[] SetString(string value, int maxLength, int PadToSize = 0, ushort PadWith = 0)
{
if (PadToSize == 0)

View file

@ -433,8 +433,8 @@ namespace PKHeX.Core
int len = BoxSlotCount*SIZE_STORED;
byte[] boxdata = GetData(GetBoxOffset(0), len*BoxCount); // get all boxes
string[] boxNames = new int[BoxCount].Select((x, i) => GetBoxName(i)).ToArray();
int[] boxWallpapers = new int[BoxCount].Select((x, i) => GetBoxWallpaper(i)).ToArray();
string[] boxNames = new int[BoxCount].Select((_, i) => GetBoxName(i)).ToArray();
int[] boxWallpapers = new int[BoxCount].Select((_, i) => GetBoxWallpaper(i)).ToArray();
min /= BoxSlotCount;
max /= BoxSlotCount;
@ -504,12 +504,12 @@ namespace PKHeX.Core
return box;
return Data[offset];
}
public virtual void SetBoxWallpaper(int box, int val)
public virtual void SetBoxWallpaper(int box, int value)
{
int offset = GetBoxWallpaperOffset(box);
if (offset < 0 || box > BoxCount)
return;
Data[offset] = (byte)val;
Data[offset] = (byte)value;
}
public virtual PKM GetPartySlot(int offset)
@ -579,7 +579,7 @@ namespace PKHeX.Core
SetData(GetData(slotFrom, SIZE_PARTY), slotTo);
}
SetStoredSlot(BlankPKM, GetPartyOffset(5), false, false);
PartyCount -= 1;
PartyCount--;
}
public virtual bool IsSlotLocked(int box, int slot) => false;
public bool IsAnySlotLockedInBox(int BoxStart, int BoxEnd)

View file

@ -124,7 +124,7 @@ namespace PKHeX.WinForms.Controls
if (!src.Editable || SAV.IsSlotLocked(src.Box, src.Slot))
return;
bool encrypt = Control.ModifierKeys == Keys.Control;
HandleMovePKM(pb, src.Slot, src.Box, encrypt);
HandleMovePKM(pb, encrypt);
}
public void DragDrop(object sender, DragEventArgs e)
{
@ -174,7 +174,7 @@ namespace PKHeX.WinForms.Controls
private static ISlotViewer<T> GetViewParent<T>(T pb) where T : Control
=> WinFormsUtil.FindFirstControlOfType<ISlotViewer<T>>(pb);
public void HandleMovePKM(PictureBox pb, int slot, int box, bool encrypt)
public void HandleMovePKM(PictureBox pb, bool encrypt)
{
// Create a temporary PKM file to perform a drag drop operation.
@ -186,7 +186,7 @@ namespace PKHeX.WinForms.Controls
DragInfo.Source.OriginalData = SAV.GetData(DragInfo.Source.Offset, SAV.SIZE_STORED);
// Make a new file name based off the PID
string newfile = CreateDragDropPKM(pb, box, encrypt, out bool external);
string newfile = CreateDragDropPKM(pb, encrypt, out bool external);
DragInfo.Reset();
SetCursor(SE.GetDefaultCursor, pb);
@ -199,11 +199,11 @@ namespace PKHeX.WinForms.Controls
}
private async void DeleteAsync(string path, int delay)
{
await Task.Delay(delay);
await Task.Delay(delay).ConfigureAwait(false);
if (File.Exists(path) && DragInfo.CurrentPath == null)
File.Delete(path);
}
private string CreateDragDropPKM(PictureBox pb, int box, bool encrypt, out bool external)
private string CreateDragDropPKM(PictureBox pb, bool encrypt, out bool external)
{
byte[] dragdata = SAV.DecryptPKM(DragInfo.Source.OriginalData);
Array.Resize(ref dragdata, SAV.SIZE_STORED);
@ -487,6 +487,7 @@ namespace PKHeX.WinForms.Controls
OriginalBackground?.Dispose();
CurrentBackground?.Dispose();
ColorizedColor?.Dispose();
Sounds?.Dispose();
}
}
}

View file

@ -30,14 +30,14 @@ namespace PKHeX.WinForms
const int stretch = 50;
Height += stretch;
if (pkm != null && pkm.Format == 7)
if (pkm?.Format == 7)
Height += 40;
this.qr = qr;
this.icon = icon;
Lines = lines;
if (pkm != null && pkm.Format == 7)
if (pkm?.Format == 7)
UpdateBoxSlotCopies(null, null);
else
RefreshImage();
@ -80,7 +80,7 @@ namespace PKHeX.WinForms
// QR Utility
private const string QR6PathBad = "null/#"; // prefix to prevent URL from loading
private const string QR6Path = @"http://lunarcookies.github.io/b1s1.html#";
private const string QR6Path = "http://lunarcookies.github.io/b1s1.html#";
private const string DecodeAPI = "http://api.qrserver.com/v1/read-qr-code/?fileurl=";
private const int QRSize = 365;
private static readonly string EncodeAPI = $"http://chart.apis.google.com/chart?chs={QRSize}x{QRSize}&cht=qr&chl=";
@ -122,7 +122,7 @@ namespace PKHeX.WinForms
string fstr = Regex.Unescape(pkstr);
byte[] raw = Encoding.Unicode.GetBytes(fstr);
// Remove 00 interstitials and retrieve from offset 0x30, take PK7 Stored Size (always)
return raw.ToList().Where((c, i) => i % 2 == 0).Skip(0x30).Take(0xE8).ToArray();
return raw.ToList().Where((_, i) => i % 2 == 0).Skip(0x30).Take(0xE8).ToArray();
}
// All except G7
pkstr = pkstr.Substring(pkstr.IndexOf("#", StringComparison.Ordinal) + 1); // Trim URL

View file

@ -9,8 +9,6 @@ namespace PKHeX.WinForms
{
public static class FontUtil
{
// Font Related
#if WINDOWS
[DllImport("gdi32.dll")]
private static extern IntPtr AddFontMemResourceEx(IntPtr pbFont, uint cbFont, IntPtr pdv, [In] ref uint pcFonts);

View file

@ -30,7 +30,6 @@ namespace QRCoder
{
this.ModuleMatrix = null;
this.Version = 0;
}
}
}