Пример #1
0
    /* Scripted Intro */

    void Intro()
    {
        //Late-bindings
        ButtonListener lCancelListener = null;          //later-defined

        CoroutineExtensions.Action lExplore     = null; //later-defined
        CoroutineExtensions.Action lFinishIntro = null; //later-defined
        Coroutine lIntro = null;                        //later-defined, changes multiple times

        Camera  camera          = Camera.main;
        Vector3 initialPosition = camera.transform.position;
        Vector2 exitLocation    = exit.transform.position;

        lExplore = () => {
            Managers.Fog.Explore(initialPosition);
            Managers.Fog.Explore(exitLocation, (durationOfCameraMotionToExit + durationOfStareAtExit / 2));
        };

        lFinishIntro = () => {
            camera.transform.position    = initialPosition;
            Managers.Turn.TurnInProgress = false;
            lCancelListener.Remove();
        };


        lIntro = Managers.UI.ShowPreScreen()
                 .Then(delegate()
        {
            lExplore();

            lIntro = camera.MotionTo(exitLocation, durationOfCameraMotionToExit)
                     .Then(new WaitForSeconds(durationOfStareAtExit))
                     .Then(() =>
            {         //.MotionTo must not be eval'd immediately
                return(lIntro = camera.MotionTo(initialPosition,
                                                durationOfCameraMotionToSpawn)
                                .Start(this));
            })
                     .Then(lFinishIntro)
                     .Start(this);
        }).Start(this);

        lCancelListener = this.OnButtonDown("Cancel", () => {
            StopCoroutine(lIntro);
            lExplore();

            if (lFinishIntro != null)
            {
                lFinishIntro();
            }
            else
            {
                Managers.UI.SkipScreen();
            }
        });
    }
Пример #2
0
 public static void RemoveButtonListener(this MonoBehaviour script, ButtonListener listener)
 {
     listener.Remove();
 }