Пример #1
0
        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);
            }
        }