NonBattleItemsData.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. namespace OpenVIII
  4. {
  5. namespace Kernel
  6. {
  7. /// <summary>
  8. /// Non battle Items Name and Description Offsets Data
  9. /// </summary>
  10. /// <see cref="https://github.com/alexfilth/doomtrain/wiki/Non-battle-item-name-and-description-offsets"/>
  11. public sealed class NonBattleItemsData
  12. {
  13. #region Fields
  14. public const int Count = 166;
  15. public const int ID = 8;
  16. #endregion Fields
  17. #region Constructors
  18. private NonBattleItemsData(int i)
  19. {
  20. //0x0000 2 bytes Offset to item name
  21. Name = Memory.Strings.Read(Strings.FileID.Kernel, ID, i * 2);
  22. //0x0002 2 bytes Offset to item description
  23. Description = Memory.Strings.Read(Strings.FileID.Kernel, ID, i * 2 + 1);
  24. NonBattleItemsDataID = i;
  25. }
  26. #endregion Constructors
  27. #region Properties
  28. /// <summary>
  29. ///0x0002 2 bytes Offset to item description
  30. /// </summary>
  31. public FF8String Description { get; }
  32. /// <summary>
  33. ///0x0000 2 bytes Offset to item name
  34. /// </summary>
  35. public FF8String Name { get; }
  36. public int NonBattleItemsDataID { get; }
  37. #endregion Properties
  38. #region Methods
  39. public static IReadOnlyList<NonBattleItemsData> Read()
  40. => Enumerable.Range(0, Count).Select(CreateInstance).ToList();
  41. public override string ToString() => Name;
  42. private static NonBattleItemsData CreateInstance(int i) => new NonBattleItemsData(i);
  43. #endregion Methods
  44. }
  45. }
  46. }