Abilities.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using Microsoft.Xna.Framework;
  2. namespace OpenVIII.IGMData.Slots
  3. {
  4. public class Abilities : IGMData.Base
  5. {
  6. #region Methods
  7. public static Abilities Create() => Create<Abilities>(4, 2, new IGMDataItem.Box { Pos = new Rectangle(0, 414, 435, 216), Title = Icons.ID.ABILITY }, 1, 4);
  8. public override void Refresh()
  9. {
  10. base.Refresh();
  11. if (Memory.State?.Characters != null && Damageable != null && Damageable.GetCharacterData(out var c))
  12. {
  13. for (var i = 0; i < Count; i++)
  14. {
  15. var slots = 2;
  16. if (c.UnlockedGFAbilities.Contains(Kernel.Abilities.Ability3))
  17. slots = 3;
  18. if (c.UnlockedGFAbilities.Contains(Kernel.Abilities.Ability4))
  19. slots = 4;
  20. if (i < slots)
  21. {
  22. ITEM[i, 0].Show();
  23. if (c.Abilities[i] != Kernel.Abilities.None)
  24. {
  25. ((IGMDataItem.Text)ITEM[i, 1]).Icon = Memory.KernelBin.EquippableAbilities[c.Abilities[i]].Icon;
  26. ((IGMDataItem.Text)ITEM[i, 1]).Data = Memory.KernelBin.EquippableAbilities[c.Abilities[i]].Name;
  27. ((IGMDataItem.Text)ITEM[i, 1]).Show();
  28. Descriptions[i] = Memory.KernelBin.EquippableAbilities[c.Abilities[i]].Description;
  29. }
  30. else
  31. {
  32. ITEM[i, 1].Hide();
  33. }
  34. BLANKS[i] = false;
  35. }
  36. else
  37. {
  38. ITEM[i, 0].Hide();
  39. ITEM[i, 1].Hide();
  40. BLANKS[i] = true;
  41. }
  42. }
  43. }
  44. }
  45. protected override void Init()
  46. {
  47. base.Init();
  48. for (var i = 0; i < Count; i++)
  49. {
  50. ITEM[i, 0] = new IGMDataItem.Icon { Data = Icons.ID.Arrow_Right2, Pos = SIZE[i], Palette = 9 };
  51. ITEM[i, 0].Hide();
  52. ITEM[i, 1] = new IGMDataItem.Text
  53. {
  54. Palette = 9,
  55. Pos = new Rectangle(SIZE[i].X + 40, SIZE[i].Y, 0, 0)
  56. };
  57. ITEM[i, 1].Hide();
  58. }
  59. }
  60. protected override void InitShift(int i, int col, int row)
  61. {
  62. base.InitShift(i, col, row);
  63. SIZE[i].Inflate(-22, -8);
  64. SIZE[i].Offset(80, 12 + (-8 * row));
  65. CURSOR[i].X += 40;
  66. }
  67. #endregion Methods
  68. }
  69. }