/* public CollisionType InCollision(Quadrangle quad)
         * {
         *   if (quad == null) return false;
         *   List<Quadrangle> list = BoundingQuadrangles;
         *   for (int i = 0; i < list.Count; i++)
         *       if (list[i].Intersects(quad))
         *           return CollisionType.;
         *   return false;
         * }*/

        /// <summary>
        /// Funkcja niszczy instalacje obronna.
        /// </summary>
        public virtual void Destroy()
        {
            enemyState = EnemyInstallationState.Destroyed;

            Soldier   newSoldier   = null;
            Direction curentDirect = Direction.Left;

            for (int i = 0; i < generalsCount; i++)
            {
                newSoldier = new General(tilesIndex, curentDirect, refToLevel, UnitConverter.RandomGen.Next(1, 9));

                // generals run faster
                newSoldier.Speed = UnitConverter.RandomGen.Next((int)(GameConsts.Soldier.MinSpeed * 1.1f), (int)(GameConsts.Soldier.MaxSpeed * 1.1f));
                if (curentDirect == Direction.Left)
                {
                    curentDirect = Direction.Right;
                }
                else
                {
                    curentDirect = Direction.Left;
                }
                //Wysylam event aby dodac nowego zolnierza do listy.
                RegistrySoldierEvent(this, newSoldier);
                //rejestruje zolnierza w controlerze.
                refToLevel.Controller.OnRegisterSoldier(newSoldier, this.refToLevel.MissionType);
            }

            newSoldier = null;
            bool holdsBazooka;

            for (int i = 0; i < soldiersCount; i++)
            {
                holdsBazooka = UnitConverter.RandomGen.Next(0, 10) > 5;

                //Soldier.SoldierType stype = Soldier.SoldierType.SOLDIER;
                if (this is ShipBunkerTile)
                {
                    newSoldier = new Seaman(tilesIndex, curentDirect, refToLevel, UnitConverter.RandomGen.Next(1, 9), holdsBazooka);
                    // stype = Soldier.SoldierType.SEAMAN;
                }
                else
                {
                    /*
                     * if (rand.NextDouble() > 0.67f)
                     * {
                     *  stype = Soldier.SoldierType.GENERAL;
                     * }*/
                    newSoldier = new Soldier(tilesIndex, curentDirect, refToLevel, UnitConverter.RandomGen.Next(1, 9), holdsBazooka);
                }
                //newSoldier = new Soldier(tilesIndex, curentDirect, refToLevel, rand.Next(1, 9), stype);
                newSoldier.Speed = UnitConverter.RandomGen.Next(GameConsts.Soldier.MinSpeed, GameConsts.Soldier.MaxSpeed);
                if (curentDirect == Direction.Left)
                {
                    curentDirect = Direction.Right;
                }
                else
                {
                    curentDirect = Direction.Left;
                }
                //Wysylam event aby dodac nowego zolnierza do listy.
                RegistrySoldierEvent(this, newSoldier);
                //rejestruje zolnierza w controlerze.
                refToLevel.Controller.OnRegisterSoldier(newSoldier, this.refToLevel.MissionType);
            }

            //zeruje liczbe zolnierzy w bunkrze.
            soldiersCount = 0;

            //zeruje liczbe genera³ów w bunkrze.
            generalsCount = 0;

            DecrementIntactInstallationCount();
        }
 /// <summary>
 /// Funkcja inicjalizuje prywatne zmienne.
 /// </summary>
 public void Initializing()
 {
     enemyState = EnemyInstallationState.None;
 }