/// <summary> /// /// </summary> /// <param name="tile">Obiekt, ktory zostal uszkodzony.</param> /// <param name="ammunition">Bomba(Rakieta), ktora trafila w teren.</param> public void OnFortressHit(FortressBunkerTile tile, Ammunition ammunition) { AddJob(MethodBase.GetCurrentMethod().Name, new object[] { tile, ammunition }); }
protected override void CheckCollisionWithGround() { int index = Mathematics.PositionToIndex(Position.X); LevelTile tile; if (index > -1 && index < refToLevel.LevelTiles.Count) { tile = refToLevel.LevelTiles[index]; if (tile is ShipTile) { //boundRectangle.Intersects( } //CollisionType c = CollisionType.None; CollisionType c = tile.InCollision(this.boundRectangle); if (c == CollisionType.None) { return; } //jesli nie da sie zniszczyc dany obiekt rakieta. if (c == CollisionType.Hitbound || c == CollisionType.CollisionRectagle) { if (tile is BarrelTile) { BarrelTile destroyTile = tile as BarrelTile; if (!destroyTile.IsDestroyed) { destroyTile.Destroy(); refToLevel.Controller.OnTileDestroyed(destroyTile, this); refToLevel.Statistics.HitByRocket += refToLevel.KillVulnerableSoldiers(index, 2, true); } else { refToLevel.Controller.OnTileBombed(tile, this); } } else if (tile is EnemyInstallationTile) { FortressBunkerTile fortressTile = null; EnemyInstallationTile enemyTile = null; LevelTile destroyTile = tile; //Obsluga fortress bunker if ((fortressTile = destroyTile as FortressBunkerTile) != null && !fortressTile.IsDestroyed) { //Trafienie zniszczonego fortress bunker if (fortressTile.IsDestroyed) { refToLevel.Controller.OnTileBombed(destroyTile, this); } else { fortressTile.Hit(); //Ostatnie trafienie! if (fortressTile.ShouldBeDestroyed) { refToLevel.Controller.OnTileDestroyed(destroyTile, this); refToLevel.Statistics.HitByRocket++; fortressTile.Destroy(); } //Trafienie rakiety uszkadzaj¹ce fortress bunker else { refToLevel.Controller.OnFortressHit(fortressTile, this); refToLevel.Statistics.HitByRocket++; } } } else if ((enemyTile = destroyTile as EnemyInstallationTile) != null && !enemyTile.IsDestroyed) { refToLevel.Controller.OnTileDestroyed(destroyTile, this); refToLevel.Statistics.HitByRocket++; enemyTile.Destroy(); } else { refToLevel.Controller.OnTileBombed(tile, this); } } else { refToLevel.Controller.OnTileBombed(tile, this); } } else if (c == CollisionType.Altitude) { refToLevel.Controller.OnTileBombed(tile, this); } //zabija zolnierzy, ktorzy sa w zasiegu. refToLevel.Statistics.HitByRocket += refToLevel.KillVulnerableSoldiers(index, 1, true); //niszcze rakiete Destroy(); } }
public void OnFortressHit(FortressBunkerTile tile, Ammunition ammunition) { }