ModuleHandler.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. using Microsoft.Xna.Framework;
  2. using Microsoft.Xna.Framework.Input;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace FF8
  9. {
  10. public static class ModuleHandler
  11. {
  12. private static int module = Memory.module;
  13. private static int lastModule = Memory.module;
  14. public static async void Update(GameTime gameTime)
  15. {
  16. if (lastModule != module)
  17. {
  18. GC.Collect();
  19. GC.WaitForPendingFinalizers();
  20. lastModule = module;
  21. }
  22. module = Memory.module;
  23. //#if DEBUG
  24. if (Input.Button(Buttons.Back) || Input.Button(Buttons.Cancel))
  25. {
  26. Memory.module = Memory.MODULE_MAINMENU_DEBUG;
  27. Input.OverrideLockMouse = false;
  28. Input.CurrentMode = Input.MouseLockMode.Screen;
  29. }
  30. //#endif
  31. switch (module)
  32. {
  33. //doesn't need memory
  34. case Memory.MODULE_OVERTURE_DEBUG:
  35. case Memory.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 Memory.MODULE_BATTLE:
  56. module_battle.Update();
  57. break;
  58. case Memory.MODULE_BATTLE_DEBUG:
  59. Module_battle_debug.Update();
  60. break;
  61. case Memory.MODULE_MOVIETEST:
  62. Module_movie_test.Update();
  63. break;
  64. case Memory.MODULE_FIELD_DEBUG:
  65. Module_field_debug.Update();
  66. break;
  67. case Memory.MODULE_OVERTURE_DEBUG:
  68. Module_overture_debug.Update();
  69. break;
  70. case Memory.MODULE_MAINMENU_DEBUG:
  71. Module_main_menu_debug.Update();
  72. break;
  73. case Memory.MODULE_WORLD_DEBUG:
  74. Module_world_debug.Update();
  75. break;
  76. case Memory.MODULE_FACE_TEST:
  77. Module_face_test.Update();
  78. break;
  79. case Memory.MODULE_ICON_TEST:
  80. Module_icon_test.Update();
  81. break;
  82. case Memory.MODULE_CARD_TEST:
  83. Module_card_test.Update();
  84. break;
  85. }
  86. }
  87. public static void Draw(GameTime gameTime)
  88. {
  89. switch (module)
  90. {
  91. //doesn't need memory
  92. case Memory.MODULE_OVERTURE_DEBUG:
  93. case Memory.MODULE_MOVIETEST:
  94. break;
  95. default:
  96. //requires memory to be loaded.
  97. if ((Memory.InitTask != null) && (Memory.InitTask.IsCompleted == false ||
  98. Memory.InitTask.Status == TaskStatus.Running ||
  99. Memory.InitTask.Status == TaskStatus.WaitingToRun ||
  100. Memory.InitTask.Status == TaskStatus.WaitingForActivation))
  101. {
  102. //suppress draw in update but if draw happens before update, blank screen, and end here
  103. Memory.graphics.GraphicsDevice.Clear(Color.Black);
  104. return;
  105. }
  106. break;
  107. }
  108. switch (module)
  109. {
  110. case Memory.MODULE_BATTLE:
  111. module_battle.Draw();
  112. break;
  113. case Memory.MODULE_BATTLE_DEBUG:
  114. Module_battle_debug.Draw();
  115. break;
  116. case Memory.MODULE_MOVIETEST:
  117. Module_movie_test.Draw();
  118. break;
  119. case Memory.MODULE_FIELD_DEBUG:
  120. Module_field_debug.Draw();
  121. break;
  122. case Memory.MODULE_OVERTURE_DEBUG:
  123. Module_overture_debug.Draw();
  124. break;
  125. case Memory.MODULE_MAINMENU_DEBUG:
  126. Module_main_menu_debug.Draw();
  127. break;
  128. case Memory.MODULE_WORLD_DEBUG:
  129. Module_world_debug.Draw();
  130. break;
  131. case Memory.MODULE_FACE_TEST:
  132. Module_face_test.Draw();
  133. break;
  134. case Memory.MODULE_ICON_TEST:
  135. Module_icon_test.Draw();
  136. break;
  137. case Memory.MODULE_CARD_TEST:
  138. Module_card_test.Draw();
  139. break;
  140. }
  141. }
  142. public static void ResetBS()
  143. => Module_battle_debug.ResetState();
  144. }
  145. }