Repository: FlaxEngine/FlaxEngine
File: Source/Editor/Options/InterfaceOptions.cs (C#)

Code before:
        /// Gets or sets a value indicating whether auto-focus output log window on code compilation error.
        /// </summary>
        [DefaultValue(true)]
        [EditorDisplay("Output Log", "Focus Output Log On Compilation Error"), EditorOrder(450), Tooltip("Determines whether auto-focus output log window on code compilation error.")]
        public bool FocusOutputLogOnCompilationError { get; set; } = true;

        /// <summary>
        /// Gets or sets a value indicating whether auto-focus output log window on game build error.
        /// </summary>
        [DefaultValue(true)]
        [EditorDisplay("Output Log", "Focus Output Log On Game Build Error"), EditorOrder(460), Tooltip("Determines whether auto-focus output log window on game build error.")]
        public bool FocusOutputLogOnGameBuildError { get; set; } = true;

        /// <summary>
        /// Gets or sets the value for automatic scroll to bottom in output log.
        /// </summary>
        [DefaultValue(true)]
        [EditorDisplay("Output Log", "Scroll to bottom"), EditorOrder(470), Tooltip("Scroll the output log view to bottom automatically after new lines are added.")]
        public bool OutputLogScrollToBottom { get; set; } = true;

        /// <summary>
        /// Gets or sets a value indicating what panel should be focused when play mode start.
        /// </summary>
        [DefaultValue(PlayModeFocus.GamePanel)]
        [EditorDisplay("Play In-Editor", "Focus On Play"), EditorOrder(500), Tooltip("Set what panel to focus on play mode start.")]
        public PlayModeFocus FocusOnPlayMode { get; set; } = PlayModeFocus.GamePanel;

        /// <summary>
        /// Gets or sets a value indicating what action should be taken upon pressing the play button.
        /// </summary>
        [DefaultValue(PlayAction.PlayScenes)]
        [EditorDisplay("Play In-Editor", "Play Button Action"), EditorOrder(510)]
        public PlayAction PlayButtonAction { get; set; } = PlayAction.PlayScenes;

        /// <summary>
        /// Gets or sets a value indicating how the game window should be displayed when the game is launched.
        /// </summary>
        [DefaultValue(GameWindowMode.Docked)]
        [EditorDisplay("Play In-Editor", "Game Window Mode"), EditorOrder(520), Tooltip("Determines how the game window is displayed when the game is launched.")]
        public GameWindowMode DefaultGameWindowMode { get; set; } = GameWindowMode.Docked;

        /// <summary>
        /// Gets or sets a value indicating the number of game clients to launch when building and/or running cooked game.
        /// </summary>
        [DefaultValue(1), Range(1, 4)]
        [EditorDisplay("Cook & Run"), EditorOrder(600)]
        public int NumberOfGameClientsToLaunch = 1;

        /// <summary>
        /// Gets or sets the curvature of the line connecting to connected visject nodes.
        /// </summary>

Review comment (suggestion):
I think it would be nice to leave auto-upgrader for old option so people who disabled it will get the same logic. Try adding:
```cs
// [Deprecated in v1.10]
[Serialize, Obsolete, NoUndo]
private bool FocusGameWinOnPlay
{
    get => throw new Exception();
    set
    {
        // Upgrade value
        FocusOnPlayMode = value ? PlayModeFocus.GamePanel : PlayModeFocus.None;
    }
}
```

Code after:
        [Serialize, Obsolete, NoUndo]
        private bool FocusGameWinOnPlay
        {
            get => throw new Exception();
            set
            {
                // Upgrade value
                FocusOnPlayMode = value ? PlayModeFocus.GameWindow : PlayModeFocus.None;
            }
        }

        /// <summary>
        /// Gets or sets a value indicating whether auto-focus output log window on code compilation error.
        /// </summary>
        [DefaultValue(true)]
        [EditorDisplay("Output Log", "Focus Output Log On Compilation Error"), EditorOrder(450), Tooltip("Determines whether auto-focus output log window on code compilation error.")]
        public bool FocusOutputLogOnCompilationError { get; set; } = true;

        /// <summary>
        /// Gets or sets a value indicating whether auto-focus output log window on game build error.
        /// </summary>
        [DefaultValue(true)]
        [EditorDisplay("Output Log", "Focus Output Log On Game Build Error"), EditorOrder(460), Tooltip("Determines whether auto-focus output log window on game build error.")]
        public bool FocusOutputLogOnGameBuildError { get; set; } = true;

        /// <summary>
        /// Gets or sets the value for automatic scroll to bottom in output log.
        /// </summary>
        [DefaultValue(true)]
        [EditorDisplay("Output Log", "Scroll to bottom"), EditorOrder(470), Tooltip("Scroll the output log view to bottom automatically after new lines are added.")]
        public bool OutputLogScrollToBottom { get; set; } = true;

        /// <summary>
        /// Gets or sets a value indicating what panel should be focused when play mode start.
        /// </summary>
        [DefaultValue(PlayModeFocus.GameWindow)]
        [EditorDisplay("Play In-Editor", "Focus On Play"), EditorOrder(500), Tooltip("Set what panel to focus on play mode start.")]
        public PlayModeFocus FocusOnPlayMode { get; set; } = PlayModeFocus.GameWindow;

        /// <summary>
        /// Gets or sets a value indicating what action should be taken upon pressing the play button.
        /// </summary>
        [DefaultValue(PlayAction.PlayScenes)]
        [EditorDisplay("Play In-Editor", "Play Button Action"), EditorOrder(510)]
        public PlayAction PlayButtonAction { get; set; } = PlayAction.PlayScenes;

        /// <summary>
        /// Gets or sets a value indicating how the game window should be displayed when the game is launched.
        /// </summary>
        [DefaultValue(GameWindowMode.Docked)]
        [EditorDisplay("Play In-Editor", "Game Window Mode"), EditorOrder(520), Tooltip("Determines how the game window is displayed when the game is launched.")]