コード例 #1
0
        public void StateTransitionRule_WhenInvalid_ReturnsFalse()
        {
            // ARRANGE
            GameStateTransition nullToIntro       = new GameStateTransition(GameState.NullState, GameState.Intro);
            GameStateTransition introToMainMenu   = new GameStateTransition(GameState.Intro, GameState.MainMenu);
            GameStateTransition mainMenuToNewGame = new GameStateTransition(GameState.MainMenu, GameState.NewGame);
            GameStateTransition actualTransition  = new GameStateTransition(GameState.NullState, GameState.MainMenu);

            // ACT
            var transitionNullToIntro       = new StateTransitionRule(nullToIntro);
            var transitionIntroToMainMenu   = new StateTransitionRule(introToMainMenu);
            var transitionMainMenuToNewGame = new StateTransitionRule(mainMenuToNewGame);

            // Create the rule engine and add the rules
            var stateTransitionRuleEngine = new RuleEngine <GameStateTransition>();

            stateTransitionRuleEngine.ActualValue = actualTransition;

            stateTransitionRuleEngine.Add(transitionNullToIntro);
            stateTransitionRuleEngine.Add(transitionIntroToMainMenu);
            stateTransitionRuleEngine.Add(transitionMainMenuToNewGame);

            // Get the result
            var result = stateTransitionRuleEngine.MatchAny();

            // ASSERT
            Assert.IsFalse(result);
        }
コード例 #2
0
        public void StateTransitionRule_WhenValid_ReturnsTrue()
        {
            // ARRANGE
            GameStateTransition nullToIntro = new GameStateTransition(GameState.NullState, GameState.Intro);
            GameStateTransition introToMainMenu = new GameStateTransition(GameState.Intro, GameState.MainMenu);
            GameStateTransition mainMenuToNewGame = new GameStateTransition(GameState.MainMenu, GameState.NewGame);
            GameStateTransition actualTransition = new GameStateTransition(GameState.Intro, GameState.MainMenu);

            // ACT
            var transitionNullToIntro = new StateTransitionRule(nullToIntro);
            var transitionIntroToMainMenu = new StateTransitionRule(introToMainMenu);
            var transitionMainMenuToNewGame = new StateTransitionRule(mainMenuToNewGame);

            // Create the rule engine and add the rules
            var stateTransitionRuleEngine = new RuleEngine<GameStateTransition>();
            stateTransitionRuleEngine.ActualValue = actualTransition;

            stateTransitionRuleEngine.Add(transitionNullToIntro);
            stateTransitionRuleEngine.Add(transitionIntroToMainMenu);
            stateTransitionRuleEngine.Add(transitionMainMenuToNewGame);

            // Get the result
            var result = stateTransitionRuleEngine.MatchAny();

            // ASSERT
            Assert.IsTrue(result);
        }
コード例 #3
0
        private void OnIntroBegan(GameStateTransition state)
        {
            // Get Component
            var text     = GetComponentInChildren <Text>();
            var textRect = text.GetComponent <RectTransform>();

            // Animation sequence
            Sequence sequence = DOTween.Sequence();

            sequence.Append(textRect.DOLocalMoveX(800, 0));
            sequence.Append(textRect.DOLocalMoveX(0, 0.4f));
            sequence.Append(textRect.DOLocalMoveX(0, 1));
            sequence.Append(textRect.DOLocalMoveX(-800, 0.4f));
            sequence.AppendCallback(state.Finish);
            sequence.SetUpdate(UpdateType.Normal, true);
        }
コード例 #4
0
        private void OnRoundIntro(GameStateTransition obj)
        {
            GameObject sfx = PrefabFactory.Pop("sfxstartup");

            this.DelayAction(4f, () => PrefabFactory.Push("sfxstartup", sfx));
        }
コード例 #5
0
 private void OnPauseExit(GameStateTransition obj) => canvas.DOFade(0, 0.4f).SetUpdate(UpdateType.Normal, true).OnComplete(() =>
 {
     gameObject.SetActive(false);
     obj.ExitFinish();
 });
コード例 #6
0
 private void OnPauseEnter(GameStateTransition obj)
 {
     state = obj;
     gameObject.SetActive(true);
     canvas.DOFade(1, 0.4f).SetUpdate(UpdateType.Normal, true).OnComplete(obj.EnterFinish);
 }
コード例 #7
0
 private void OnResultEnter(GameStateTransition obj)
 {
     state = obj;
     gameObject.SetActive(true);
     canvas.DOFade(1, 1f).SetDelay(0.5f).SetUpdate(UpdateType.Normal, true).OnComplete(obj.EnterFinish);
 }