Пример #1
0
        public override void Update()
        {
            PointF diraction = new PointF(target.WorldPosition.X - WorldPosition.X,
                                          target.WorldPosition.Y - WorldPosition.Y);
            float length = diraction.GetLength();

            if (Math.Abs(length) < 0.01)
            {
                this.Alive = false;
            }
            diraction     = PointExtensions.Scale(diraction, 1 / length);
            WorldPosition = PointExtensions.Sum(WorldPosition, PointExtensions.Scale(diraction, speed));
            if (float.IsNaN(WorldPosition.X) || float.IsNaN(WorldPosition.Y))
            {
                WorldPosition = target.WorldPosition;
                this.Alive    = false;
                return;
            }
            if (PointExtensions.Sub(WorldPosition, target.WorldPosition).GetLength() < speed)
            {
                target.CurrentHealth -= damage;
                if (target.CurrentHealth < 0 && target.Alive)
                {
                    target.Alive  = false;
                    parent.Target = null;
                    GameController.Controller.CurrentPlayer.money += target.Reward;
                    GameController.Controller.CurrentPlayer.score += target.Reward;
                }
                this.Alive = false;
            }

            SetLookTo(target.WorldPosition);
        }
Пример #2
0
        public override void Update()
        {
            if (WorldPosition.Equals(GameField.MyGameField.Finish))
            {
                GameController.Controller.CurrentPlayer.Lives -= this.Punishment;
                this.Alive = false;
            }
            if (path.Count == 0)
            {
                WannaMove(GameField.MyGameField);
                return;
            }
            if (Equals(PointExtensions.Sub(WorldPosition, path[0]).GetLength(), speed) || PointExtensions.Sub(WorldPosition, path[0]).GetLength() < speed)
            {
                WorldPosition = path[0];
                path.RemoveAt(0);
                return;
            }

            PointF target    = path[0];
            PointF diraction = new PointF(target.X - WorldPosition.X,
                                          target.Y - WorldPosition.Y);
            float length = diraction.GetLength();

            diraction     = PointExtensions.Scale(diraction, 1 / length);
            WorldPosition = PointExtensions.Sum(WorldPosition, PointExtensions.Scale(diraction, speed));

            Angle = PointExtensions.GetAngle(new PointF(1, 0), diraction);
        }
Пример #3
0
        public override void Shoot()
        {
            if (!GameController.Controller.UnPaused)
            {
                return;
            }
            if (Target == null || !Target.Alive)
            {
                Target = FindTarget();
                return;
            }

            double distance = PointExtensions.Sub(WorldPosition, Target.WorldPosition).GetLength();

            if (distance > range)
            {
                Target = FindTarget();
                return;
            }
            Form1.gameObjects.Add(new Bullet(Target, damage, "bitBullet.png", WorldPosition, this, 0.3f));
        }
Пример #4
0
        public override void Update()
        {
            if (WorldPosition.Equals(GameField.MyGameField.Finish))
            {
                GameController.Controller.CurrentPlayer.Lives -= this.Punishment;
                this.Alive = false;
            }

            PointF target    = GameField.MyGameField.Finish;
            PointF diraction = new PointF(target.X - WorldPosition.X,
                                          target.Y - WorldPosition.Y);
            float length = diraction.GetLength();

            diraction     = PointExtensions.Scale(diraction, 1 / length);
            WorldPosition = PointExtensions.Sum(WorldPosition, PointExtensions.Scale(diraction, speed));
            Angle         = PointExtensions.GetAngle(new PointF(1, 0), diraction);
            if (PointExtensions.Sub(WorldPosition, target).GetLength() < speed)
            {
                WorldPosition = target;
                return;
            }
        }
Пример #5
0
        public void SetLookTo(PointF target)
        {
            PointF diraction = PointExtensions.Sub(WorldPosition, target);

            Angle = PointExtensions.GetAngle(new PointF(-1, 0), diraction);
        }