public void PrintField(IBalloon[,] matrix)
{
if (this.cachedField == null)
{
this.InitializeField(matrix);
return;
}
int rows = matrix.GetLength(0);
int columns = matrix.GetLength(1);
int popped = 0;
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < columns; j++)
{
var childToUpdate = this.cachedField[i, j];
childToUpdate.Style.Color = Colors[matrix[i, j].IsPopped ? 0 : matrix[i, j].Number];
if (matrix[i, j].IsPopped)
{
childToUpdate.Content = PoppedBalloonContent;
popped++;
}
}
}
if (popped >= (rows * columns) - 1)
{
foreach (var element in this.cachedField)
{
element.Content = WholeBalloonContent;
}
}
}