private void clearGroups() { List<Group> groups = new List<Group>(); for (int i = 0; i < NUM_ROWS; ++i) { for (int j = 0; j < NUM_COLUMNS; ++j) { if (tiles[i][j] == null) continue; if (passed[i, j]) continue; Group g = new Group(this, i, j); g.Report(passed); groups.Add(g); } } foreach (Group g in groups) { if (g.Size >= Facet.GroupSize) { Score.ClearedGroup(g.Size, g.Blocks[1].Number); Rectangle area = g.Blocks[1].Area; area.Inflate(Block.Width * 2, Block.Height * 2); g.Blocks[1].BarfScore(Score.LastBonus); Facet.SendMessage("GroupCleared", (int)Player, g.Size); Clear(g.Blocks); } } //reset marks for (int i = 0; i < NUM_ROWS; ++i) for (int j = 0; j < NUM_COLUMNS; ++j) passed[i, j] = false; }