private List <Square3x3> GetSquaresToFilth(List <Child> children) { if (children.Count == 0) { return(null); } List <Square3x3> temp = new List <Square3x3>(); List <Square3x3> result = new List <Square3x3>(); List <Child> already = new List <Child>(); foreach (Child kid in children) { Child max = kid; foreach (Child mate in kid.radius.childrenInside) { if (mate.radius.childrenCount > max.radius.childrenCount) { max = mate; } } temp.Add(max.radius); } foreach (Square3x3 sq in temp) { Square3x3 tempsq = Square3x3.Copy(sq); tempsq.childrenCount = 0; for (int i = 0; i < sq.childrenInside.Count; i++) { if (!already.Contains(sq.childrenInside[i])) { already.Add(sq.childrenInside[i]); tempsq.AddChildren(sq.childrenInside[i]); } } if (tempsq.childrenCount > 0) { tempsq.SetCellsToFilthCount(); result.Add(tempsq); } } return(result); }
private void GenerateFilth(List <Square3x3> squares) { if (squares == null) { return; } int filthadded = 0; foreach (Square3x3 sq in squares) { List <AmbientCell> tofilth = Square3x3.GetCellsToFilth(sq, this); if (tofilth == null) { continue; } foreach (AmbientCell cell in tofilth) { cell.elementInside = new Filth(cell); filthadded++; } } UpdateFilth(filthadded); }