FieldMenu.cs 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. using Microsoft.Xna.Framework;
  2. using System.Linq;
  3. namespace OpenVIII.Fields
  4. {
  5. /// <summary>
  6. /// Currently a menu for field screen to enable or disable elements or test scripts.
  7. /// </summary>
  8. public class FieldMenu : Menu
  9. {
  10. #region Enums
  11. private enum Mode
  12. {
  13. On
  14. }
  15. #endregion Enums
  16. #region Methods
  17. public static FieldMenu Create() => Create<FieldMenu>();
  18. public override bool Inputs()
  19. {
  20. bool r = false;
  21. switch ((Mode)GetMode())
  22. {
  23. case Mode.On:
  24. r = Data[GetMode()].Inputs() || r;
  25. break;
  26. }
  27. r = base.Inputs() || r;
  28. return r;
  29. }
  30. protected override void Init()
  31. {
  32. //Size = new Vector2(960f, 720f);
  33. Size = new Vector2(1280f, 720f);
  34. base.Init();
  35. Data[Mode.On] = IGMData.FieldDebugControls.Create(new Rectangle(0, 0, 480, 360));
  36. Data.Where(x => x.Value != null).ForEach(x => ModeChangeHandler += x.Value.ModeChangeEvent);
  37. SetMode(Mode.On);
  38. }
  39. #endregion Methods
  40. }
  41. }
  42. namespace OpenVIII.Fields.IGMData
  43. {
  44. public class FieldDebugControls : OpenVIII.IGMData.Base
  45. {
  46. #region Fields
  47. private const int totalrows = 6;
  48. #endregion Fields
  49. #region Properties
  50. public IGMDataItem.Text ClassicSpriteBatchMode { get => (IGMDataItem.Text)ITEM[4, 0]; protected set => ITEM[4, 0] = value; }
  51. public IGMDataItem.Text FieldName { get => (IGMDataItem.Text)ITEM[0, 0]; protected set => ITEM[0, 0] = value; }
  52. public IGMDataItem.Text FourceDump { get => (IGMDataItem.Text)ITEM[5, 0]; protected set => ITEM[5, 0] = value; }
  53. public IGMDataItem.Text PerspectiveQuadMode { get => (IGMDataItem.Text)ITEM[3, 0]; protected set => ITEM[3, 0] = value; }
  54. public IGMDataItem.Text QuadBG { get => (IGMDataItem.Text)ITEM[2, 0]; protected set => ITEM[2, 0] = value; }
  55. public IGMDataItem.Text WalkMesh { get => (IGMDataItem.Text)ITEM[1, 0]; protected set => ITEM[1, 0] = value; }
  56. public IGMDataItem.Text MouseLocationIn3D { get => (IGMDataItem.Text)ITEM[Count-1, 0]; protected set => ITEM[Count-1, 0] = value; }
  57. #endregion Properties
  58. #region Methods
  59. public static FieldDebugControls Create(Rectangle pos) => Create<FieldDebugControls>(totalrows+1, 1, new IGMDataItem.Box { Pos = pos }, 1, totalrows);
  60. public override bool Inputs()
  61. {
  62. Memory.IsMouseVisible = true;
  63. return base.Inputs();
  64. }
  65. public override void Inputs_Left()
  66. {
  67. if (CURSOR_SELECT == 0)
  68. {
  69. if (Memory.FieldHolder.FieldID > 0)
  70. Memory.FieldHolder.FieldID--;
  71. else
  72. Memory.FieldHolder.FieldID = checked((ushort)(Memory.FieldHolder.fields.Length - 1));
  73. Module.ResetField();
  74. }
  75. else skipsnd = true;
  76. base.Inputs_Left();
  77. }
  78. public override bool Inputs_OKAY()
  79. {
  80. int i = 0;
  81. if (CURSOR_SELECT == i++)
  82. Module.ResetField();
  83. else if (CURSOR_SELECT == i++)
  84. {
  85. Module.Toggles = Module.Toggles.Flip(Module._Toggles.WalkMesh);
  86. Refresh();
  87. }
  88. else if (CURSOR_SELECT == i++)
  89. {
  90. Module.Toggles = Module.Toggles.Flip(Module._Toggles.Quad);
  91. if (Module.Toggles.HasFlag(Module._Toggles.ClassicSpriteBatch))
  92. Module.Toggles = Module.Toggles.Flip(Module._Toggles.ClassicSpriteBatch);
  93. Refresh();
  94. }
  95. else if (CURSOR_SELECT == i++)
  96. {
  97. if (Module.Toggles.HasFlag(Module._Toggles.Quad))
  98. {
  99. Module.Toggles = Module.Toggles.Flip(Module._Toggles.Perspective);
  100. Refresh();
  101. }
  102. else skipsnd = true;
  103. }
  104. else if (CURSOR_SELECT == i++)
  105. {
  106. Module.Toggles = Module.Toggles.Flip(Module._Toggles.ClassicSpriteBatch);
  107. if (Module.Toggles.HasFlag(Module._Toggles.Quad))
  108. Module.Toggles = Module.Toggles.Flip(Module._Toggles.Quad);
  109. if (Module.Background.HasSpriteBatchTexturesLoaded)
  110. Refresh();
  111. else
  112. Module.ResetField();
  113. }
  114. else if (CURSOR_SELECT == i++)
  115. {
  116. Module.Toggles = Module.Toggles.Flip(Module._Toggles.DumpingData);
  117. Refresh();
  118. }
  119. else skipsnd = true;
  120. return base.Inputs_OKAY() || true;
  121. }
  122. public override void Inputs_Right()
  123. {
  124. if (CURSOR_SELECT == 0)
  125. {
  126. if (Memory.FieldHolder.FieldID < checked((ushort)(Memory.FieldHolder.fields.Length - 1)))
  127. Memory.FieldHolder.FieldID++;
  128. else
  129. Memory.FieldHolder.FieldID = 0;
  130. Module.ResetField();
  131. }
  132. else skipsnd = true;
  133. base.Inputs_Right();
  134. }
  135. public override void Refresh()
  136. {
  137. FieldName.Data = $"Field: { Memory.FieldHolder.FieldID} - { Memory.FieldHolder.GetString().ToUpper()}";
  138. BLANKS[0] = false;
  139. if (Module.Mod != Module.Field_mods.DISABLED)
  140. {
  141. WalkMesh.Data = $"Draw WalkMesh: {Module.Toggles.HasFlag(Module._Toggles.WalkMesh)}";
  142. BLANKS[1] = false;
  143. QuadBG.Data = $"Draw Quad BG: {Module.Toggles.HasFlag(Module._Toggles.Quad)}";
  144. BLANKS[2] = false;
  145. PerspectiveQuadMode.Data = $"Perspective for Quads: {Module.Toggles.HasFlag(Module._Toggles.Quad) && Module.Toggles.HasFlag(Module._Toggles.Perspective)}";
  146. if (Module.Toggles.HasFlag(Module._Toggles.Quad))
  147. {
  148. BLANKS[3] = false;
  149. PerspectiveQuadMode.FontColor = Font.ColorID.White;
  150. }
  151. else
  152. {
  153. BLANKS[3] = true;
  154. PerspectiveQuadMode.FontColor = Font.ColorID.Grey;
  155. }
  156. ClassicSpriteBatchMode.Data = $"Classic SpriteBatch: {Module.Toggles.HasFlag(Module._Toggles.ClassicSpriteBatch)}";
  157. BLANKS[4] = false;
  158. FourceDump.Data = $"Onload Dump Textures: {Module.Toggles.HasFlag(Module._Toggles.DumpingData)}";
  159. BLANKS[5] = false;
  160. }
  161. else
  162. {
  163. BLANKS[1] = true;
  164. BLANKS[2] = true;
  165. BLANKS[3] = true;
  166. BLANKS[4] = true;
  167. BLANKS[5] = true;
  168. }
  169. BLANKS[Count - 1] = true;
  170. base.Refresh();
  171. }
  172. public override bool Update()
  173. {
  174. if ((Module.Background?.MouseLocation ?? Vector3.Zero) != Vector3.Zero)
  175. MouseLocationIn3D.Data = $"Mouse Cords: {Module.Background?.MouseLocation}";
  176. else
  177. MouseLocationIn3D.Data = null;
  178. return base.Update();
  179. }
  180. protected override void Init()
  181. {
  182. base.Init();
  183. foreach (int i in Enumerable.Range(0, Count))
  184. {
  185. ITEM[i, 0] = new IGMDataItem.Text { Pos = SIZE[i] };
  186. }
  187. Cursor_Status = Cursor_Status.Enabled;
  188. MouseLocationIn3D = new IGMDataItem.Text { Pos = SIZE[Rows - 1], Scale = new Vector2(1.5f) };
  189. MouseLocationIn3D.Y = Y + Height+10;
  190. }
  191. protected override void InitShift(int i, int col, int row)
  192. {
  193. base.InitShift(i, col, row);
  194. SIZE[i].Inflate(-22, -8);
  195. SIZE[i].Offset(0, 12 + (-8 * row));
  196. }
  197. #endregion Methods
  198. }
  199. }