private void RegisterMessageHandlers() { ShowNewGameMessage.Register(MessengerInstance, this, SwitchToGameCreationScreen); ShowMainMenuMessage.Register(MessengerInstance, this, SwitchToStartupScreen); ShowLoadMenuMessage.Register(MessengerInstance, this, () => { SwitchToGameLoadScreen(); LoadGameScreenViewModel.Refresh(SaveManager.AllSaves()); }); void OpenGameAction(((string, GameMemento), ViewMode) payload) { var((id, memento), mode) = payload; GameScreenViewModel.Load(id, Game.FromMemento(memento)); GameScreenViewModel.ActiveMode = mode; SwitchToGameScreen(); } // switch to game screen with a newly created game, assigning it an id OpenNewGame.Register(MessengerInstance, this, payload => { var(game, mode) = payload; OpenGameAction(((SaveManager.NextId(), game.Memento), mode)); });