public PageState <TPage> ReduceReset(PageState <TPage> pageState, SceneState <TScene> sceneState, ResetAction action) { pageState.Stack.Clear(); SceneDuck <TScene> .Remove(sceneState, config.GetPageScenes()); pageState.SetStateChanged(); return(pageState); }
public void ResetTest() { var reducer = new SceneDuck <SampleScene> .Reducer(); var state = new SceneState <SampleScene>(); // Adjust { var result = reducer.Reduce( state, SceneDuck <SampleScene> .ActionCreator.Adjust(new[] { SampleScene.Scene1 }) ); Assert.AreEqual(2, result.ActiveMap.Count); Assert.IsTrue(result.ActiveMap[SampleScene.Scene1]); Assert.IsFalse(result.ActiveMap[SampleScene.Scene2]); } // Add { var result = reducer.Reduce( state, SceneDuck <SampleScene> .ActionCreator.Add(new[] { SampleScene.Scene1 }) ); Assert.AreEqual(2, result.ActiveMap.Count); Assert.IsTrue(result.ActiveMap[SampleScene.Scene1]); Assert.IsFalse(result.ActiveMap[SampleScene.Scene2]); result = reducer.Reduce( state, SceneDuck <SampleScene> .ActionCreator.Add(new[] { SampleScene.Scene2 }) ); Assert.AreEqual(2, result.ActiveMap.Count); Assert.IsTrue(result.ActiveMap[SampleScene.Scene1]); Assert.IsTrue(result.ActiveMap[SampleScene.Scene2]); } // Remove { var result = reducer.Reduce( state, SceneDuck <SampleScene> .ActionCreator.Remove(new[] { SampleScene.Scene1 }) ); Assert.AreEqual(2, result.ActiveMap.Count); Assert.IsFalse(result.ActiveMap[SampleScene.Scene1]); Assert.IsTrue(result.ActiveMap[SampleScene.Scene2]); result = reducer.Reduce( state, SceneDuck <SampleScene> .ActionCreator.Remove(new[] { SampleScene.Scene2 }) ); Assert.AreEqual(2, result.ActiveMap.Count); Assert.IsFalse(result.ActiveMap[SampleScene.Scene1]); Assert.IsFalse(result.ActiveMap[SampleScene.Scene2]); } }
public PageState <TPage> ReduceAdjust(PageState <TPage> pageState, SceneState <TScene> sceneState) { SceneDuck <TScene> .Remove(sceneState, config.GetPageScenes()); if (pageState.Stack.Any()) { var page = pageState.Current.Page; if (!config.PageMap.ContainsKey(page)) { Debug.LogWarning( "Page adjust failed. Missing configuration in SceneConfig.PageMap: " + page); } var scenes = config.PageMap[page]; SceneDuck <TScene> .Add(sceneState, scenes); } sceneState.SetStateChanged(); return(pageState); }