예제 #1
0
        protected override void Strike(Vector2 Position)
        {
            Basic2DScene scene = (Basic2DScene)GameManager.GetLevel().getCurrentScene();

            foreach (UnitTurret t in scene.Enumerate(typeof(UnitTurret)))
            {
                t.Destroy();
            }

            /*
             * float BulletExplosionDistance = 200;
             * QuadGrid grid = scene.quadGrids.First.Value;
             *
             * for (int i = 0; i < 2; i++)
             *  foreach (Basic2DObject o in grid.Enumerate(Position, new Vector2(BulletExplosionDistance * 2)))
             *      if (o.GetType().IsSubclassOf(typeof(BasicShipGameObject)))
             *      {
             *          BasicShipGameObject s = (BasicShipGameObject)o;
             *          float dist = Vector2.Distance(s.Position.get(), Position) - o.Size.X() / 2;
             *
             *          if (dist < BulletExplosionDistance && s.GetType().IsSubclassOf(typeof(UnitTurret)))
             *          {
             *              UnitTurret t = (UnitTurret)s;
             *              t.Destroy();
             *          }
             *      }
             */
            base.Strike(Position);
        }
예제 #2
0
        private bool getAreaClear(Vector2 Position)
        {
            foreach (UnitBasic u in Parent2DScene.Enumerate(typeof(UnitBuilding)))
            {
                if (Vector2.Distance(Position, u.Position.get()) < 250 &&
                    u.GetTeam() == WaveManager.ActiveTeam)
                {
                    return(false);
                }
            }

            foreach (PathfindingHotPoint h in HotPoints)
            {
                if (h.Team == WaveManager.ActiveTeam && Vector2.Distance(Position, h.Position) < 350)
                {
                    return(false);
                }
            }

            return(true);
        }