public LoadGameScreenViewModel(IMessenger messenger) { MessengerInstance = messenger; DeleteSaveInViewMessage.Register(MessengerInstance, this, item => { Saves.Remove(item); }); // disconnect the messenger of this one from the messenger of the game screen BoardViewModel = new BoardViewModel(new Messenger(), MockUtil.AnyGame(7, 0).State) { UnlockedPlayer = null }; BackToMainMenuCommand = new RelayCommand(() => ShowMainMenuMessage.Send(MessengerInstance)); }
void BackToMainMenuCommandExecute() { void BackAction() { PauseGameMessage.Send(MessengerInstance); // stops the ai thread ShowMainMenuMessage.Send(MessengerInstance); } if (PrimaryNeedsSaving) { const string message = "Would you like to save the current game before exiting?"; ShowSavePopupMessage.Send(MessengerInstance, (message, BackAction, true)); } else { BackAction(); } }
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)); });