SlotChoose.cs 4.0 KB

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