protected AbstractMainWindowViewModel(Window view) { View = view; var dummyGame = Game.Init(7, MockUtil.DummyPlayerSpecPair(7)); GameScreenViewModel = new GameScreenViewModel(MessengerInstance, dummyGame); GameCreationScreenViewModel = new GameCreationScreenViewModel(MessengerInstance); StartupScreenViewModel = new StartupScreenViewModel(MessengerInstance); LoadGameScreenViewModel = new LoadGameScreenViewModel(MessengerInstance); SaveManager = new SaveManager(MessengerInstance); QuitCommand = new RelayCommand(ShutdownApplication); RegisterMessageHandlers(); }
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)); });