ゲーム用フレームワーク、その1

フレームワーク
ゲームには「ロゴ表示」「タイトル」「ゲーム」など、いろんなシーンを切り替えていく必要があります。簡単んに考えてしまうと下のようなプログラムになってしまいます。
このプログラムはシーン1とシーン2を交互に表示するプログラムです。
■ソース

namespace WindowsGame30A
{
    public enum GAME_MODE
    {
        screen01,
        screen02
    }
    public class Game1 : Microsoft.Xna.Framework.Game
    {
        GraphicsDeviceManager graphics;
        ContentManager content;
        private int gameMode = (int)GAME_MODE.screen01;
        int count;

        public Game1()
        {
            graphics = new GraphicsDeviceManager(this);
            content = new ContentManager(Services);
        }

        protected override void Initialize()
        {
            base.Initialize();
            count = 0;
        }

        protected override void Update(GameTime gameTime)
        {
            switch( gameMode )
            {
                case (int)GAME_MODE.screen01:
                    gameMode = screen01Update(gameTime);
                    break;
                case (int)GAME_MODE.screen02:
                    gameMode = screen02Update(gameTime);
                    break;
            }
            base.Update(gameTime);
        }

        protected override void Draw(GameTime gameTime)
        {
            switch( gameMode )
            {
                case (int)GAME_MODE.screen01:
                    screen01Draw();
                    break;
                case (int)GAME_MODE.screen02:
                    screen02Draw();
                    break;
            }
            base.Draw(gameTime);
        }

        //----------------------------------------------------
        // シーン1
        private int screen01Update(GameTime gameTime)
        {
            if (++count == 120)
            {
                count = 0;
                return (int)GAME_MODE.screen02;
            }
            return (int)GAME_MODE.screen01;
        }

        private void screen01Draw()
        {
            graphics.GraphicsDevice.Clear(Color.Black);
        }
        //----------------------------------------------------
        // シーン2
        private int screen02Update(GameTime gameTime)
        {
            if (++count == 120)
            {
                count = 0;
                return (int)GAME_MODE.screen01;
            }
            return (int)GAME_MODE.screen02;
        }
        private void screen02Draw()
        {
            graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
        }
    }
}