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; }
/// <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 }