Exemplo n.º 1
0
 /// <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 });
 }
Exemplo n.º 2
0
        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();
            }
        }
Exemplo n.º 3
0
 public void OnFortressHit(FortressBunkerTile tile, Ammunition ammunition)
 {
 }