| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- using Microsoft.Xna.Framework;
- using Microsoft.Xna.Framework.Input;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace FF8
- {
- public static class ModuleHandler
- {
- private static int module = Memory.module;
- private static int lastModule = Memory.module;
- public static async void Update(GameTime gameTime)
- {
- if (lastModule != module)
- {
- GC.Collect();
- GC.WaitForPendingFinalizers();
- lastModule = module;
- }
- module = Memory.module;
- //#if DEBUG
- if (Input.Button(Buttons.Back) || Input.Button(Buttons.Cancel))
- {
- Memory.module = Memory.MODULE_MAINMENU_DEBUG;
- Input.OverrideLockMouse = false;
- Input.CurrentMode = Input.MouseLockMode.Screen;
- }
- //#endif
- switch (module)
- {
- //doesn't need memory
- case Memory.MODULE_OVERTURE_DEBUG:
- case Memory.MODULE_MOVIETEST:
- break;
- default:
- //requires memory to be loaded.
- if ((Memory.InitTask != null) && (Memory.InitTask.IsCompleted == false ||
- Memory.InitTask.Status == TaskStatus.Running ||
- Memory.InitTask.Status == TaskStatus.WaitingToRun ||
- Memory.InitTask.Status == TaskStatus.WaitingForActivation))
- {
- //task is still running loading assets blank screen and wait.
- Memory.SuppressDraw = true;
- await Memory.InitTask;
- //fade in doesn't happen because time was set before the await.
- //ending here causes update to be run again with new time
- return;
- }
- break;
- }
- switch (module)
- {
- case Memory.MODULE_BATTLE:
- module_battle.Update();
- break;
- case Memory.MODULE_BATTLE_DEBUG:
- Module_battle_debug.Update();
- break;
- case Memory.MODULE_MOVIETEST:
- Module_movie_test.Update();
- break;
- case Memory.MODULE_FIELD_DEBUG:
- Module_field_debug.Update();
- break;
- case Memory.MODULE_OVERTURE_DEBUG:
- Module_overture_debug.Update();
- break;
- case Memory.MODULE_MAINMENU_DEBUG:
- Module_main_menu_debug.Update();
- break;
- case Memory.MODULE_WORLD_DEBUG:
- Module_world_debug.Update();
- break;
- case Memory.MODULE_FACE_TEST:
- Module_face_test.Update();
- break;
- case Memory.MODULE_ICON_TEST:
- Module_icon_test.Update();
- break;
- case Memory.MODULE_CARD_TEST:
- Module_card_test.Update();
- break;
- }
- }
- public static void Draw(GameTime gameTime)
- {
- switch (module)
- {
- //doesn't need memory
- case Memory.MODULE_OVERTURE_DEBUG:
- case Memory.MODULE_MOVIETEST:
- break;
- default:
- //requires memory to be loaded.
- if ((Memory.InitTask != null) && (Memory.InitTask.IsCompleted == false ||
- Memory.InitTask.Status == TaskStatus.Running ||
- Memory.InitTask.Status == TaskStatus.WaitingToRun ||
- Memory.InitTask.Status == TaskStatus.WaitingForActivation))
- {
- //suppress draw in update but if draw happens before update, blank screen, and end here
- Memory.graphics.GraphicsDevice.Clear(Color.Black);
- return;
- }
- break;
- }
- switch (module)
- {
- case Memory.MODULE_BATTLE:
- module_battle.Draw();
- break;
- case Memory.MODULE_BATTLE_DEBUG:
- Module_battle_debug.Draw();
- break;
- case Memory.MODULE_MOVIETEST:
- Module_movie_test.Draw();
- break;
- case Memory.MODULE_FIELD_DEBUG:
- Module_field_debug.Draw();
- break;
- case Memory.MODULE_OVERTURE_DEBUG:
- Module_overture_debug.Draw();
- break;
- case Memory.MODULE_MAINMENU_DEBUG:
- Module_main_menu_debug.Draw();
- break;
- case Memory.MODULE_WORLD_DEBUG:
- Module_world_debug.Draw();
- break;
- case Memory.MODULE_FACE_TEST:
- Module_face_test.Draw();
- break;
- case Memory.MODULE_ICON_TEST:
- Module_icon_test.Draw();
- break;
- case Memory.MODULE_CARD_TEST:
- Module_card_test.Draw();
- break;
- }
- }
- public static void ResetBS()
- => Module_battle_debug.ResetState();
- }
- }
|