LoadBarBox.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. using Microsoft.Xna.Framework;
  2. using System;
  3. namespace OpenVIII.IGMData
  4. {
  5. public class LoadBarBox : IGMData.Base
  6. {
  7. #region Properties
  8. public Slide<float> LoadBarSlide { get; private set; }
  9. public bool Save { get; private set; }
  10. public bool Slot { get; private set; }
  11. public int TotalWidth { get; private set; }
  12. private static TimeSpan time => TimeSpan.FromMilliseconds(1000d);
  13. private IGMDataItem.Icon RedBar { get => (IGMDataItem.Icon)ITEM[0, 1]; set => ITEM[0, 1] = value; }
  14. #endregion Properties
  15. #region Methods
  16. public static LoadBarBox Create(Rectangle pos) => Create<LoadBarBox>(1, 2, container: new IGMDataItem.Box { Pos = pos, Title = Icons.ID.INFO });
  17. public override bool Inputs_OKAY()
  18. {
  19. if (Slot)
  20. {
  21. setmode(IGM_LGSG.Mode.Game |
  22. IGM_LGSG.Mode.Choose |
  23. (Save ? IGM_LGSG.Mode.Save : IGM_LGSG.Mode.Nothing));
  24. playsnd(35);
  25. return true;
  26. }
  27. else
  28. {
  29. Menu.FadeIn();
  30. Menu.Module.State = MenuModule.Mode.IGM;
  31. Menu.IGM.Refresh();
  32. //TODO if save ask if you are sure if you are replacing an existing save.
  33. setmode(IGM_LGSG.Mode.Game |
  34. IGM_LGSG.Mode.Choose |
  35. (Save ? IGM_LGSG.Mode.Save : IGM_LGSG.Mode.Nothing));
  36. playsnd(36);
  37. return true;
  38. }
  39. //return false;
  40. void playsnd(int snd)
  41. {
  42. init_debugger_Audio.PlaySound(snd);
  43. skipsnd = true;
  44. base.Inputs_OKAY();
  45. }
  46. void setmode(IGM_LGSG.Mode mode)
  47. {
  48. if (Menu.IGM_LGSG.GetMode().HasFlag(IGM_LGSG.Mode.Slot1))
  49. Menu.IGM_LGSG.SetMode(mode | IGM_LGSG.Mode.Slot1);
  50. else if (Menu.IGM_LGSG.GetMode().HasFlag(IGM_LGSG.Mode.Slot2))
  51. Menu.IGM_LGSG.SetMode(mode | IGM_LGSG.Mode.Slot2);
  52. }
  53. }
  54. public override void ModeChangeEvent(object sender, Enum e)
  55. {
  56. base.ModeChangeEvent(sender, e);
  57. if (e.GetType() == typeof(IGM_LGSG.Mode))
  58. {
  59. Save = e.HasFlag(IGM_LGSG.Mode.Save);
  60. Slot = e.HasFlag(IGM_LGSG.Mode.Slot);
  61. if (e.HasFlag(IGM_LGSG.Mode.Checking))
  62. {
  63. Show();
  64. Refresh();
  65. }
  66. else
  67. Hide();
  68. }
  69. }
  70. public override void Refresh()
  71. {
  72. if (Enabled)
  73. {
  74. base.Refresh();
  75. LoadBarSlide.Restart();
  76. }
  77. }
  78. public override bool Update()
  79. {
  80. if (Enabled)
  81. {
  82. base.Update();
  83. if (!LoadBarSlide.Done)
  84. {
  85. Rectangle r = RedBar.Pos;
  86. r.Width = (int)LoadBarSlide.Update();
  87. RedBar.Pos = r;
  88. }
  89. else
  90. {
  91. Inputs_OKAY();
  92. }
  93. return true;
  94. }
  95. return false;
  96. }
  97. protected override void Init()
  98. {
  99. base.Init();
  100. ITEM[0, 0] = new IGMDataItem.Icon
  101. {
  102. Data = Icons.ID.Bar_BG,
  103. Pos = SIZE[0]
  104. };
  105. Rectangle r = SIZE[0];
  106. //r.Offset(0, 0);
  107. r.Inflate(-4, -4);
  108. TotalWidth = r.Width;
  109. LoadBarSlide = new Slide<float>(0, TotalWidth, time, MathHelper.SmoothStep);
  110. r.Width = 0;
  111. ITEM[0, 1] = new IGMDataItem.Icon { Data = Icons.ID.Bar_Fill, Pos = r };
  112. Cursor_Status |= Cursor_Status.Enabled | Cursor_Status.Hidden | Cursor_Status.Static;
  113. }
  114. protected override void InitShift(int i, int col, int row)
  115. {
  116. base.InitShift(i, col, row);
  117. SIZE[i].Height = 28;
  118. SIZE[i].Inflate(-10, 0);
  119. SIZE[i].Y += Height / 2 - SIZE[i].Height / 2;
  120. }
  121. #endregion Methods
  122. }
  123. }