private MinefieldCellCollection CreateMinefieldCellCollection() { var minefieldCells = _fieldFactory.CreateNewMinefield(MinefieldSize, MinefieldSize); var minefieldCellVms = ToViewModels(minefieldCells, MinefieldSize); var cellCollection = new MinefieldCellCollection(minefieldCellVms, MinefieldSize); return(cellCollection); }
private void UpdateMinefield(MinefieldCellCollection newMinefield) { for (var row = 0; row < MinefieldSize; row++) { for (var col = 0; col < MinefieldSize; col++) { Minefields[row, col].Row = newMinefield[row, col].Row; Minefields[row, col].Column = newMinefield[row, col].Column; Minefields[row, col].HasMine = newMinefield[row, col].HasMine; Minefields[row, col].State = newMinefield[row, col].State; Minefields[row, col].NeibourMinesCount = newMinefield[row, col].NeibourMinesCount; } } Status = GameStatus.Begin; }
private static bool IsVictoryReached(MinefieldCellCollection @this) => @this .All(cell => cell.State != MinefieldCellState.Closed) && @this.Where(cell => cell.HasMine) .All(cell => cell.State == MinefieldCellState.Marked);
private void OnMinefieldCellsChanged(MinefieldCellCollection oldCells, MinefieldCellCollection newCells) => RaiseEvent( new RoutedPropertyChangedEventArgs <MinefieldCellCollection>(oldCells, newCells) { RoutedEvent = NewGameEvent });