public GameObjectVertical FindAimObject()
        {
            if (ShootObject == null)
            {
                var targetsWithinRange = GetTargetsWithinRange(SightRange);

                if (targetsWithinRange.Count > 0)
                {
                    shootObject = targetsWithinRange[0];
                    foreach (GameObjectVertical obj in targetsWithinRange)
                    {
                        if (MathFunctions.ObjectDistance(this, obj) < MathFunctions.ObjectDistance(this, shootObject))
                        {
                            shootObject = obj;
                        }
                    }
                }
            }
            else
            {
                if (!CollisionDetection.IsPointInsideCircle(ShootObject.Position, Position, SightRange))
                {
                    ShootObject = null;
                }
            }
            return(ShootObject);
        }
        public float FindClosestAimDistance()
        {
            GameObjectVertical aimObject = FindAimObject();

            float distance;

            if (aimObject != null)
            {
                distance = MathFunctions.ObjectDistance(this, aimObject);
            }
            else
            {
                distance = 4000;
            }

            return(distance);
        }
        public static GameObjectVertical ReturnClosestObject(GameObjectVertical object1, float range, List <GameObjectVertical> objects)
        {
            GameObjectVertical tempTarget = null;
            float tempDistance            = range;

            foreach (GameObjectVertical obj in objects)
            {
                if (MathFunctions.ObjectDistance(object1, obj) < tempDistance &&
                    MathFunctions.ObjectDistance(object1, obj) < range)
                {
                    tempTarget   = obj;
                    tempDistance = MathFunctions.ObjectDistance(object1, tempTarget);
                }
            }

            return(tempTarget);
        }
Esempio n. 4
0
        protected override void SecondaryShootingPattern(GameTime gameTime)
        {
            int       activationTimeMilliseconds = 500;
            EnemyMine mine = new EnemyMine(Game, spriteSheet, player);

            mine.Initialize();
            mine.SetActivationTime(activationTimeMilliseconds);
            mine.Position = Position;

            mine.Direction = MathFunctions.ScaleDirection(ShootObject.Position - Position);
            mine.Speed     = 0.15f;

            float distance = MathFunctions.ObjectDistance(this, ShootObject);

            // Shoots at a location close to the players current
            mine.Duration = distance / mine.Speed * 0.9f;

            Game.stateManager.shooterState.gameObjects.Add(mine);
        }
        public static GameObjectVertical ReturnClosestObject(GameObjectVertical object1, float range, List <GameObjectVertical> objects, List <string> kinds)
        {
            GameObjectVertical tempTarget = null;
            float tempDistance            = range;

            foreach (GameObjectVertical obj in objects)
            {
                for (int i = 0; i < kinds.Count; i++)
                {
                    if (obj.ObjectClass.ToLower() == kinds[i].ToLower() && MathFunctions.ObjectDistance(object1, obj) < tempDistance &&
                        MathFunctions.ObjectDistance(object1, obj) < range)
                    {
                        tempTarget   = obj;
                        tempDistance = MathFunctions.ObjectDistance(object1, tempTarget);
                    }
                }
            }

            return(tempTarget);
        }
Esempio n. 6
0
        private void LocateHomingTarget()
        {
            GameObjectVertical tempTarget = null;
            float tempDistance            = SightRange;

            if (Game.stateManager.shooterState.gameObjects != null)
            {
                foreach (GameObjectVertical obj in Game.stateManager.shooterState.gameObjects)
                {
                    if (obj.ObjectClass == "enemy" && !(obj is Meteorite) && MathFunctions.ObjectDistance(this, obj) < tempDistance &&
                        MathFunctions.ObjectDistance(this, obj) < SightRange)
                    {
                        tempTarget   = obj;
                        tempDistance = MathFunctions.ObjectDistance(this, tempTarget);
                    }
                }
            }

            if (tempTarget != null)
            {
                FollowObject = tempTarget;
            }
        }