Пример #1
0
        public void transitScene(TScene scene)
        {
            if (transitionDelegate != null)
            {
                transitionDelegate(transitionStartTime + 100000);
            }

            nextScene           = (TScene)scene.clone();
            transitionStartTime = sw.ElapsedMilliseconds;
            transitionDelegate  = delegate(long time)
            {
                const int duration = 400; //ms
                int       elapsed  = (int)(time - transitionStartTime);
                if (elapsed >= duration / 2 && nextScene != null)
                {
                    changeScene(nextScene);
                    nextScene = null;
                }

                if (elapsed >= duration)
                {
                    elapsed            = duration;
                    transitionDelegate = null;
                }

                if (elapsed < duration / 2)
                {
                    currentScene.alpha = 1 - elapsed / (duration / 2f);
                }
                else
                {
                    currentScene.alpha = elapsed / (duration / 2f) - 1;
                }
            };
        }
Пример #2
0
        public void changeScene(TScene scene)
        {
            // stop/free all sounds and effects of current scene
            finishCurrentScene();

            // assign new scene to current scene
            currentScene = (TScene)scene.clone();
            currentScene.run_emulator    = this;
            currentScene.run_matrix      = matrixOfEmulator();
            currentScene.run_extraActors = extraActorsOfEmulator(currentScene);

            // scene have owner bgm
            if (currentScene.backgroundMusic != "")
            {
                playBGM(currentScene.backgroundMusic, currentScene.backgroundMusicVolume);
            }

            // fire enter event
            currentScene.fireEvent(Program.DEFAULT_EVENT_ENTER, true);
        }