Пример #1
0
        private IEnumerator EndLevel()
        {
            var player = GameObject.Find("Player");
            if (player != null)
            {
                player.GetComponent<CharacterDefinition>().DisableControl();
            }

            GameObject.Find("Jukebox").GetComponent<AudioSource>().Stop();

            GetComponent<AudioSource>().PlayOneShot(LevelClearedSongClip);
            if (Text != null)
            {
                var typewriter = new TypeWriter("Level cleared!", 60f);
                while (!typewriter.Done)
                {
                    if (typewriter.Update())
                    {
                        Text.text = typewriter.CurrentText;
                    }
                    yield return new WaitForEndOfFrame();
                }
            }

            GetComponent<AudioSource>().PlayOneShot(LevelClearedClip);

            yield return new WaitForSeconds(2);
            Application.LoadLevel(TargetLevel);
        }
Пример #2
0
        private IEnumerator DelayRestart()
        {
            var player = GameObject.Find("Player");
            if (player != null)
            {
                player.GetComponent<CharacterDefinition>().DisableControl();
            }

            if (Text != null)
            {
                GetComponent<AudioSource>().PlayOneShot(YouDiedClip);
                var typewriter = new TypeWriter("You died!", 50f);
                while (!typewriter.Done)
                {
                    if (_skipRequested)
                    {
                        typewriter.SkipToEnd();
                        Text.text = typewriter.CurrentText;
                        break;
                    }

                    if (typewriter.Update())
                    {
                        Text.text = typewriter.CurrentText;
                    }
                    yield return new WaitForEndOfFrame();
                }
            }

            yield return new WaitForSeconds(2);

            Application.LoadLevel(Application.loadedLevelName);
        }
Пример #3
0
        private IEnumerator Intro()
        {
            var ceoSequence = new[]
            {
                AudioC,
                AudioE,
                AudioO,
            };

            var chiefExecutionOfficerSequence = new[]
            {
                AudioChief,
                AudioExecution,
                AudioOfficer,
            };

            var headerTypeWriter = new TypeWriter(Header.text, 500);
            Header.text = headerTypeWriter.CurrentText;

            var subHeaderTypeWriter = new TypeWriter(SubHeader.text, 1000, true);
            SubHeader.text = subHeaderTypeWriter.CurrentText;

            yield return new WaitForSeconds(1f);

            int soundIndex = 0;
            while (!headerTypeWriter.Done)
            {
                if (headerTypeWriter.Update())
                {
                    PlaySound(ceoSequence[soundIndex++]);
                    Header.text = headerTypeWriter.CurrentText;
                }

                yield return new WaitForEndOfFrame();
            }

            soundIndex = 0;
            while (!subHeaderTypeWriter.Done)
            {
                if (subHeaderTypeWriter.Update())
                {
                    PlaySound(chiefExecutionOfficerSequence[soundIndex++]);
                    SubHeader.text = subHeaderTypeWriter.CurrentText;
                }
                yield return new WaitForEndOfFrame();
            }

            yield return new WaitForSeconds(1f);

            if (!string.IsNullOrEmpty(GoToLevel))
            {
                Application.LoadLevel(GoToLevel);
            }
        }
Пример #4
0
        private IEnumerator Outro()
        {
            Text.text = "";
            yield return new WaitForSeconds(0.5f);

            foreach (var textSequence in Texts)
            {
                var typeWriter = new TypeWriter(textSequence.Text, 80f);

                if (!_skipRequested)
                {
                }
                _skipRequested = false;

                while (!typeWriter.Done)
                {
                    if (_skipRequested)
                    {
                        typeWriter.SkipToEnd();
                        break;
                    }

                    if (typeWriter.Update())
                    {
                        Text.text = typeWriter.CurrentText;
                    }
                    yield return new WaitForEndOfFrame();
                }

                yield return new WaitForSeconds(0.5f);
            }

            yield return new WaitForSeconds(2f);

            // TODO: goto next scene
            if (!string.IsNullOrEmpty(GoToLevel))
            {
                Application.LoadLevel(GoToLevel);
            }
        }