IGM_LGSG.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. using Microsoft.Xna.Framework;
  2. using System;
  3. using System.Linq;
  4. namespace OpenVIII
  5. {
  6. public class IGM_LGSG : Menu
  7. {
  8. #region Fields
  9. public const int space = 4;
  10. private Vector2 AltSize;
  11. #endregion Fields
  12. #region Enums
  13. [Flags]
  14. public enum Mode : byte
  15. {
  16. /// <summary>
  17. /// Loading or nothing
  18. /// </summary>
  19. Nothing = 0x0,
  20. /// <summary>
  21. /// Save flag to switch to saving instead of loading.
  22. /// </summary>
  23. Save = 0x1,
  24. /// <summary>
  25. /// MemoryCard slots or Gamefolders
  26. /// </summary>
  27. Slot = 0x2,
  28. /// <summary>
  29. /// Game list.
  30. /// </summary>
  31. Game = 0x4,
  32. /// <summary>
  33. /// choose from list.
  34. /// </summary>
  35. Choose = 0x8,
  36. /// <summary>
  37. /// Load bar
  38. /// </summary>
  39. Checking = 0x10,
  40. /// <summary>
  41. /// Header
  42. /// </summary>
  43. Header = 0x20,
  44. /// <summary>
  45. /// Slot1
  46. /// </summary>
  47. Slot1 = 0x40,
  48. /// <summary>
  49. /// Slot2
  50. /// </summary>
  51. Slot2 = 0x80,
  52. LoadSlotChoose = Slot | Choose,
  53. SaveSlotChoose = Save | Slot | Choose,
  54. LoadSlotChecking = Slot | Checking,
  55. SaveSlotChecking = Save | Slot | Checking,
  56. LoadGameChoose = Game | Choose,
  57. SaveGameChoose = Save | Game | Choose,
  58. LoadGameChecking = Game | Checking,
  59. SaveGameChecking = Save | Game | Checking,
  60. LoadHeader = Header,
  61. SaveHeader = Save | Header,
  62. }
  63. #endregion Enums
  64. #region Methods
  65. public static IGM_LGSG Create() => Create<IGM_LGSG>();
  66. //public override void DrawData() => Data.Where(m => m.Value != null && m.Value.Enabled && !m.Key.HasFlag(Mode.Header)).ForEach(m => m.Value.Draw());
  67. public override bool Inputs()
  68. {
  69. try
  70. {
  71. return Data.First(m =>
  72. !m.Key.HasFlag(Mode.Header) &&
  73. m.Value != null &&
  74. m.Value.Enabled &&
  75. m.Value.Cursor_Status.HasFlag(Cursor_Status.Enabled)).Value.Inputs();
  76. }
  77. catch (InvalidOperationException)
  78. { return false; }
  79. }
  80. public override void Refresh() => base.Refresh();
  81. //public override void StartDraw()
  82. //{
  83. // Matrix backupfocus = Focus;
  84. // GenerateFocus(AltSize, Box_Options.Top);
  85. // base.StartDraw();
  86. // Data.Where(m => m.Value != null && m.Value.Enabled && m.Key.HasFlag(Mode.Header)).ForEach(m => m.Value.Draw());
  87. // base.EndDraw();
  88. // Focus = backupfocus;
  89. // base.StartDraw();
  90. //}
  91. public override bool Update() => base.Update();
  92. protected override void Init()
  93. {
  94. Size = new Vector2 { X = 960, Y = 720 };
  95. //AltSize = new Vector2(1280, 720);
  96. const int HeaderHeight = 140;
  97. Rectangle SlotsRectangle = new Rectangle(0, HeaderHeight + space, (int)Size.X, (int)Size.Y - HeaderHeight - space);
  98. Rectangle LoadBarRectangle = SlotsRectangle;
  99. Rectangle BlocksRectangle = SlotsRectangle;
  100. SlotsRectangle.Inflate(-Size.X * .32f, -Size.Y * .28f); // (307,341,346,178)
  101. LoadBarRectangle.Inflate(-Size.X * .15f, -Size.Y * .35f);
  102. base.Init();
  103. Data[Mode.LoadSlotChoose] = IGMData.SlotChoose.Create(SlotsRectangle);
  104. Data[Mode.Checking] = IGMData.LoadBarBox.Create(LoadBarRectangle);
  105. Data[Mode.LoadGameChoose] = IGMData.Pool.GameChoose.Create(BlocksRectangle);
  106. Data[Mode.LoadHeader] = IGMData.ThreePieceHeader.Create(new Rectangle(base.X, base.Y, (int)Size.X, HeaderHeight));
  107. Data.Where(x => x.Value != null).ForEach(x => ModeChangeHandler += x.Value.ModeChangeEvent);
  108. SetMode(Mode.LoadSlotChoose);
  109. }
  110. #endregion Methods
  111. }
  112. }