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);
            }
        }
Exemplo n.º 2
0
        public static void BossFight()
        {
            BossVirus bV = new BossVirus();

            ((ISupportInitialize)(bV)).BeginInit();
            bV.MouseClick    += new MouseEventHandler(Game.instance.MouseClickShootBullet);
            bV.BackColor      = Color.Transparent;
            bV.Parent         = Game.instance.pbBackGround;
            bV.DoubleBuffered = true;
            bV.Location       = new Point(GameState.GameBoardWidth + 20, 200);
            UiComponents.AddVirus(bV);
            ((ISupportInitialize)(bV)).EndInit();

            Game.instance.pbBossHealthBar.Parent = Game.instance.pbBackGround;
            Game.instance.pbBossHealthBar.Value  = 100;
            Game.instance.pbBossHealthBar.BringToFront();


            GameState.BossFight = true;
        }
Exemplo n.º 3
0
        public void Logic(object sender, EventArgs e)
        {
            if (!Game.instance.lblLevelDisplay.Text.Equals("Level 3"))
            {
                Virus.SpawnVirus();
            }

            if (UiComponents.Viruses.Count == 0 && GameState.BossFight == false)
            {
                Virus.BossFight();
            }


            // regelt Bewegung der Viren
            foreach (var virus in UiComponents.Viruses)
            {
                MoveVirusToTargetPosition(virus);
                if (virus.IsTargetPositionReached())
                {
                    virus.RecalculateTargetPosition();
                }
            }

            // regelt dass Teleporter und Divider zeitbasiertes Event ausführen
            for (int i = UiComponents.Viruses.Count - 1; i >= 0; i--)
            {
                var virus = UiComponents.Viruses[i];

                if (virus is DividerVirus)
                {
                    if (DateTime.Now >= virus.timerEnd && virus.Size.Width > 70)
                    {
                        virus.DivideAction(virus);
                    }
                }
                if (virus is TeleporterVirus)
                {
                    if (DateTime.Now >= virus.timerEnd)
                    {
                        virus.TeleportVirus(virus, CharacterLogic.chaLocX, CharacterLogic.chaLocY);
                    }
                }
                if (virus is BossVirus)
                {
                    if (DateTime.Now >= virus.timerEnd)
                    {
                        BossVirus.BossAttackMove(virus);
                    }
                }
            }


            // regelt Schaden bekommen wenn Spieler von Viren berührt wird
            for (int i = UiComponents.Viruses.Count - 1; i >= 0; i--)
            {
                if (UiComponents.Viruses[i].Bounds.IntersectsWith(Game.instance.pbCharacterBounds.Bounds))
                {
                    if (UiComponents.Viruses[i] is MutatedVirus)
                    {
                        GameState.PlayerHealth -= 3;
                    }
                    else
                    {
                        GameState.PlayerHealth -= 1;
                    }

                    Game.instance.Controls.Remove(UiComponents.Viruses[i]);
                    UiComponents.Viruses[i].Dispose();
                    UiComponents.Viruses.Remove(UiComponents.Viruses[i]);

                    Game.instance.DisplayHealth();
                }
            }
        }