Magic.cs 1.0 KB

1234567891011121314151617181920212223242526
  1. using System.Diagnostics.CodeAnalysis;
  2. using System.Runtime.InteropServices;
  3. namespace OpenVIII.Battle.Dat
  4. {
  5. [StructLayout(LayoutKind.Explicit, Pack = 1, Size = 2)]
  6. [SuppressMessage("ReSharper", "UnusedMember.Global")]
  7. public struct Magic
  8. {
  9. [field: FieldOffset(0)]
  10. public readonly byte ID;
  11. [field: FieldOffset(1)]
  12. public readonly byte Unk;
  13. public Kernel.MagicData Data => Memory.KernelBin.MagicData.Count > ID ? Memory.KernelBin.MagicData[ID] : null;
  14. public Kernel.JunctionableGFsData JunctionableGFsData => Memory.KernelBin.JunctionableGFsData.ContainsKey(GF) ? Memory.KernelBin.JunctionableGFsData[GF] : null;
  15. ///<remarks>per IFRIT GFs ID is between 0x40 and 0x4F. And they seem to be in order of GFs enum.</remarks>
  16. public GFs GF => ID > 0x4F || ID < 0x40 ? GFs.Blank : (GFs)(ID - 0x40);
  17. public FF8String Name => GF != GFs.Blank ? Memory.Strings.GetName(GF) : Data?.Name;
  18. public override string ToString() => Name;
  19. }
  20. }