private List<Head> GroupHeadPylons() { List<Head> heads = new List<Head>(); for (int gridRow = 1; gridRow < _GridRows - 1; gridRow++) { for (int gridCol = 1; gridCol < _GridCols - 1; gridCol++) { PylonGroup pylonGroup = new PylonGroup(); GroupHeadPylon(gridRow, gridCol, ref pylonGroup); if (pylonGroup.PylonCount > 0) { Head head = pylonGroup.ToHead(); heads.Add(head); } } } return heads; }
private void GroupHeadPylon(int gridRow, int gridCol, ref PylonGroup pylonGroup) { Pylon pylon = _Grid[gridRow, gridCol]; if (!pylon.IsHead || pylon.IsGrouped) return; pylonGroup.Register(pylon); GroupHeadPylon(gridRow - 1, gridCol, ref pylonGroup); GroupHeadPylon(gridRow + 1, gridCol, ref pylonGroup); GroupHeadPylon(gridRow, gridCol - 1, ref pylonGroup); GroupHeadPylon(gridRow, gridCol + 1, ref pylonGroup); }