Command.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using Microsoft.Xna.Framework;
  2. namespace OpenVIII.IGMData.Slots
  3. {
  4. public class Command : IGMData.Base
  5. {
  6. #region Methods
  7. public static Command Create() => Create<Command>(4, 2, new IGMDataItem.Box { Pos = new Rectangle(0, 198, 435, 216), Title = Icons.ID.COMMAND }, 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. if (i > 0)
  16. {
  17. if (c.Commands[i - 1] != Kernel.Abilities.None)
  18. {
  19. ((IGMDataItem.Text)ITEM[i, 1]).Data = Memory.KernelBin.CommandAbilities[c.Commands[i - 1]].Name;
  20. ITEM[i, 1].Show();
  21. var k = c.Commands[i - 1];
  22. Descriptions[i] = Memory.KernelBin.CommandAbilities[k].BattleCommand.Description;
  23. }
  24. else
  25. {
  26. ITEM[i, 1].Hide();
  27. }
  28. }
  29. else if (i == 0)
  30. {
  31. ((IGMDataItem.Text)ITEM[i, 1]).Data = Memory.KernelBin.BattleCommands[
  32. c.Abilities.Contains(Kernel.Abilities.Mug) ?
  33. 12 :
  34. 1].Name;
  35. }
  36. }
  37. }
  38. }
  39. protected override void Init()
  40. {
  41. base.Init();
  42. CURSOR[0] = Point.Zero; //disable this cursor location
  43. for (var i = 0; i < Count; i++)
  44. {
  45. if (i > 0)
  46. {
  47. ITEM[i, 0] = new IGMDataItem.Icon { Data = Icons.ID.Arrow_Right2, Pos = SIZE[i], Palette = 9 };
  48. ITEM[i, 1] = new IGMDataItem.Text
  49. {
  50. Icon = Icons.ID.Ability_Command,
  51. Palette = 9,
  52. Pos = new Rectangle(SIZE[i].X + 40, SIZE[i].Y, 0, 0)
  53. };
  54. }
  55. else if (i == 0)
  56. ITEM[i, 1] = new IGMDataItem.Text
  57. {
  58. Pos = new Rectangle(SIZE[i].X + 80, SIZE[i].Y, 0, 0)
  59. };
  60. }
  61. }
  62. protected override void InitShift(int i, int col, int row)
  63. {
  64. base.InitShift(i, col, row);
  65. SIZE[i].Inflate(-22, -8);
  66. SIZE[i].Offset(0, 12 + (-8 * row));
  67. CURSOR[i].X += 40;
  68. }
  69. #endregion Methods
  70. }
  71. }