Beispiel #1
0
        // Update
        public void Update( float frameTime )
        {
            if ( CurrentScreen == null )
            return;

            switch ( State )
            {
            // Init
            case E_ScreenState.Init:
            {
                CurrentScreen.Init();
                CurrentScreen.TimelineActive( "start", true, false );

                State = E_ScreenState.Start;
                Time = 0.0f;

                goto case E_ScreenState.Start; //break;
            }

            // Start
            case E_ScreenState.Start:
            {
                CurrentScreen.StartLoop( frameTime );

                if ( Time >= StartTimer )
                {
                    State = E_ScreenState.Update;
                    Time = 0.0f;
                }
                else
                    Time = MathHelper.Min( Time + frameTime, StartTimer );

                break;
            }

            // Update
            case E_ScreenState.Update:
            {
                CurrentScreen.Update( frameTime );
                Time += frameTime;

                break;
            }

            // End
            case E_ScreenState.End:
            {
                CurrentScreen.EndLoop( frameTime );

                if ( Time >= EndTimer )
                {
                    CurrentScreen.End();

                    // switch to the next screen
                    CurrentScreen = NextScreen;
                    NextScreen = null;

                    if ( CurrentScreen != null )
                    {
                        State = E_ScreenState.Init;
                        Update( frameTime );
                    }
                    else
                        State = E_ScreenState.None;
                }
                else
                    Time = MathHelper.Min( Time + frameTime, EndTimer );

                break;
            }
            }
        }
Beispiel #2
0
        // SetNextScreen
        public void SetNextScreen( Screen nextScreen )
        {
            if ( CurrentScreen == null )
            {
            // initial screen
            CurrentScreen = nextScreen;
            State = E_ScreenState.Init;
            }
            else
            {
            // next screen
            NextScreen = nextScreen;
            State = E_ScreenState.End;
            Time = 0.0f;

            CurrentScreen.TimelineActive( "start", false, false );
            CurrentScreen.TimelineActive( "end", true, false );
            }
        }