// 
public class VideoOptionScreen : OptionScreen
  Attributes:
    // 
    - spriteBatch : SpriteBatch
    // 
    - menu : VerticalMenu
  Methods:
    // 
    + VideoOptionScreen  (Core.Knot3Game game)
    // 
    + Activate  (GameTime time)
    // 
    + DrawMenu  (GameTime time)
    // 
    + Initialize ()
    // 
    + UpdateMenu  (GameTime time)
    // 
    + Collapse  (MenuItem item)

// 
public class OptionScreen : MenuScreen
  Attributes:
    // 
    - menu : VerticalMenu
    // 
    - spriteBatch : SpriteBatch
  Methods:
    // 
    + OptionScreen  (Core.Knot3Game game)
    // 
    + Initialize  () override
    // 
    + UpdateMenu  (GameTime time) override
    // 
    + DrawMenu  (GameTime time) override
    // 
    + Activate  (GameTime time) override

// 
public abstract class MenuScreen : GameScreen
  Attributes:
    // 
    - spriteBatch : SpriteBatch
    // 
    - backColor : Color
    // 
    - pointer : MousePointer
    // 
    # LinePoints : List<Vector2>
    // 
    # LineWidth : int
  Methods:
    // 
    + MenuScreen  (Core.Knot3Game game)
    // 
    + Initialize  () override
    // 
    + Update  (GameTime time) override
    // 
    + UpdateMenu  (GameTime time) abstract
    // 
    + Draw  (GameTime time) override
    // 
    + DrawMenu  (GameTime time) abstract
    // 
    + Activate  (GameTime time) override
    // 
    + Unload  () override
    // 
    # BackgroundColor (ItemState itemState) : Color
    // 
    # ForegroundColor (ItemState itemState) : Color

// 
public abstract class GameScreen : 
  Attributes:
    // 
    + game : Knot3Game
    // 
    + NextState : GameScreen
    // 
    + input : InputManager
    // 
    + graphics : GraphicsDeviceManager
    // 
    + device : GraphicsDevice
    // 
    + viewport : Viewport
    // 
    + content : ContentManager
    // 
    + RenderEffects : RenderEffectStack
    // 
    + PostProcessing : RenderEffect
  Methods:
    // 
    + GameScreen  (Knot3Game game)
    // 
    + Initialize  () abstract
    // 
    + Update  (GameTime time) abstract
    // 
    + Draw  (GameTime time) abstract
    // 
    + Unload  () abstract
    // 
    + AddGameComponents  (GameTime time, params IGameScreenComponent[] components)
    // 
    + RemoveGameComponents  (GameTime time, params IGameScreenComponent[] components)
    // 
    + Activate  (GameTime time) virtual
    // 
    + Deactivate  (GameTime time) virtual

// 
public abstract class GameScreen : 
  Attributes:
    // 
    + content : ContentManager
    // 
    + NextState : GameScreen
    // 
    + device : GraphicsDevice
    // 
    + RenderEffects : RenderEffectStack
    // 
    + viewport : Viewport
    // 
    + graphics : GraphicsDeviceManager
    // 
    + input : InputManager
    // 
    + game : Knot3Game
    // 
    + PostProcessing : RenderEffect
  Methods:
    // 
    + Draw  (GameTime time) abstract
    // 
    + Initialize () abstract
    // 
    + Unload () abstract
    // 
    + Activate  (GameTime time) virtual
    // 
    + GameScreen  (Knot3Game game)
    // 
    + Update  (GameTime time) abstract
    // 
    + Deactivate  (GameTime time) virtual
    // 
    + AddGameComponents  (GameTime time, params IGameScreenComponent[] components)
    // 
    + RemoveGameComponents  (GameTime time, params IGameScreenComponent[] components)

// 
public abstract class MenuScreen : GameScreen
  Attributes:
    // 
    - backColor : Color
    // 
    - pointer : MousePointer
    // 
    # LinePoints : List<Vector2>
    // 
    # LineWidth : int
    // 
    - spriteBatch : SpriteBatch
  Methods:
    // 
    + MenuScreen  (Core.Knot3Game game)
    // 
    + Activate  (GameTime time)
    // 
    + Draw  (GameTime time)
    // 
    # BackgroundColor (ItemState itemState) : Color
    // 
    # ForegroundColor (ItemState itemState) : Color
    // 
    + DrawMenu  (GameTime time) abstract
    // 
    + UpdateMenu  (GameTime time) abstract
    // 
    + Initialize ()
    // 
    + Unload ()
    // 
    + Update  (GameTime time)

