Exemple #1
0
 public void AddShipBunkerTile(ShipBunkerTile tile)
 {
     _shipBunkerTiles.Add(tile);
     if (tile is ISinkComponent)
     {
         _sinkComponents.Add(tile as ISinkComponent);
     }
 }
Exemple #2
0
        /// <summary>
        /// Sprawdza kolizje z terenem, bunkrami , barakami, etc.
        /// </summary>
        /// <author>Michal Ziober</author>
        private void CheckCollisionWithGround()
        {
            int       index = Mathematics.PositionToIndex(Center.X);
            LevelTile tile;

            if (index > -1 && index < refToLevel.LevelTiles.Count)
            {
                tile = refToLevel.LevelTiles[index];
                //jeœli nie ma kolizji wyjdz.
                CollisionType c = refToLevel.LevelTiles[index].InCollision(this.boundRectangle);
                if (c == CollisionType.None)
                {
                    return;
                }

                if (tile is BarrelTile)
                {
                    BarrelTile destroyTile = tile as BarrelTile;
                    if (!destroyTile.IsDestroyed)
                    {
                        destroyTile.Destroy();
                        refToLevel.Controller.OnTileDestroyed(destroyTile, this);
                        refToLevel.Statistics.HitByBomb += refToLevel.KillVulnerableSoldiers(index, 2, true);
                    }
                    else
                    {
                        refToLevel.Controller.OnTileBombed(tile, this);
                    }
                }
                else if (tile is EnemyInstallationTile)
                {
                    WoodBunkerTile woodbunker = null;
                    ShipBunkerTile shipbunker = null;
                    BarrackTile    barrack    = null;
                    if (tile is WoodBunkerTile)
                    {
                        if ((woodbunker = tile as WoodBunkerTile) != null && !woodbunker.IsDestroyed)
                        {
                            refToLevel.Controller.OnTileDestroyed(tile, this);
                            refToLevel.Statistics.HitByBomb++;
                            woodbunker.Destroy();
                        }
                        else
                        {
                            refToLevel.Controller.OnTileBombed(tile, this);
                        }
                    }
                    else if (tile is ShipWoodBunkerTile)
                    {
                        if ((shipbunker = tile as ShipBunkerTile) != null && !shipbunker.IsDestroyed)
                        {
                            refToLevel.Controller.OnTileDestroyed(tile, this);
                            refToLevel.Statistics.HitByBomb++;
                            shipbunker.Destroy();
                        }
                        else
                        {
                            refToLevel.Controller.OnTileBombed(tile, this);
                        }
                    }
                    else if (tile is BarrackTile)
                    {
                        if ((barrack = tile as BarrackTile) != null && !barrack.IsDestroyed)
                        {
                            refToLevel.Controller.OnTileDestroyed(tile, this);
                            refToLevel.Statistics.HitByBomb++;
                            barrack.Destroy();
                        }
                        else
                        {
                            refToLevel.Controller.OnTileBombed(tile, this);
                        }
                    }
                    else
                    {
                        refToLevel.Controller.OnTileBombed(tile, this);
                    }
                }
                else
                {
                    refToLevel.Controller.OnTileBombed(tile, this);
                }

                //zabijam zolnierzy, ktorzy sa w polu razenia.
                refToLevel.Statistics.HitByBomb += refToLevel.KillVulnerableSoldiers(index, 1, true);

                //niszcze bombe.
                Destroy();
            }
        }