Clock.cs 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. using Microsoft.Xna.Framework;
  2. using System.Diagnostics.CodeAnalysis;
  3. namespace OpenVIII
  4. {
  5. public partial class IGM
  6. {
  7. #region Classes
  8. private class Clock : IGMData.Base
  9. {
  10. #region Fields
  11. private const int MaxGil = 99999999;
  12. private const int MaxHourOrMinutes = 99;
  13. private const int MaxSeedRank = 99999;
  14. #endregion Fields
  15. #region Methods
  16. [SuppressMessage("ReSharper", "MemberHidesStaticFromOuterClass")]
  17. public static Clock Create() => Create<Clock>(1, 8, new IGMDataItem.Box { Pos = new Rectangle { Width = 226, Height = 114, Y = 630 - 114, X = 843 - 226 } });
  18. public override void Refresh()
  19. {
  20. if (Memory.State?.FieldVars != null)
  21. {
  22. base.Refresh();
  23. ((IGMDataItem.Integer)ITEM[0, 1]).Data = Memory.State.TimePlayed.TotalHours < MaxHourOrMinutes ? checked((int)(Memory.State.TimePlayed.TotalHours)) : MaxHourOrMinutes;
  24. ((IGMDataItem.Integer)ITEM[0, 3]).Data = Memory.State.TimePlayed.TotalHours < MaxHourOrMinutes ? Memory.State.TimePlayed.Minutes : MaxHourOrMinutes;
  25. if (!Memory.State.TeamLaguna)
  26. {
  27. //TODO Hide seed rank if not in seed yet.
  28. var seedRank = Memory.State.FieldVars.SeedRankPts / 100;
  29. ((IGMDataItem.Integer)ITEM[0, 5]).Data = seedRank < MaxSeedRank ? seedRank : MaxSeedRank;
  30. ITEM[0, 4].Show();
  31. ITEM[0, 5].Show();
  32. }
  33. else
  34. {
  35. ITEM[0, 4].Hide();
  36. ITEM[0, 5].Hide();
  37. }
  38. for (var i = 0; i < Depth; i++)
  39. {
  40. if (i != 4 && i != 5)
  41. ITEM[0, i]?.Show();
  42. }
  43. var stateAmountOfGil = Memory.State.AmountOfGil;
  44. ((IGMDataItem.Integer)ITEM[0, 6]).Data = stateAmountOfGil < MaxGil ? (int)stateAmountOfGil : MaxGil;
  45. }
  46. }
  47. protected override void Init()
  48. {
  49. base.Init();
  50. var r = CONTAINER.Pos;
  51. r.Offset(25, 14);
  52. ITEM[0, 0] = new IGMDataItem.Icon { Data = Icons.ID.PLAY, Pos = r, Palette = 13 };
  53. r = CONTAINER;
  54. r.Offset(145, 14);
  55. ITEM[0, 2] = new IGMDataItem.Icon { Data = Icons.ID.Colon, Pos = r, Palette = 13, Faded_Palette = 2, Blink_Adjustment = .5f, Blink = true };
  56. r = CONTAINER;
  57. r.Offset(185, 81);
  58. ITEM[0, 7] = new IGMDataItem.Icon { Data = Icons.ID.G, Pos = r, Palette = 2 };
  59. r = CONTAINER;
  60. r.Offset(105, 14);
  61. ITEM[0, 1] = new IGMDataItem.Integer { Pos = r, Palette = 2, Faded_Palette = 0, Padding = 1, Spaces = 2 };
  62. r = CONTAINER;
  63. r.Offset(165, 14);
  64. ITEM[0, 3] = new IGMDataItem.Integer { Pos = r, Palette = 2, Faded_Palette = 0, Padding = 2, Spaces = 2 };
  65. r = CONTAINER;
  66. r.Offset(25, 48);
  67. ITEM[0, 4] = new IGMDataItem.Icon { Data = Icons.ID.SeeD, Pos = r, Palette = 13 };
  68. r = CONTAINER;
  69. r.Offset(105, 48);
  70. ITEM[0, 5] = new IGMDataItem.Integer { Pos = r, Palette = 2, Faded_Palette = 0, Padding = 1, Spaces = 5 };
  71. r = CONTAINER;
  72. r.Offset(25, 81);
  73. ITEM[0, 6] = new IGMDataItem.Integer { Pos = r, Palette = 2, Faded_Palette = 0, Padding = 1, Spaces = 8 };
  74. }
  75. #endregion Methods
  76. }
  77. #endregion Classes
  78. }
  79. }