public BekeritViewModel(BekeritModel model)
        {
            _model              = model;
            _model.GameOver    += new EventHandler <BekeritEventArgs>(Model_GameOver);
            _model.GameCreated += new EventHandler <BekeritEventArgs>(Model_GameCreated);

            NewGameSmallCommand  = new DelegateCommand(param => OnNewGameSmall());
            NewGameMediumCommand = new DelegateCommand(param => OnNewGameMedium());
            NewGameBigCommand    = new DelegateCommand(param => OnNewGameBig());

            SaveGameOpenCommand = new DelegateCommand(param => EnableSave, async param =>
            {
                Games = new ObservableCollection <SaveEntry>(await _model.ListGamesAsync());
                OnSaveGameOpen();
            });
            SaveGameCloseCommand = new DelegateCommand(
                param => NewName.Length > 0, // parancs végrehajthatóságának feltétele
                param => { OnSaveGameClose(NewName); });


            LoadGameOpenCommand = new DelegateCommand(async param =>
            {
                Games = new ObservableCollection <SaveEntry>(await _model.ListGamesAsync());
                OnLoadGameOpen();
            });
            LoadGameCloseCommand = new DelegateCommand(
                param => SelectedGame != null, // parancs végrehajthatóságának feltétele
                param => { OnLoadGameClose(SelectedGame.Name); });

            ExitCommand = new DelegateCommand(param => OnExitGame());

            // játéktábla létrehozása
            Fields = new ObservableCollection <BekeritField>();

            for (Int32 i = 0; i < _model._size; i++) // inicializáljuk a mezőket
            {
                for (Int32 j = 0; j < _model._size; j++)
                {
                    Fields.Add(new BekeritField
                    {
                        IsLocked    = false,
                        Player      = Model.Players.NoPlayer,
                        PlayerColor = Model.Players.NoPlayer,
                        Size        = 6,
                        X           = i,
                        Y           = j,
                        Number      = i * _model.Table.Size + j, // a gomb sorszáma, amelyet felhasználunk az azonosításhoz
                        StepCommand = new DelegateCommand(param => StepGame(Convert.ToInt32(param)))
                                                                 // ha egy mezőre léptek, akkor jelezzük a léptetést, változtatjuk a lépésszámot
                    });
                }
            }

            //FinishTable();
            EnableSave = true;
        }
示例#2
0
        /// <summary>
        /// Játék mentésének eseménykezelője.
        /// </summary>
        private async void ViewModel_SaveGameClose(object sender, String name)
        {
            if (name != null)
            {
                try
                {
                    // felülírás ellenőrzése
                    var games = await _model.ListGamesAsync();

                    if (games.All(g => g.Name != name) ||
                        MessageBox.Show("Biztos, hogy felülírja a meglévő mentést?", "Bekerites",
                                        MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
                    {
                        await _model.SaveGameAsync(name);
                    }
                }
                catch
                {
                    MessageBox.Show("Játék mentése sikertelen!", "Hiba!", MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }

            _saveWindow.Close(); // játékállapot mentő ablak bezárása
        }