ModuleHandler.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. using Microsoft.Xna.Framework;
  2. using OpenVIII.Encoding.Tags;
  3. using System;
  4. using System.Threading.Tasks;
  5. namespace OpenVIII
  6. {
  7. public static class ModuleHandler
  8. {
  9. private static Module module = Memory.Module;
  10. private static Module lastModule = Memory.Module;
  11. public static async void Update(GameTime gameTime)
  12. {
  13. if (lastModule != module)
  14. {
  15. //got stuck on this once had to force close.
  16. //GC.Collect();
  17. //GC.WaitForPendingFinalizers();
  18. lastModule = module;
  19. }
  20. module = Memory.Module;
  21. //#if DEBUG
  22. if (Input2.DelayedButton(FF8TextTagKey.Reset))// || Input2.DelayedButton(FF8TextTagKey.Cancel))
  23. {
  24. if (Memory.Module != Module.MainMenuDebug)// && Memory.Module != Module.BattleDebug)
  25. {
  26. Memory.Module = Module.MainMenuDebug;
  27. InputMouse.Mode = MouseLockMode.Screen;
  28. }
  29. }
  30. //#endif
  31. switch (module)
  32. {
  33. //doesn't need memory
  34. case Module.OvertureDebug:
  35. case Module.MovieTest:
  36. break;
  37. default:
  38. //requires memory to be loaded.
  39. if ((Memory.InitTask != null) && (Memory.InitTask.IsCompleted == false ||
  40. Memory.InitTask.Status == TaskStatus.Running ||
  41. Memory.InitTask.Status == TaskStatus.WaitingToRun ||
  42. Memory.InitTask.Status == TaskStatus.WaitingForActivation))
  43. {
  44. //task is still running loading assets blank screen and wait.
  45. Memory.SuppressDraw = true;
  46. await Memory.InitTask;
  47. //fade in doesn't happen because time was set before the await.
  48. //ending here causes update to be run again with new time
  49. return;
  50. }
  51. break;
  52. }
  53. switch (module)
  54. {
  55. case Module.Battle:
  56. ModuleBattle.Update();
  57. break;
  58. case Module.BattleDebug:
  59. Menu.UpdateOnce();
  60. ModuleBattleDebug.Update();
  61. break;
  62. case Module.MovieTest:
  63. ModuleMovieTest.Update();
  64. break;
  65. case Module.FieldDebug:
  66. Fields.Module.Update();
  67. break;
  68. case Module.OvertureDebug:
  69. Module_overture_debug.Update();
  70. break;
  71. case Module.MainMenuDebug:
  72. Menu.UpdateOnce();
  73. Menu.Module.Update();
  74. break;
  75. case Module.WorldDebug:
  76. Module_world_debug.Update(gameTime);
  77. break;
  78. case Module.FaceTest:
  79. Module_face_test.Update();
  80. break;
  81. case Module.IconTest:
  82. Module_icon_test.Update();
  83. break;
  84. case Module.CardTest:
  85. Module_card_test.Update();
  86. break;
  87. case Module.FieldModelTest:
  88. Fields.ModuleFieldObjectTest.Update();
  89. break;
  90. }
  91. }
  92. public static void Draw(GameTime gameTime)
  93. {
  94. switch (module)
  95. {
  96. //doesn't need memory
  97. case Module.OvertureDebug:
  98. case Module.MovieTest:
  99. break;
  100. default:
  101. //requires memory to be loaded.
  102. if ((Memory.InitTask != null) && (Memory.InitTask.IsCompleted == false ||
  103. Memory.InitTask.Status == TaskStatus.Running ||
  104. Memory.InitTask.Status == TaskStatus.WaitingToRun ||
  105. Memory.InitTask.Status == TaskStatus.WaitingForActivation))
  106. {
  107. //suppress draw in update but if draw happens before update, blank screen, and end here
  108. Memory.Graphics.GraphicsDevice.Clear(Color.Black);
  109. return;
  110. }
  111. break;
  112. }
  113. switch (module)
  114. {
  115. case Module.Battle:
  116. ModuleBattle.Draw();
  117. break;
  118. case Module.BattleDebug:
  119. ModuleBattleDebug.Draw();
  120. break;
  121. case Module.MovieTest:
  122. ModuleMovieTest.Draw();
  123. break;
  124. case Module.FieldDebug:
  125. Fields.Module.Draw();
  126. break;
  127. case Module.OvertureDebug:
  128. Module_overture_debug.Draw();
  129. break;
  130. case Module.MainMenuDebug:
  131. Menu.Module.Draw();
  132. break;
  133. case Module.WorldDebug:
  134. Module_world_debug.Draw();
  135. break;
  136. case Module.FaceTest:
  137. Module_face_test.Draw();
  138. break;
  139. case Module.IconTest:
  140. Module_icon_test.Draw();
  141. break;
  142. case Module.CardTest:
  143. Module_card_test.Draw();
  144. break;
  145. case Module.BattleSwirl:
  146. BattleSwirl.Draw();
  147. break;
  148. case Module.FieldModelTest:
  149. Fields.ModuleFieldObjectTest.Draw();
  150. break;
  151. }
  152. }
  153. public static void ResetBS()
  154. => ModuleBattleDebug.ResetState();
  155. }
  156. }