コード例 #1
0
    private void HandleElleniaHurtCutScene()
    {
        // Ensure Psychic Duck is the active sticker and we haven't already played this cut scene.
        bool isPsychicDuckActive = Script_ActiveStickerManager.Control.IsActiveSticker(Const_Items.PsychicDuckId);

        if (!isPsychicDuckActive)
        {
            return;
        }
        if (isElleniaHurtCutSceneActivated)
        {
            return;
        }

        isElleniaHurtCutSceneActivated           = true;
        isCheckingPsychicDuckElleniaHurtCutScene = false;

        game.ChangeStateCutScene();

        Script_BackgroundMusicManager bgm = Script_BackgroundMusicManager.Control;

        bgm.FadeOutFast(() => {
            bgm.Stop();
            bgm.SetVolume(1f, BGMParam);
        }, BGMParam);

        StartCoroutine(WaitForElleniaHurtCutScene());

        IEnumerator WaitForElleniaHurtCutScene()
        {
            yield return(new WaitForSeconds(onStartElleniaHurtCutSceneWaitTime));

            StartCoroutine(game.TransitionFadeIn(cutSceneFadeInTime, () => {
                // Teleport player.
                game.GetPlayer().Teleport(playerTeleportPos.transform.position);
                game.GetPlayer().FaceDirection(Directions.Left);

                // Face camera to Ellenia (Hurt).
                SwitchVCamElleniaHurt();

                StartCoroutine(WaitForElleniaDialogue());
            }));
        }

        IEnumerator WaitForElleniaDialogue()
        {
            yield return(new WaitForSeconds(elleniaHurtCutSceneWaitToFadeInTime));

            StartCoroutine(game.TransitionFadeOut(cutSceneFadeInTime, () => {
                PlayElleniasHandPRCS();
            }));
        }

        void PlayElleniasHandPRCS()
        {
            game.ChangeStateCutScene();

            Script_UIAspectRatioEnforcerFrame.Control.EndingsLetterBox(
                isOpen: true,
                framing: Script_UIAspectRatioEnforcerFrame.Framing.ElleniasHand,
                cb: OnFramingAnimationDone
                );

            void OnFramingAnimationDone()
            {
                ElleniasHandPRCSPlayer.PlayCustom(Script_PRCSManager.CustomTypes.ElleniasHand);
            }
        }
    }