public override void Update( GameTime gameTime )
        {
            base.Update( gameTime );
            resetTime -= (float)gameTime.ElapsedGameTime.TotalSeconds;

            // Fade effect for highlighed menu button
            if (isFading)
            {
                cSelected.A -= 3;
                if (cSelected.A == 0) isFading = false;
            }
            else
            {
                cSelected.A += 3;
                if (cSelected.A == 255) isFading = true;
            }

            GamePadState NewPadState = GamePad.GetState(PlayerIndex.One);
            KeyboardState NewKeyState = Keyboard.GetState();
            if (resetTime < 0)
            {
                // Change highlighted button on "up"
                if ((NewKeyState.IsKeyDown(Keys.Up) && OldKeyState.IsKeyUp(Keys.Up))
                    || (NewPadState.IsButtonDown(Buttons.DPadUp) && OldPadState.IsButtonUp(Buttons.DPadUp)))
                {
                    sfxButtonPressed.Play();
                    switch (currentHighlight)
                    {
                        case Highlight.NewGame:
                            break;
                        case Highlight.LoadGame:
                            currentHighlight = Highlight.NewGame;
                            break;
                        //case Highlight.LevelEditor:
                        //    currentHighlight = Highlight.LoadGame;
                        //    break;
                        case Highlight.Controls:
                            //currentHighlight = Highlight.LevelEditor;
                            currentHighlight = Highlight.NewGame;
                            break;
                        case Highlight.Exit:
                            //currentHighlight = Highlight.Controls;
                            currentHighlight = Highlight.Controls;
                            break;
                        default:
                            break;
                    }
                }

                // Level editor is not accessible by normal means:
                // L + E on keyboard, or left and right bumper on the gamepad
                if ((NewKeyState.IsKeyDown(Keys.L) && NewKeyState.IsKeyDown(Keys.E)) || (NewPadState.IsButtonDown(Buttons.LeftShoulder) && NewPadState.IsButtonDown(Buttons.RightShoulder)))
                {
                    ScreenManager.PushScreen(new EditScreen(Game));
                }

                // Change highlighted button on "down"
                if ((NewKeyState.IsKeyDown(Keys.Down) && OldKeyState.IsKeyUp(Keys.Down))
                    || (NewPadState.IsButtonDown(Buttons.DPadDown) && OldPadState.IsButtonUp(Buttons.DPadDown)))
                {
                    sfxButtonPressed.Play();
                    switch (currentHighlight)
                    {
                        case Highlight.NewGame:
                            //currentHighlight = Highlight.LoadGame;
                            currentHighlight = Highlight.Controls;
                            break;
                        case Highlight.LoadGame:
                            //currentHighlight = Highlight.LevelEditor;
                            currentHighlight = Highlight.Controls;
                            break;
                        //case Highlight.LevelEditor:
                        //    currentHighlight = Highlight.Controls;
                        //    break;
                        case Highlight.Controls:
                            currentHighlight = Highlight.Exit;
                            break;
                        case Highlight.Exit:
                            break;
                        default:
                            break;
                    }
                }

                if ((NewKeyState.IsKeyDown(Keys.Enter) && OldKeyState.IsKeyUp(Keys.Enter))
                    || (NewPadState.IsButtonDown(Buttons.A) && OldPadState.IsButtonUp(Buttons.A)))
                {
                    sfxButtonPressed2.Play();
                    switch (currentHighlight)
                    {
                        case Highlight.NewGame:
                            PlayableCube playCube = new PlayableCube(Game);
                            playCube.Load("_level0");
                            //playCube.Load( "enemy" );
                            PlayScreen playScreen = new PlayScreen(Game, playCube);
                            ScreenManager.PushScreen(playScreen);
                            break;
                        case Highlight.LoadGame:
                            Stream saveStream = StorageManager.Instance.OpenWriteFile("CyberCube.sav");
                            // Saving functionality here.

                            Stream loadStream = StorageManager.Instance.OpenReadFile("CyberCube.sav");
                            // Loading functionality here.

                            StorageManager.Instance.Finish();

                            break;
                        //case Highlight.LevelEditor:
                        //    ScreenManager.PushScreen(new EditScreen(Game));
                        //    break;
                        case Highlight.Controls:
                            ScreenManager.PushScreen( new ControlsScreen( Game ) );
                            break;
                        case Highlight.Exit:
                            Game.Exit();
                            break;
                        default:
                            break;
                    }
                }
            }

            OldPadState = NewPadState;
            OldKeyState = NewKeyState;
        }
 private void LoadNextLevelAsync()
 {
     #if XBOX
     //mLoadThread.SetProcessorAffinity( 3 );
     #endif
     if ( Cube.NextLevel == null )
         return;
     PlayableCube playCube = new PlayableCube( Game );
     playCube.Load( Cube.NextLevel );
     mNextPlayScreen = new PlayScreen( Game, playCube );
     /* your code goes here */
 }