Exemplo n.º 1
0
    public void TransitionToNormal()
    {
        if (gameEnding)
        {
            return;
        }

        toNormalAudiosource.Play();
        transitioning   = Transitioning.ToNormal;
        transitionTimer = timeToTransition;
    }
Exemplo n.º 2
0
    public void TransitionToPanic()
    {
        if (gameEnding)
        {
            return;
        }

        toPanicAudiosource.Play();
        transitioning   = Transitioning.ToPanic;
        transitionTimer = timeToTransition;
    }
Exemplo n.º 3
0
    public void EndGame()
    {
        if (gameEnding)
        {
            return;
        }

        gameEnding    = true;
        transitioning = Transitioning.No;
        endGameAudioSource.Play();
        endGameSnapshot.TransitionTo(mixerTransitionTime);
    }
Exemplo n.º 4
0
 private void Update()
 {
     if (transitioning == Transitioning.ToPanic || transitioning == Transitioning.ToNormal)
     {
         transitionTimer -= Time.deltaTime;
         if (transitionTimer <= 0)
         {
             Transition();
             transitioning = Transitioning.No;
         }
     }
 }
Exemplo n.º 5
0
    public void Win()
    {
        transitioning = Transitioning.DEFAULT;

        audio_source_1.Stop();
        audio_source_2.Stop();

        audio_source_1.Play();
        audio_source_2.Play();

        Invoke("ResetDefaultSong", default_song.length);
        Invoke("ResetBattleSong", battle_song.length);
    }
Exemplo n.º 6
0
        /// <summary>
        ///     Execute the supplied <paramref name="transition" />.
        /// </summary>
        /// <param name="transition">
        ///     Transition to be executed.
        /// </param>
        /// <returns>
        ///     <see langword="true" /> if a transition to a different state was performed
        ///     and the new state is not the exit state,
        ///     <see langword="false" /> if current state remains current.
        /// </returns>
        /// <remarks>
        ///     The method returns <see langword="false" /> when transitioning to the exit state
        ///     to prevent the state machine from looping directly over the enter state in the same
        ///     update tick to allow eventual parent state machines to move on to the next state.
        /// </remarks>
        private bool Execute([NotNull] ITransition transition)
        {
            IState targetState = transition.TargetState;

            if (targetState == _currentState)
            {
                return(false);
            }

            _currentState.Exit();

            transition.Execute(_currentState);
            Transitioning?.Invoke(_currentState, targetState);

            _currentState = targetState;
            _transitions.TryGetValue(_currentState, out _currentTransitions);

            _currentState.Enter();

            _completed = targetState == DefaultState.Exit;
            return(!_completed);
        }
Exemplo n.º 7
0
    // called second
    void OnSceneLoaded(Scene scene, LoadSceneMode mode)
    {
        Debug.Log("OnSceneLoaded: " + scene.name);

        if (scene.name == "EndScene" || scene.name == "WinScene")
        {
            transitioning = Transitioning.DEFAULT;

            audio_source_1.Stop();
            audio_source_2.Stop();

            audio_source_1.Play();
            audio_source_2.Play();

            Invoke("ResetDefaultSong", default_song.length);
            Invoke("ResetBattleSong", battle_song.length);
        }

        if (scene.name == "GameOver")
        {
            transitioning = Transitioning.SILENCE;
        }

        /*
         * if(scene.name == "SaloonScene")
         * {
         *  /*
         *  //SelectSong(SongList.BATTLE);
         *  //audio_source.Play();
         *
         *
         *  //play battle song
         *  //audio_source_1.volume = 0;
         *  //audio_source_2.volume = 1;
         *  transitioning = Transitioning.BATTLE;
         * }
         * //*/
    }
