Base.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. using Microsoft.Xna.Framework;
  2. using Microsoft.Xna.Framework.Graphics;
  3. using System;
  4. namespace OpenVIII.IGMDataItem
  5. {
  6. public abstract class Base : Menu_Base, IDisposable
  7. {
  8. #region Fields
  9. protected static Texture2D blank;
  10. private bool _blink = false;
  11. private bool disposedValue = false;
  12. #endregion Fields
  13. #region Constructors
  14. public Base(Rectangle? pos = null, Vector2? scale = null)
  15. {
  16. _pos = pos ?? Rectangle.Empty;
  17. Scale = scale ?? TextScale;
  18. }
  19. #endregion Constructors
  20. #region Destructors
  21. // TODO: override a finalizer only if Dispose(bool disposing) above has code to free unmanaged resources.
  22. ~Base()
  23. {
  24. // Do not change this code. Put cleanup code in Dispose(bool disposing) above.
  25. Dispose(false);
  26. }
  27. #endregion Destructors
  28. #region Properties
  29. public static float Blink_Amount => Menu.Blink_Amount;
  30. public static float Fade => Menu.Fade;
  31. public static Vector2 TextScale => Menu.TextScale;
  32. public virtual bool Blink { get => _blink; set => _blink = value; }
  33. public float Blink_Adjustment { get; set; } = 1f;
  34. public Color Color { get; set; } = Color.White;
  35. public Color Faded_Color { get; set; } = Color.White;
  36. public Vector2 Scale { get; set; }
  37. #endregion Properties
  38. #region Methods
  39. public static void DrawPointer(Point cursor, Vector2? offset = null, bool blink = false) => Menu.DrawPointer(cursor, offset, blink);
  40. public static implicit operator Color(Base v) => v.Color;
  41. // This code added to correctly implement the disposable pattern.
  42. public void Dispose()
  43. {
  44. // Do not change this code. Put cleanup code in Dispose(bool disposing) above.
  45. Dispose(true);
  46. // TODO: uncomment the following line if the finalizer is overridden above.
  47. GC.SuppressFinalize(this);
  48. }
  49. //public virtual object Data { get; public set; }
  50. //public virtual FF8String Data { get; public set; }
  51. public override void Draw()
  52. { }
  53. public override bool Inputs() => false;
  54. public override bool Update() => false;
  55. protected virtual void Dispose(bool disposing)
  56. {
  57. if (!disposedValue)
  58. {
  59. if (disposing)
  60. {
  61. // TODO: dispose managed state (managed objects).
  62. }
  63. // TODO: free unmanaged resources (unmanaged objects) and override a finalizer below.
  64. // TODO: set large fields to null.
  65. if (blank != null && !blank.IsDisposed)
  66. {
  67. blank.Dispose();
  68. blank = null;
  69. }
  70. disposedValue = true;
  71. }
  72. }
  73. protected override void Init()
  74. {
  75. if (blank == null)
  76. {
  77. blank = new Texture2D(Memory.graphics.GraphicsDevice, 1, 1);
  78. blank.SetData(new Color[] { Color.White });
  79. }
  80. }
  81. #endregion Methods
  82. // To detect redundant calls
  83. }
  84. }