public static void DistributeEnergy(this Grid grid, EnergySpreadType energySpreadType) { switch (energySpreadType) { case EnergySpreadType.Homogeniczna: { for (int i = 0; i < grid.Width; i++) { for (int j = 0; j < grid.Height; j++) { grid.Energy[i, j] = 5; } } break; } case EnergySpreadType.Heterogoniczna: { var borderCellsHelper = new BorderCellsHelpers(); var borderCells = borderCellsHelper.GetBorderCells(grid); Parallel.ForEach(borderCells, (cell) => { grid.Energy[cell.X, cell.Y] = 7; }); Parallel.ForEach(grid.CellsWhereBorderId, (cell) => { if (grid.Energy[cell.X, cell.Y] != 7) { grid.Energy[cell.X, cell.Y] = 2; } }); break; } } }
public async Task DistributeEnergy(EnergySpreadType energyDistributionType) { await Task.Run(() => this.grid1.DistributeEnergy(energyDistributionType)); EnergySpread = true; OverwriteGrid(grid1, grid2); }