public void AddShipBunkerTile(ShipBunkerTile tile) { _shipBunkerTiles.Add(tile); if (tile is ISinkComponent) { _sinkComponents.Add(tile as ISinkComponent); } }
/// <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(); } }