private static void PopulateEnemyTanksUnderTreesStuckOnTheSamePosition() { if (!State.HasPrevRound) { return; } var trees = State.ThisRound.Trees; var prevEnemyTanks = State.PrevRound.EnemyTanks; foreach (var tree in trees) { var prevEnemyTank = prevEnemyTanks.FirstOrDefault(b => b.Point == tree.Point); if (prevEnemyTank == null) { continue; } var nearPoints = prevEnemyTank.Point.GetNearPoints(1); var movedEnemyTankFound = false; foreach (var nearPoint in nearPoints) { var nearCell = Field.GetCell(nearPoint); if (EnemyTank.IsEnemyTank(nearCell.Item.Element)) { movedEnemyTankFound = true; } } if (movedEnemyTankFound) { continue; } if (prevEnemyTank.HiddenRoundsInRow > 3) { continue; } var thisHiddenEnemyTank = prevEnemyTank.DeepClone(); thisHiddenEnemyTank.Point = tree.Point; thisHiddenEnemyTank.HiddenRoundsInRow++; thisHiddenEnemyTank.IsStuck = true; thisHiddenEnemyTank.IsPhantom = true; var cell = Field.GetCell(tree.Point); cell.Items.Insert(0, thisHiddenEnemyTank); State.ThisRound.EnemyTanks.Add(thisHiddenEnemyTank); } }