Right now, the Viewer launches a single Engine at app start and relies on it for the entire session. When playing "Computer vs. Computer" games, it's really one engine playing both sides.
Instead, the Viewer should:
Not launch any Engine at start
Allow the user to select and configure each engine in the New Game dialog.
Manage both engines separately, keeping them in sync
This will mean:
Disentangling EngineWrapper from MainViewModel by inserting some kind IEngineWrapper interface
Letting EngineWrapper implment IEngineWrapper
Creating a new GameManager that also implements IEngineWrapper, and then forwards the actions to both real EngineWrappers
Lots of re-organization of the UI work (bigger NewGameWindow, which can launch separate EngineOptions dialogs, having menus for both engine's options/dialogs)
Right now, the Viewer launches a single Engine at app start and relies on it for the entire session. When playing "Computer vs. Computer" games, it's really one engine playing both sides.
Instead, the Viewer should:
This will mean: