Exemplo n.º 1
0
        private void MoveVirusToTargetPosition(Virus virus)
        {
            int Schrittweite = virus.VirusSpeed;

            if (virus.AIType.Equals("passive"))
            {
                var orignalLocation = new Point(virus.Location.X, virus.Location.Y);

                if (virus.TargetPosition.X > virus.Location.X)
                {
                    virus.Location = new Point(virus.Location.X + Schrittweite, virus.Location.Y);
                }
                else if (virus.TargetPosition.X < virus.Location.X)
                {
                    virus.Location = new Point(virus.Location.X - Schrittweite, virus.Location.Y);
                }
                if (virus.TargetPosition.Y > virus.Location.Y)
                {
                    virus.Location = new Point(virus.Location.X, virus.Location.Y + Schrittweite);
                }
                else if (virus.TargetPosition.Y < virus.Location.Y)
                {
                    virus.Location = new Point(virus.Location.X, virus.Location.Y - Schrittweite);
                }


                if (IntersectsWithNonPlayerUiComponent(virus))
                {
                    virus.Location = orignalLocation;
                    virus.RecalculateTargetPosition();
                }
            }
            else if (virus.AIType.Equals("aggressive"))
            {
                virus.TargetPosition = virus.ChasePlayer();


                if (virus.TargetPosition.X - 10 > virus.Location.X && virus.TargetPosition.X + 10 > virus.Location.X)
                {
                    virus.Left += Schrittweite;
                }
                else if (virus.TargetPosition.X - 10 < virus.Location.X && virus.TargetPosition.X + 10 < virus.Location.X)
                {
                    virus.Left -= Schrittweite;
                }
                if (virus.TargetPosition.Y - 10 > virus.Location.Y && virus.TargetPosition.Y + 10 > virus.Location.Y)
                {
                    virus.Top += Schrittweite;
                }
                else if (virus.TargetPosition.Y - 10 < virus.Location.Y && virus.TargetPosition.Y + 10 < virus.Location.Y)
                {
                    virus.Top -= Schrittweite;
                }
            }
            else
            {
                BossVirus.MoveBoss(virus);
            }
        }