mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-05-23 10:36:11 -05:00
Simplify some dex interaction
utilize get/set flag method calls, add xml docs for the two methods
This commit is contained in:
parent
a53e8ddb7e
commit
228b0e84fb
|
|
@ -462,37 +462,25 @@ public override void SetSeen(int species, bool seen)
|
|||
{
|
||||
int bit = species - 1;
|
||||
int ofs = bit >> 3;
|
||||
byte bitval = (byte)(1 << (bit & 7));
|
||||
|
||||
if (seen)
|
||||
Data[PokedexSeenOffset + ofs] |= bitval;
|
||||
else
|
||||
Data[PokedexSeenOffset + ofs] &= (byte)~bitval;
|
||||
SetFlag(PokedexSeenOffset + ofs, bit & 7, seen);
|
||||
}
|
||||
public override void SetCaught(int species, bool caught)
|
||||
{
|
||||
int bit = species - 1;
|
||||
int ofs = bit >> 3;
|
||||
byte bitval = (byte)(1 << (bit & 7));
|
||||
|
||||
if (caught)
|
||||
Data[PokedexCaughtOffset + ofs] |= bitval;
|
||||
else
|
||||
Data[PokedexCaughtOffset + ofs] &= (byte)~bitval;
|
||||
SetFlag(PokedexCaughtOffset + ofs, bit & 7, caught);
|
||||
}
|
||||
public override bool GetSeen(int species)
|
||||
{
|
||||
int bit = species - 1;
|
||||
int ofs = bit >> 3;
|
||||
byte bitval = (byte)(1 << (bit & 7));
|
||||
return (Data[PokedexSeenOffset + ofs] & bitval) != 0;
|
||||
return GetFlag(PokedexSeenOffset + ofs, bit & 7);
|
||||
}
|
||||
public override bool GetCaught(int species)
|
||||
{
|
||||
int bit = species - 1;
|
||||
int ofs = bit >> 3;
|
||||
byte bitval = (byte)(1 << (bit & 7));
|
||||
return (Data[PokedexCaughtOffset + ofs] & bitval) != 0;
|
||||
return GetFlag(PokedexCaughtOffset + ofs, bit & 7);
|
||||
}
|
||||
|
||||
private const int SpawnFlagCount = 0xF0;
|
||||
|
|
|
|||
|
|
@ -479,29 +479,14 @@ public override void SetSeen(int species, bool seen)
|
|||
{
|
||||
int bit = species - 1;
|
||||
int ofs = bit >> 3;
|
||||
byte bitval = (byte)(1 << (bit & 7));
|
||||
|
||||
if (seen)
|
||||
Data[Offsets.PokedexSeen + ofs] |= bitval;
|
||||
else
|
||||
Data[Offsets.PokedexSeen + ofs] &= (byte)~bitval;
|
||||
SetFlag(Offsets.PokedexSeen + ofs, bit & 7, seen);
|
||||
}
|
||||
public override void SetCaught(int species, bool caught)
|
||||
{
|
||||
int bit = species - 1;
|
||||
int ofs = bit >> 3;
|
||||
byte bitval = (byte)(1 << (bit & 7));
|
||||
|
||||
if (!caught)
|
||||
{
|
||||
// Clear the Captured Flag
|
||||
Data[Offsets.PokedexCaught + ofs] &= (byte)~bitval;
|
||||
return;
|
||||
}
|
||||
|
||||
// Set the Captured Flag
|
||||
Data[Offsets.PokedexCaught + ofs] |= bitval;
|
||||
if (species == 201)
|
||||
SetFlag(Offsets.PokedexCaught + ofs, bit & 7, caught);
|
||||
if (caught && species == 201)
|
||||
SetUnownFormFlags();
|
||||
}
|
||||
private void SetUnownFormFlags()
|
||||
|
|
@ -514,17 +499,13 @@ public override bool GetSeen(int species)
|
|||
{
|
||||
int bit = species - 1;
|
||||
int ofs = bit >> 3;
|
||||
byte bitval = (byte)(1 << (bit & 7));
|
||||
// Get the Seen Flag
|
||||
return (Data[Offsets.PokedexSeen + ofs] & bitval) != 0;
|
||||
return GetFlag(Offsets.PokedexSeen + ofs, bit & 7);
|
||||
}
|
||||
public override bool GetCaught(int species)
|
||||
{
|
||||
int bit = species - 1;
|
||||
int ofs = bit >> 3;
|
||||
byte bitval = (byte)(1 << (bit & 7));
|
||||
// Get the Caught Flag
|
||||
return (Data[Offsets.PokedexCaught + ofs] & bitval) != 0;
|
||||
return GetFlag(Offsets.PokedexCaught + ofs, bit & 7);
|
||||
}
|
||||
|
||||
// Misc
|
||||
|
|
|
|||
|
|
@ -535,50 +535,31 @@ public override bool GetCaught(int species)
|
|||
{
|
||||
int bit = species - 1;
|
||||
int ofs = bit >> 3;
|
||||
byte bitval = (byte) (1 << (bit&7));
|
||||
|
||||
int caughtOffset = BlockOfs[0] + 0x28 + ofs;
|
||||
|
||||
return (Data[caughtOffset] & bitval) != 0;
|
||||
return GetFlag(caughtOffset + ofs, bit & 7);
|
||||
}
|
||||
public override void SetCaught(int species, bool caught)
|
||||
{
|
||||
int bit = species - 1;
|
||||
int ofs = bit / 8;
|
||||
int bitval = 1 << (bit&7);
|
||||
int caughtOffset = BlockOfs[0] + 0x28 + ofs;
|
||||
|
||||
if (caught)
|
||||
Data[caughtOffset] |= (byte)bitval;
|
||||
else
|
||||
Data[caughtOffset] &= (byte)~bitval;
|
||||
SetFlag(caughtOffset + ofs, bit & 7, caught);
|
||||
}
|
||||
|
||||
public override bool GetSeen(int species)
|
||||
{
|
||||
int bit = species - 1;
|
||||
int ofs = bit >> 3;
|
||||
byte bitval = (byte)(1 << (bit&7));
|
||||
|
||||
int seenOffset = BlockOfs[0] + 0x5C + ofs;
|
||||
return (Data[seenOffset] & bitval) != 0;
|
||||
return GetFlag(seenOffset + ofs, bit & 7);
|
||||
}
|
||||
public override void SetSeen(int species, bool seen)
|
||||
{
|
||||
int bit = species - 1;
|
||||
int ofs = bit / 8;
|
||||
int bitval = 1 << (bit&7);
|
||||
|
||||
if (seen)
|
||||
{
|
||||
foreach (int o in SeenFlagOffsets)
|
||||
Data[o + ofs] |= (byte)bitval;
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (int o in SeenFlagOffsets)
|
||||
Data[o + ofs] &= (byte)~bitval;
|
||||
}
|
||||
foreach (int o in SeenFlagOffsets)
|
||||
SetFlag(o + ofs, bit & 7, seen);
|
||||
}
|
||||
|
||||
public bool NationalDex
|
||||
|
|
|
|||
|
|
@ -298,14 +298,29 @@ public void SetEventFlag(int flagNumber, bool value)
|
|||
throw new ArgumentException($"Event Flag to set ({flagNumber}) is greater than max ({EventFlagMax}).");
|
||||
SetFlag(EventFlag + (flagNumber >> 3), flagNumber & 7, value);
|
||||
}
|
||||
public bool GetFlag(int ofs, int n)
|
||||
/// <summary>
|
||||
/// Gets the <see cref="bool"/> status of the Flag at the specified offset and index.
|
||||
/// </summary>
|
||||
/// <param name="offset">Offset to read from</param>
|
||||
/// <param name="bitIndex">Bit index to read</param>
|
||||
/// <returns>Flag is Set (true) or not Set (false)</returns>
|
||||
public bool GetFlag(int offset, int bitIndex)
|
||||
{
|
||||
return (Data[ofs] >> n & 1) != 0;
|
||||
bitIndex &= 7; // ensure bit access is 0-7
|
||||
return (Data[offset] >> bitIndex & 1) != 0;
|
||||
}
|
||||
public void SetFlag(int ofs, int n, bool value)
|
||||
/// <summary>
|
||||
/// Sets the <see cref="bool"/> status of the Flag at the specified offset and index.
|
||||
/// </summary>
|
||||
/// <param name="offset">Offset to read from</param>
|
||||
/// <param name="bitIndex">Bit index to read</param>
|
||||
/// <param name="value">Flag status to set</param>
|
||||
/// <remarks>Flag is Set (true) or not Set (false)</remarks>
|
||||
public void SetFlag(int offset, int bitIndex, bool value)
|
||||
{
|
||||
Data[ofs] &= (byte)~(1 << (n & 7));
|
||||
Data[ofs] |= (byte)((value ? 1 : 0) << n);
|
||||
bitIndex &= 7; // ensure bit access is 0-7
|
||||
Data[offset] &= (byte)~(1 << bitIndex);
|
||||
Data[offset] |= (byte)((value ? 1 : 0) << bitIndex);
|
||||
}
|
||||
|
||||
// Inventory
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ private void GetEntry()
|
|||
for (int i = 0; i < LangCount; i++)
|
||||
{
|
||||
CL[i].Enabled = true;
|
||||
CL[i].Checked = (SAV.Data[l_ofs] & (byte)(1 << i)) != 0;
|
||||
CL[i].Checked = SAV.GetFlag(l_ofs, i);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -203,12 +203,7 @@ private void SetEntry()
|
|||
{
|
||||
l_ofs += PokeDexLanguageFlags;
|
||||
for (int i = 0; i < LangCount; i++)
|
||||
{
|
||||
if (CL[i].Checked)
|
||||
SAV.Data[l_ofs] |= (byte)(1 << i);
|
||||
else
|
||||
SAV.Data[l_ofs] &= (byte)~(1 << i);
|
||||
}
|
||||
SAV.SetFlag(l_ofs, i, CL[i].Checked);
|
||||
}
|
||||
|
||||
var forms = SAV.GetForms(species);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user