// 
public abstract class GameScreen : 
  Attributes:
    // 
    + game : Knot3Game
    // 
    + NextState : GameScreen
    // 
    + input : InputManager
    // 
    + graphics : GraphicsDeviceManager
    // 
    + device : GraphicsDevice
    // 
    + viewport : Viewport
    // 
    + content : ContentManager
    // 
    + RenderEffects : RenderEffectStack
    // 
    + PostProcessing : RenderEffect
  Methods:
    // 
    + GameScreen  (Knot3Game game)
    // 
    + Initialize  () abstract
    // 
    + Update  (GameTime time) abstract
    // 
    + Draw  (GameTime time) abstract
    // 
    + Unload  () abstract
    // 
    + AddGameComponents  (GameTime time, params IGameScreenComponent[] components)
    // 
    + RemoveGameComponents  (GameTime time, params IGameScreenComponent[] components)
    // 
    + Activate  (GameTime time) virtual
    // 
    + Deactivate  (GameTime time) virtual

// 
public abstract class GameScreen : 
  Attributes:
    // 
    + content : ContentManager
    // 
    + NextState : GameScreen
    // 
    + device : GraphicsDevice
    // 
    + RenderEffects : RenderEffectStack
    // 
    + viewport : Viewport
    // 
    + graphics : GraphicsDeviceManager
    // 
    + input : InputManager
    // 
    + game : Knot3Game
    // 
    + PostProcessing : RenderEffect
  Methods:
    // 
    + Draw  (GameTime time) abstract
    // 
    + Initialize () abstract
    // 
    + Unload () abstract
    // 
    + Activate  (GameTime time) virtual
    // 
    + GameScreen  (Knot3Game game)
    // 
    + Update  (GameTime time) abstract
    // 
    + Deactivate  (GameTime time) virtual
    // 
    + AddGameComponents  (GameTime time, params IGameScreenComponent[] components)
    // 
    + RemoveGameComponents  (GameTime time, params IGameScreenComponent[] components)

// 
public class OptionScreen : MenuScreen
  Attributes:
    // 
    - spriteBatch : SpriteBatch
    // 
    - menu : VerticalMenu
  Methods:
    // 
    + OptionScreen  (Core.Knot3Game game)
    // 
    + Activate  (GameTime time)
    // 
    + DrawMenu  (GameTime time)
    // 
    + UpdateMenu  (GameTime time)
    // 
    + Initialize ()

// 
public abstract class MenuScreen : GameScreen
  Attributes:
    // 
    - spriteBatch : SpriteBatch
    // 
    - backColor : Color
    // 
    - pointer : MousePointer
    // 
    # LinePoints : List<Vector2>
    // 
    # LineWidth : int
  Methods:
    // 
    + MenuScreen  (Core.Knot3Game game)
    // 
    + Initialize  () override
    // 
    + Update  (GameTime time) override
    // 
    + UpdateMenu  (GameTime time) abstract
    // 
    + Draw  (GameTime time) override
    // 
    + DrawMenu  (GameTime time) abstract
    // 
    + Activate  (GameTime time) override
    // 
    + Unload  () override
    // 
    # BackgroundColor (ItemState itemState) : Color
    // 
    # ForegroundColor (ItemState itemState) : Color

// 
public abstract class GameScreen : 
  Attributes:
    // 
    + game : Knot3Game
    // 
    + NextState : GameScreen
    // 
    + input : InputManager
    // 
    + graphics : GraphicsDeviceManager
    // 
    + device : GraphicsDevice
    // 
    + viewport : Viewport
    // 
    + content : ContentManager
    // 
    + RenderEffects : RenderEffectStack
    // 
    + PostProcessing : RenderEffect
  Methods:
    // 
    + GameScreen  (Knot3Game game)
    // 
    + Initialize  () abstract
    // 
    + Update  (GameTime time) abstract
    // 
    + Draw  (GameTime time) abstract
    // 
    + Unload  () abstract
    // 
    + AddGameComponents  (GameTime time, params IGameScreenComponent[] components)
    // 
    + RemoveGameComponents  (GameTime time, params IGameScreenComponent[] components)
    // 
    + Activate  (GameTime time) virtual
    // 
    + Deactivate  (GameTime time) virtual

