Party.cs 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. using Microsoft.Xna.Framework;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. namespace OpenVIII.IGMData.Target
  5. {
  6. public class Party : IGMData.Base
  7. {
  8. #region Properties
  9. public IGMData.Target.Enemies Target_Enemies { get; set; }
  10. #endregion Properties
  11. #region Methods
  12. public static Party Create(Rectangle pos) => Create<Party>(3, 1, new IGMDataItem.Box { Pos = pos, Title = Icons.ID.NAME }, 1, 3);
  13. public override void Inputs_Left()
  14. {
  15. Cursor_Status &= ~Cursor_Status.Enabled;
  16. Target_Enemies.Cursor_Status |= Cursor_Status.Enabled;
  17. Target_Enemies.CURSOR_SELECT = (CURSOR_SELECT + Target_Enemies.Rows) %
  18. (Target_Enemies.Rows * Target_Enemies.Cols);
  19. while (Target_Enemies.BLANKS[Target_Enemies.CURSOR_SELECT] && Target_Enemies.CURSOR_SELECT > 0)
  20. Target_Enemies.CURSOR_SELECT--;
  21. base.Inputs_Left();
  22. }
  23. public override bool Inputs_OKAY() => false;
  24. public override void Inputs_Right()
  25. {
  26. Cursor_Status &= ~Cursor_Status.Enabled;
  27. Target_Enemies.Cursor_Status |= Cursor_Status.Enabled;
  28. Target_Enemies.CURSOR_SELECT = CURSOR_SELECT % Target_Enemies.Rows;
  29. while (Target_Enemies.BLANKS[Target_Enemies.CURSOR_SELECT] && Target_Enemies.CURSOR_SELECT > 0)
  30. Target_Enemies.CURSOR_SELECT--;
  31. base.Inputs_Right();
  32. }
  33. public void Random() => SetCursor_select(BLANKS.Cast<bool>().Select((enabled, index) => new { enabled, index }).Where(x => !x.enabled).Random().index);
  34. public override void Refresh()
  35. {
  36. if (Memory.State?.Characters != null && Memory.State?.Party != null)
  37. {
  38. List<KeyValuePair<int, Characters>> party = Memory.State.Party.Select((element, index) => new { element, index }).ToDictionary(m => m.index, m => m.element).Where(m => !m.Value.Equals(Characters.Blank)).ToList();
  39. byte pos = 0;
  40. foreach (KeyValuePair<int, Characters> pm in party)
  41. {
  42. Saves.CharacterData data = Memory.State[Memory.State.PartyData[pm.Key]];
  43. ((IGMDataItem.Text)ITEM[pos, 0]).Data = data.Name;
  44. ((IGMDataItem.Text)ITEM[pos, 0]).FontColor = data.IsDead ? Font.ColorID.Dark_Grey : Font.ColorID.White;
  45. BLANKS[pos] = false;
  46. ITEM[pos, 0].Show();
  47. pos++;
  48. }
  49. for (; pos < Count; pos++)
  50. {
  51. BLANKS[pos] = true;
  52. ITEM[pos, 0].Hide();
  53. }
  54. }
  55. }
  56. protected override void Init()
  57. {
  58. base.Init();
  59. for (int pos = 0; pos < Count; pos++)
  60. ITEM[pos, 0] = new IGMDataItem.Text { Pos = SIZE[pos] };
  61. }
  62. protected override void InitShift(int i, int col, int row)
  63. {
  64. base.InitShift(i, col, row);
  65. SIZE[i].Inflate(-18, -20);
  66. SIZE[i].Y -= 7 * row + 2;
  67. //SIZE[i].Inflate(-22, -8);
  68. //SIZE[i].Offset(0, 12 + (-8 * row));
  69. SIZE[i].Height = (int)(12 * TextScale.Y);
  70. }
  71. #endregion Methods
  72. }
  73. }