SlotChoose.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. using Microsoft.Xna.Framework;
  2. using System;
  3. namespace OpenVIII
  4. {
  5. namespace IGMData
  6. {
  7. public class SlotChoose : IGMData.Base
  8. {
  9. #region Properties
  10. public bool Save { get; protected set; } = false;
  11. public IGMDataItem.Box Slot1Main { get => (IGMDataItem.Box)ITEM[0, 0]; set => ITEM[0, 0] = value; }
  12. public IGMDataItem.Box Slot1Title { get => (IGMDataItem.Box)ITEM[0, 1]; set => ITEM[0, 1] = value; }
  13. public IGMDataItem.Box Slot2Main { get => (IGMDataItem.Box)ITEM[1, 0]; set => ITEM[1, 0] = value; }
  14. public IGMDataItem.Box Slot2Title { get => (IGMDataItem.Box)ITEM[1, 1]; set => ITEM[1, 1] = value; }
  15. #endregion Properties
  16. #region Methods
  17. public static SlotChoose Create(Rectangle pos)
  18. {
  19. SlotChoose r = new SlotChoose();
  20. r.Init(2, 2, new IGMDataItem.Empty { Pos = pos }, 1, 2);
  21. return r;
  22. }
  23. public override bool Inputs() => base.Inputs();
  24. public override bool Inputs_CANCEL()
  25. {
  26. base.Inputs_CANCEL();
  27. if (!Save)
  28. init_debugger_Audio.StopMusic();
  29. Menu.FadeIn();
  30. Menu.Module.State = MenuModule.Mode.MainLobby;
  31. return true;
  32. }
  33. public override bool Inputs_OKAY()
  34. {
  35. base.Inputs_OKAY();
  36. IGM_LGSG.Mode mode = IGM_LGSG.Mode.Slot |
  37. IGM_LGSG.Mode.Checking |
  38. (Save ? IGM_LGSG.Mode.Save : IGM_LGSG.Mode.Nothing);
  39. if (CURSOR_SELECT == 0)
  40. Menu.IGM_LGSG.SetMode(mode | IGM_LGSG.Mode.Slot1);
  41. else if (CURSOR_SELECT == 1)
  42. Menu.IGM_LGSG.SetMode(mode | IGM_LGSG.Mode.Slot2);
  43. return true;
  44. }
  45. public override void ModeChangeEvent(object sender, Enum e)
  46. {
  47. base.ModeChangeEvent(sender, e);
  48. if (e.GetType() == typeof(IGM_LGSG.Mode))
  49. {
  50. Save = e.HasFlag(IGM_LGSG.Mode.Save);
  51. if (e.HasFlag(IGM_LGSG.Mode.Slot) && e.HasFlag(IGM_LGSG.Mode.Choose))
  52. Show();
  53. else
  54. Hide();
  55. }
  56. }
  57. protected override void Init()
  58. {
  59. base.Init();
  60. Point offset = new Point(-8, -28);
  61. Point size = new Point(132, 60);
  62. Slot1Main = new IGMDataItem.Box { Data = Strings.Name.FF8, Pos = SIZE[0], Options = Box_Options.Buttom | Box_Options.Center };
  63. Slot2Main = new IGMDataItem.Box { Data = Strings.Name.FF8, Pos = SIZE[1], Options = Box_Options.Buttom | Box_Options.Center };
  64. Point p = SIZE[0].Location;
  65. p = p.Offset(offset);
  66. Slot1Title = new IGMDataItem.Box { Data = Strings.Name.Slot1, Pos = new Rectangle(p, size), Options = Box_Options.Middle | Box_Options.Center };
  67. p = SIZE[1].Location;
  68. p = p.Offset(offset);
  69. Slot2Title = new IGMDataItem.Box { Data = Strings.Name.Slot2, Pos = new Rectangle(p, size), Options = Box_Options.Middle | Box_Options.Center };
  70. Slot1Main.Draw(true);
  71. Slot2Main.Draw(true);
  72. CURSOR[0] = Slot1Main.Dims.Cursor;
  73. CURSOR[1] = Slot2Main.Dims.Cursor;
  74. Cursor_Status = Cursor_Status.Enabled;
  75. }
  76. protected override void InitShift(int i, int col, int row)
  77. {
  78. int SpaceBetween = 60;
  79. base.InitShift(i, col, row);
  80. switch (i)
  81. {
  82. case 0:
  83. SIZE[i].Y -= SpaceBetween / 2;
  84. break;
  85. case 1:
  86. default:
  87. SIZE[i].Y += row * SpaceBetween / 2;
  88. break;
  89. }
  90. }
  91. #endregion Methods
  92. }
  93. }
  94. }