// 
public abstract class GameScreen : 
  Attributes:
    // 
    + content : ContentManager
    // 
    + NextState : GameScreen
    // 
    + device : GraphicsDevice
    // 
    + RenderEffects : RenderEffectStack
    // 
    + viewport : Viewport
    // 
    + graphics : GraphicsDeviceManager
    // 
    + input : InputManager
    // 
    + game : Knot3Game
    // 
    + PostProcessing : RenderEffect
  Methods:
    // 
    + Draw  (GameTime time) abstract
    // 
    + Initialize () abstract
    // 
    + Unload () abstract
    // 
    + Activate  (GameTime time) virtual
    // 
    + GameScreen  (Knot3Game game)
    // 
    + Update  (GameTime time) abstract
    // 
    + Deactivate  (GameTime time) virtual
    // 
    + AddGameComponents  (GameTime time, params IGameScreenComponent[] components)
    // 
    + RemoveGameComponents  (GameTime time, params IGameScreenComponent[] components)

// 
public abstract class MenuScreen : GameScreen
  Attributes:
    // 
    - backColor : Color
    // 
    - pointer : MousePointer
    // 
    # LinePoints : List<Vector2>
    // 
    # LineWidth : int
    // 
    - spriteBatch : SpriteBatch
  Methods:
    // 
    + MenuScreen  (Core.Knot3Game game)
    // 
    + Activate  (GameTime time)
    // 
    + Draw  (GameTime time)
    // 
    # BackgroundColor (ItemState itemState) : Color
    // 
    # ForegroundColor (ItemState itemState) : Color
    // 
    + DrawMenu  (GameTime time) abstract
    // 
    + UpdateMenu  (GameTime time) abstract
    // 
    + Initialize ()
    // 
    + Unload ()
    // 
    + Update  (GameTime time)

// 
public abstract class GameScreen : 
  Attributes:
    // 
    + game : Knot3Game
    // 
    + NextState : GameScreen
    // 
    + input : InputManager
    // 
    + graphics : GraphicsDeviceManager
    // 
    + device : GraphicsDevice
    // 
    + viewport : Viewport
    // 
    + content : ContentManager
    // 
    + RenderEffects : RenderEffectStack
    // 
    + PostProcessing : RenderEffect
  Methods:
    // 
    + GameScreen  (Knot3Game game)
    // 
    + Initialize  () abstract
    // 
    + Update  (GameTime time) abstract
    // 
    + Draw  (GameTime time) abstract
    // 
    + Unload  () abstract
    // 
    + AddGameComponents  (GameTime time, params IGameScreenComponent[] components)
    // 
    + RemoveGameComponents  (GameTime time, params IGameScreenComponent[] components)
    // 
    + Activate  (GameTime time) virtual
    // 
    + Deactivate  (GameTime time) virtual

// 
public abstract class GameScreen : 
  Attributes:
    // 
    + content : ContentManager
    // 
    + NextState : GameScreen
    // 
    + device : GraphicsDevice
    // 
    + RenderEffects : RenderEffectStack
    // 
    + viewport : Viewport
    // 
    + graphics : GraphicsDeviceManager
    // 
    + input : InputManager
    // 
    + game : Knot3Game
    // 
    + PostProcessing : RenderEffect
  Methods:
    // 
    + Draw  (GameTime time) abstract
    // 
    + Initialize () abstract
    // 
    + Unload () abstract
    // 
    + Activate  (GameTime time) virtual
    // 
    + GameScreen  (Knot3Game game)
    // 
    + Update  (GameTime time) abstract
    // 
    + Deactivate  (GameTime time) virtual
    // 
    + AddGameComponents  (GameTime time, params IGameScreenComponent[] components)
    // 
    + RemoveGameComponents  (GameTime time, params IGameScreenComponent[] components)