Exemplo n.º 8
0
        /// <summary>
        /// Attempt to trigger a transition with the specified token
        /// </summary>
        /// <param name="token">The token to trigger</param>
        /// <exception cref="ArgumentOutOfRangeException">Token does not exist</exception>
        /// <exception cref="ArgumentOutOfRangeException">No valid transition exists</exception>
        /// <exception cref="ArgumentException">Cannot perform a Pop</exception>
        public void DoTransition(string token)
        {
            // First check that we have that token defined
            if (!Tokens.Contains(token))
            {
                throw new ArgumentOutOfRangeException(nameof(token), token, "Given token is not defined.");
            }

            // And that we have a transition for this token
            if (!Transitions.Any(t => t.Token == token && t.From == CurrentState))
            {
                throw new ArgumentOutOfRangeException(nameof(token), token, $"No transition exists for {CurrentState} + {token}.");
            }

            // Get list of possible transitions...
            var possible = Transitions.Where(t => t.From == CurrentState && t.Token == token).ToList();


            // Check validity of transition
            do
            {
                var transition = possible.MinBy(t =>
                {
                    if (t.TransitionMode != Mode.Pop)
                    {
                        return(0);
                    }
                    var distanceTo = Stack.IndexOf(t.To);
                    return(distanceTo == -1 ? int.MaxValue : distanceTo);
                });
                Transitioning?.Invoke(transition);
                CurrentState.Leave();
                switch (transition.TransitionMode)
                {
                case Mode.Pop:
                    var pop = Stack.IndexOf(transition.To);
                    if (pop == -1)
                    {
                        possible.Remove(transition);
                        continue;
                    }
                    for (var i = 0; i < pop; i++)
                    {
                        Stack.RemoveAt(0);
                    }
                    break;

                case Mode.Push:
                    transition = Transitions.First(t => t.Token == token && t.From == CurrentState);
                    Stack.Insert(0, transition.To);
                    break;

                case Mode.PushPop:
                    transition = Transitions.First(t => t.Token == token && t.From == CurrentState);
                    if (Stack.Count > 0)
                    {
                        Stack.RemoveAt(0);
                    }
                    Stack.Insert(0, transition.To);
                    break;
                }
                CurrentState?.Enter();
                Transitioned?.Invoke(transition);
                return;
            } while (Transitions.Count > 0);
        }
Exemplo n.º 9
0
    private void FixedUpdate()
    {
        //redo as switch?
        if (transitioning != Transitioning.NONE)
        {
            if (transitioning == Transitioning.DEFAULT)
            {
                audio_source_1.volume += 0.012f;
                audio_source_2.volume -= 0.012f;

                if (audio_source_1.volume > 0.99f)
                {
                    transitioning = Transitioning.NONE;
                }
            }
            else if (transitioning == Transitioning.BATTLE)
            {
                audio_source_1.volume -= 0.012f;
                audio_source_2.volume += 0.012f;

                if (audio_source_2.volume > 0.99f)
                {
                    transitioning = Transitioning.NONE;
                }
            }
            else if (transitioning == Transitioning.KICKDOOR)//Kicking open the saloon door
            {
                audio_source_1.volume -= 0.016f;

                if (audio_source_2.volume > 0.99f)
                {
                    audio_source_1.volume = 0f;
                    transitioning         = Transitioning.NONE;
                }
            }
            else if (transitioning == Transitioning.SILENCE)//Kicking open the saloon door
            {
                Debug.Log("transitioning: silence");
                audio_source_1.volume -= 0.02f;
                audio_source_2.volume -= 0.02f;

                if (audio_source_1.volume < 0.02f)
                {
                    audio_source_1.volume = 0f;
                }

                if (audio_source_2.volume < 0.02f)
                {
                    audio_source_2.volume = 0f;
                }

                if (audio_source_1.volume < 0.02f && audio_source_2.volume < 0.02f)
                {
                    transitioning = Transitioning.NONE;
                }
            }
        }

        if (Input.GetKeyDown(KeyCode.C))
        {
            transitioning = Transitioning.DEFAULT;
        }

        if (Input.GetKeyDown(KeyCode.V))
        {
            transitioning = Transitioning.BATTLE;
        }                   //*/
    }
Exemplo n.º 10
0
 public void ForceStartBattleTheme()
 {
     transitioning = Transitioning.KICKDOOR;
     Invoke("KickTheDoor", 0.45f);
     audio_source_door.PlayDelayed(0.05f);
 }
Exemplo n.º 11
0
    public void OnIntroSkip()
    {
        CancelInvoke();

        transitioning = Transitioning.BATTLE;
    }