public uint GetGenderDisplayed(Zukan8Index entry) { var data = GetDexBlock(entry.DexType); var index = entry.Offset; var val = BitConverter.ToUInt32(data, index + OFS_CAUGHT); return (val >> 29) & 3; }
private void SetU32(Zukan8Index entry, uint value, int ofs) { var dex = entry.DexType; var index = entry.Offset; var data = GetDexBlock(dex); BitConverter.GetBytes(value).CopyTo(data, index + ofs); }
public uint GetAltFormDisplayed(Zukan8Index entry) { var data = GetDexBlock(entry.DexType); var index = entry.Offset; var val = BitConverter.ToUInt32(data, index + OFS_CAUGHT); return (val >> 15) & 0x1FFF; // (0x1FFF is really overkill, GameFreak) }
private uint GetU32(Zukan8Index entry, int ofs) { var dex = entry.DexType; var index = entry.Offset; var data = GetDexBlock(dex); return BitConverter.ToUInt32(data, index + ofs); }
public void SetGenderDisplayed(Zukan8Index entry, uint value = 0) { var data = GetDexBlock(entry.DexType); var index = entry.Offset; var val = BitConverter.ToUInt32(data, index + OFS_CAUGHT); uint nv = (val & ~(3u << 29)) | ((value & 3) << 29); BitConverter.GetBytes(nv).CopyTo(data, index + OFS_CAUGHT); }
public void SetSeenRegion(Zukan8Index entry, int form, int region, bool value = true) { if ((uint) region >= SeenRegionCount) throw new ArgumentException(nameof(region)); if ((uint) form > 63) return; var data = GetDexBlock(entry.DexType); int index = entry.Offset; var ofs = SeenRegionSize * region; SetFlag(data, index + ofs, form, value); }
public bool GetSeen(Zukan8Index entry) { byte[] data = GetDexBlock(entry.DexType); int offset = entry.Offset; for (int i = 0; i < SeenRegionCount; i++) { var ofs = offset + (SeenRegionSize * i); if (BitConverter.ToUInt64(data, ofs) != 0) return true; } return false; }
public bool GetSeenRegion(Zukan8Index entry, int form, int region) { if ((uint)region >= SeenRegionCount) throw new ArgumentException(nameof(region)); if ((uint)form > 63) return false; var dex = entry.DexType; var offset = entry.Offset; var data = GetDexBlock(dex); var ofs = SeenRegionSize * region; return GetFlag(data, offset + ofs, form); }
public void SetBattledCount(Zukan8Index entry, uint value) => SetU32(entry, value, OFS_BATTLED);
public uint GetBattledCount(Zukan8Index entry) => GetU32(entry, OFS_BATTLED);
public void SetCaughtFlags32(Zukan8Index entry, uint value) => SetU32(entry, value, OFS_CAUGHT);
public void SetDisplayShiny(Zukan8Index entry, bool value = true) => SetCaughtFlagID(entry, 31, value);
public bool GetDisplayShiny(Zukan8Index entry) => GetCaughtFlagID(entry, 31);
public bool GetIsLanguageIndexObtained(Zukan8Index entry, int langIndex) => GetCaughtFlagID(entry, 2 + langIndex);
public bool GetCaught(Zukan8Index entry) => GetCaughtFlagID(entry, 0);
public void SetCaught(Zukan8Index entry, bool value = true) => SetCaughtFlagID(entry, 0, value);
private void ClearDexEntryAll(Zukan8Index entry) { var data = GetDexBlock(entry.DexType); Array.Clear(data, entry.Offset, EntrySize); }
public bool GetCaughtGigantamaxed(Zukan8Index entry) => GetCaughtFlagID(entry, 1);
public void SetCaughtFlagID(Zukan8Index entry, int bit, bool value = true) { var data = GetDexBlock(entry.DexType); SetFlag(data, entry.Offset + OFS_CAUGHT, bit, value); }
private bool GetCaughtFlagID(Zukan8Index entry, int bit) { var data = GetDexBlock(entry.DexType); return GetFlag(data, entry.Offset + OFS_CAUGHT, bit); }
public void SetIsLanguageIndexObtained(Zukan8Index entry, int langIndex, bool value = true) => SetCaughtFlagID(entry, 2 + langIndex, value);
public uint GetUnk2Count(Zukan8Index entry) => GetU32(entry, OFS_UNK2);
public void SetUnk2Count(Zukan8Index entry, uint value) => SetU32(entry, value, OFS_UNK2);
public bool GetDisplayDynamaxInstead(Zukan8Index entry) => GetCaughtFlagID(entry, 28);
public void SetDisplayDynamaxInstead(Zukan8Index entry, bool value = true) => SetCaughtFlagID(entry, 28, value);
public void SetCaughtGigantamax(Zukan8Index entry, bool value = true) => SetCaughtFlagID(entry, 1, value);
public Zukan8EntryInfo(int species, Zukan8Index entry) { Species = species; Entry = entry; }
public bool GetEntry(int species, out Zukan8Index entry) => DexLookup.TryGetValue(species, out entry);