Ejemplo n.º 1
0
            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]);
            }
        }
Ejemplo n.º 3
0
            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);
            }