//Called during GameController.Destroy(); private void GameController_OnDestroying(GameController instance) { Debug.Log("GameController.Destroy()"); GameController.OnDestroying -= GameController_OnDestroying; AudioController.Destroy(); InputController.Destroy(); ResourceController.Destroy(); TickController.Destroy(); ViewController.Destroy(); _unpausableUpdateSystems.DeactivateReactiveSystems(); Pools.pool.Reset(); DestroyPoolObserver(); SceneManager.LoadScene(SceneManager.GetActiveScene().name); }
//Called during GameController.Destroy(); private void GameController_OnDestroying(GameController instance) { Debug.Log("GameController.Destroy()"); GameController.OnDestroying -= GameController_OnDestroying; if (AudioController.IsInstantiated()) { AudioController.Destroy(); } if (InputController.IsInstantiated()) { InputController.Destroy(); } if (ViewController.IsInstantiated()) { ViewController.Destroy(); } if (TickController.IsInstantiated()) { TickController.Destroy(); } if (ResourceController.IsInstantiated()) { ResourceController.Destroy(); } _pausableUpdateSystems.DeactivateReactiveSystems(); _unpausableUpdateSystems.DeactivateReactiveSystems(); Pools.pool.Reset(); DestroyPoolObserver(); SceneManager.LoadScene(SceneManager.GetActiveScene().name); }
void when_systems() { Pool pool = null; before = () => { pool = new Pool(10); }; context["fixtures"] = () => { it["initializes InitializeSystemSpy"] = () => { var initializeSystem = new InitializeSystemSpy(); initializeSystem.initialized.should_be_false(); initializeSystem.Initialize(); initializeSystem.initialized.should_be_true(); }; it["executes ExecuteSystemSpy"] = () => { var initializeSystem = new ExecuteSystemSpy(); initializeSystem.executed.should_be_false(); initializeSystem.Execute(); initializeSystem.executed.should_be_true(); }; it["initializes and executes InitializeExecuteSystemSpy"] = () => { var initializeSystem = new InitializeExecuteSystemSpy(); initializeSystem.initialized.should_be_false(); initializeSystem.executed.should_be_false(); initializeSystem.Initialize(); initializeSystem.Execute(); initializeSystem.initialized.should_be_true(); initializeSystem.executed.should_be_true(); }; it["executes ReactiveSystemSpy"] = () => { var system = createReactiveSystem(pool); var spy = (ReactiveSubSystemSpy)system.subsystem; spy.didExecute.should_be(0); spy.initialized.should_be_false(); system.Execute(); spy.didExecute.should_be(1); spy.initialized.should_be_false(); }; }; context["systems"] = () => { Systems systems = null; before = () => { systems = new Systems(); }; it["returns systems when adding system"] = () => { systems.Add(new InitializeSystemSpy()).should_be_same(systems); }; it["initializes IInitializeSystem"] = () => { var system = new InitializeSystemSpy(); systems.Add(system); systems.Initialize(); system.initialized.should_be_true(); }; it["executes IExecuteSystem"] = () => { var system = new ExecuteSystemSpy(); systems.Add(system); systems.Execute(); system.executed.should_be_true(); }; it["initializes and executes IInitializeSystem, IExecuteSystem"] = () => { var system = new InitializeExecuteSystemSpy(); systems.Add(system); systems.Initialize(); systems.Execute(); system.initialized.should_be_true(); system.executed.should_be_true(); }; it["initializes and executes ReactiveSystem"] = () => { var system = createReactiveSystem(pool); systems.Add(system); systems.Initialize(); systems.Execute(); systems.Execute(); var spy = (ReactiveSubSystemSpy)system.subsystem; spy.didExecute.should_be(1); spy.initialized.should_be_true(); }; it["clears reactive systems"] = () => { var system = createReactiveSystem(pool); systems.Add(system); systems.Initialize(); systems.ClearReactiveSystems(); systems.Execute(); var spy = (ReactiveSubSystemSpy)system.subsystem; spy.didExecute.should_be(0); spy.initialized.should_be_true(); }; it["clears reactive systems recursively"] = () => { var system = createReactiveSystem(pool); systems.Add(system); var parentSystems = new Systems(); parentSystems.Add(systems); parentSystems.Initialize(); parentSystems.ClearReactiveSystems(); parentSystems.Execute(); var spy = (ReactiveSubSystemSpy)system.subsystem; spy.didExecute.should_be(0); spy.initialized.should_be_true(); }; it["deactivates reactive systems"] = () => { var system = createReactiveSystem(pool); systems.Add(system); systems.Initialize(); systems.DeactivateReactiveSystems(); systems.Execute(); var spy = (ReactiveSubSystemSpy)system.subsystem; spy.didExecute.should_be(0); spy.initialized.should_be_true(); }; it["deactivates reactive systems recursively"] = () => { var system = createReactiveSystem(pool); systems.Add(system); var parentSystems = new Systems(); parentSystems.Add(systems); parentSystems.Initialize(); parentSystems.DeactivateReactiveSystems(); parentSystems.Execute(); var spy = (ReactiveSubSystemSpy)system.subsystem; spy.didExecute.should_be(0); spy.initialized.should_be_true(); }; it["activates reactive systems"] = () => { var system = createReactiveSystem(pool); systems.Add(system); systems.Initialize(); systems.DeactivateReactiveSystems(); systems.ActivateReactiveSystems(); systems.Execute(); var spy = (ReactiveSubSystemSpy)system.subsystem; spy.didExecute.should_be(0); spy.initialized.should_be_true(); pool.CreateEntity().AddComponentA(); systems.Execute(); spy.didExecute.should_be(1); }; it["activates reactive systems recursively"] = () => { var system = createReactiveSystem(pool); systems.Add(system); var parentSystems = new Systems(); parentSystems.Add(systems); parentSystems.Initialize(); parentSystems.DeactivateReactiveSystems(); parentSystems.ActivateReactiveSystems(); parentSystems.Execute(); var spy = (ReactiveSubSystemSpy)system.subsystem; spy.didExecute.should_be(0); spy.initialized.should_be_true(); pool.CreateEntity().AddComponentA(); systems.Execute(); spy.didExecute.should_be(1); }; }; }
void when_systems() { Contexts contexts = null; before = () => { contexts = new Contexts { test = new Context(10) }; }; context["fixtures"] = () => { it["initializes InitializeSystemSpy"] = () => { var system = new InitializeSystemSpy(); system.didInitialize.should_be(0); system.Initialize(); system.didInitialize.should_be(1); }; it["executes ExecuteSystemSpy"] = () => { var system = new ExecuteSystemSpy(); system.didExecute.should_be(0); system.Execute(); system.didExecute.should_be(1); }; it["cleans up CleanupSystemSpy"] = () => { var system = new CleanupSystemSpy(); system.didCleanup.should_be(0); system.Cleanup(); system.didCleanup.should_be(1); }; it["tears down TearDownSystemSpy"] = () => { var system = new TearDownSystemSpy(); system.didTearDown.should_be(0); system.TearDown(); system.didTearDown.should_be(1); }; it["initializes, executes, cleans up and tears down system"] = () => { var system = new ReactiveSystemSpy(contexts.test.CreateCollector(Matcher.AllOf(CID.ComponentA))); contexts.test.CreateEntity().AddComponentA(); system.didInitialize.should_be(0); system.Initialize(); system.didInitialize.should_be(1); system.didExecute.should_be(0); system.Execute(); system.didExecute.should_be(1); system.didCleanup.should_be(0); system.Cleanup(); system.didCleanup.should_be(1); system.didTearDown.should_be(0); system.TearDown(); system.didTearDown.should_be(1); }; it["executes ReactiveSystemSpy"] = () => { var system = createReactiveSystem(contexts); system.Execute(); system.entities.Length.should_be(1); }; }; context["systems"] = () => { Systems systems = null; before = () => { systems = new Systems(); }; it["returns systems when adding system"] = () => { systems.Add(new InitializeSystemSpy()).should_be_same(systems); }; it["initializes IInitializeSystem"] = () => { var system = new InitializeSystemSpy(); systems.Add(system); systems.Initialize(); system.didInitialize.should_be(1); }; it["executes IExecuteSystem"] = () => { var system = new ExecuteSystemSpy(); systems.Add(system); systems.Execute(); system.didExecute.should_be(1); }; it["wraps IReactiveSystem in a ReactiveSystem"] = () => { var system = new ReactiveSystemSpy(contexts.test.CreateCollector(Matcher.AllOf(CID.ComponentA))); systems.Add(system); contexts.test.CreateEntity().AddComponentA(); systems.Execute(); system.didExecute.should_be(1); }; it["adds ReactiveSystem"] = () => { var system = new ReactiveSystemSpy(contexts.test.CreateCollector(Matcher.AllOf(CID.ComponentA))); systems.Add(system); contexts.test.CreateEntity().AddComponentA(); systems.Execute(); system.didExecute.should_be(1); }; it["cleans up ICleanupSystem"] = () => { var system = new CleanupSystemSpy(); systems.Add(system); systems.Cleanup(); system.didCleanup.should_be(1); }; it["initializes, executes, cleans up and tears down InitializeExecuteCleanupTearDownSystemSpy"] = () => { var system = new ReactiveSystemSpy(contexts.test.CreateCollector(Matcher.AllOf(CID.ComponentA))); contexts.test.CreateEntity().AddComponentA(); systems.Add(system); system.didInitialize.should_be(0); systems.Initialize(); system.didInitialize.should_be(1); system.didExecute.should_be(0); systems.Execute(); system.didExecute.should_be(1); system.didCleanup.should_be(0); systems.Cleanup(); system.didCleanup.should_be(1); system.didTearDown.should_be(0); systems.TearDown(); system.didTearDown.should_be(1); }; it["initializes, executes, cleans up and tears down ReactiveSystem"] = () => { var system = createReactiveSystem(contexts); systems.Add(system); system.didInitialize.should_be(0); systems.Initialize(); system.didInitialize.should_be(1); system.didExecute.should_be(0); systems.Execute(); systems.Execute(); system.didExecute.should_be(1); system.didCleanup.should_be(0); systems.Cleanup(); system.didCleanup.should_be(1); system.didTearDown.should_be(0); systems.TearDown(); system.didTearDown.should_be(1); }; it["initializes, executes, cleans up and tears down systems recursively"] = () => { var system = createReactiveSystem(contexts); systems.Add(system); var parentSystems = new Systems(); parentSystems.Add(systems); system.didInitialize.should_be(0); parentSystems.Initialize(); system.didInitialize.should_be(1); system.didExecute.should_be(0); parentSystems.Execute(); parentSystems.Execute(); system.didExecute.should_be(1); system.didCleanup.should_be(0); parentSystems.Cleanup(); system.didCleanup.should_be(1); system.didTearDown.should_be(0); parentSystems.TearDown(); system.didTearDown.should_be(1); }; it["clears reactive systems"] = () => { var system = createReactiveSystem(contexts); systems.Add(system); systems.Initialize(); system.didInitialize.should_be(1); systems.ClearReactiveSystems(); systems.Execute(); system.didExecute.should_be(0); }; it["clears reactive systems recursively"] = () => { var system = createReactiveSystem(contexts); systems.Add(system); var parentSystems = new Systems(); parentSystems.Add(systems); parentSystems.Initialize(); system.didInitialize.should_be(1); parentSystems.ClearReactiveSystems(); parentSystems.Execute(); system.didExecute.should_be(0); }; it["deactivates reactive systems"] = () => { var system = createReactiveSystem(contexts); systems.Add(system); systems.Initialize(); system.didInitialize.should_be(1); systems.DeactivateReactiveSystems(); systems.Execute(); system.didExecute.should_be(0); }; it["deactivates reactive systems recursively"] = () => { var system = createReactiveSystem(contexts); systems.Add(system); var parentSystems = new Systems(); parentSystems.Add(systems); parentSystems.Initialize(); system.didInitialize.should_be(1); parentSystems.DeactivateReactiveSystems(); parentSystems.Execute(); system.didExecute.should_be(0); }; it["activates reactive systems"] = () => { var system = createReactiveSystem(contexts); systems.Add(system); systems.Initialize(); system.didInitialize.should_be(1); systems.DeactivateReactiveSystems(); systems.ActivateReactiveSystems(); systems.Execute(); system.didExecute.should_be(0); contexts.test.CreateEntity().AddComponentA(); systems.Execute(); system.didExecute.should_be(1); }; it["activates reactive systems recursively"] = () => { var system = createReactiveSystem(contexts); systems.Add(system); var parentSystems = new Systems(); parentSystems.Add(systems); parentSystems.Initialize(); system.didInitialize.should_be(1); parentSystems.DeactivateReactiveSystems(); parentSystems.ActivateReactiveSystems(); parentSystems.Execute(); system.didExecute.should_be(0); contexts.test.CreateEntity().AddComponentA(); systems.Execute(); system.didExecute.should_be(1); }; }; }