コード例 #1
0
        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));
        }
コード例 #2
0
        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();
            }
        }
コード例 #3
0
        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));
            });